{"openapi":"3.1.0","info":{"title":"ServerPilot (BYOK) API","version":"0.1.0","description":"ServerPilot (BYOK) lets an AI assistant read your own ServerPilot data through the ServerPilot API with a key you supply (ServerPilot client ID). Read-only: 9 tools (list_servers, get_server, list_apps, get_app, list_system_users, get_system_user, list_databases, list_ssh_keys, get_action). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-serverpilot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-serverpilot/docs"},"termsOfService":"https://connectorbay.com/byok-serverpilot/terms"},"servers":[{"url":"https://byok-serverpilot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-serverpilot/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_servers":{"post":{"operationId":"list_servers","summary":"List the servers connected to ServerPilot with plan, auto-update and firewall flags, available PHP runtimes, last known ","description":"List the servers connected to ServerPilot with plan, auto-update and firewall flags, available PHP runtimes, last known IP address and last connection time (epoch seconds). Use for \"Which servers does ServerPilot manage and when did each last connect\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_serversArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_server":{"post":{"operationId":"get_server","summary":"Get one ServerPilot server by id with plan, flags, available runtimes, last address and connection time. Use for \"Show S","description":"Get one ServerPilot server by id with plan, flags, available runtimes, last address and connection time. Use for \"Show ServerPilot server FqHWrrcUfRI18F0l\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Server id, as returned by list_servers.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_serverArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_apps":{"post":{"operationId":"list_apps","summary":"List apps (websites) with server, system user, PHP runtime, domains, AutoSSL and ForceSSL flags and creation time. Certi","description":"List apps (websites) with server, system user, PHP runtime, domains, AutoSSL and ForceSSL flags and creation time. Certificate keys are not returned. Use for \"Which apps and domains run on my ServerPilot servers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_appsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_app":{"post":{"operationId":"get_app","summary":"Get one app by id with domains, runtime, SSL flags and whether AutoSSL is available. Certificate keys are not returned. ","description":"Get one app by id with domains, runtime, SSL flags and whether AutoSSL is available. Certificate keys are not returned. Use for \"Is AutoSSL available for ServerPilot app c77JD4gZooGjrF8K\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"App id, as returned by list_apps.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_appArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_system_users":{"post":{"operationId":"list_system_users","summary":"List system users with the server each belongs to. Passwords are not returned. Use for \"Which system users exist on my S","description":"List system users with the server each belongs to. Passwords are not returned. Use for \"Which system users exist on my ServerPilot servers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_system_usersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_system_user":{"post":{"operationId":"get_system_user","summary":"Get one system user by id with its server. Use for \"Show ServerPilot system user PdmHhsb3fnaZ2r5f\".","description":"Get one system user by id with its server. Use for \"Show ServerPilot system user PdmHhsb3fnaZ2r5f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"System user id, as returned by list_system_users.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_system_userArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_databases":{"post":{"operationId":"list_databases","summary":"List MySQL databases with the app and server they belong to and the database user name. Passwords are not returned. Use ","description":"List MySQL databases with the app and server they belong to and the database user name. Passwords are not returned. Use for \"Which databases belong to my ServerPilot apps\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_databasesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_ssh_keys":{"post":{"operationId":"list_ssh_keys","summary":"List the account's SSH key names, SHA-256 fingerprints and creation times. The public key text is not returned. Use for ","description":"List the account's SSH key names, SHA-256 fingerprints and creation times. The public key text is not returned. Use for \"Which SSH keys are registered in ServerPilot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_ssh_keysArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_action":{"post":{"operationId":"get_action","summary":"Check the status (open, success or error) of an action ServerPilot ran, for example an app creation. Use for \"Did Server","description":"Check the status (open, success or error) of an action ServerPilot ran, for example an app creation. Use for \"Did ServerPilot action g3kiiYzxPgAjbwcY finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Action id, as returned by an earlier change request.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_actionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}