{"openapi":"3.1.0","info":{"title":"Ploi (BYOK) API","version":"0.1.0","description":"Ploi (BYOK) lets an AI assistant read your own Ploi data through the Ploi API with a key you supply (API token (create it with read scopes only)). Read-only: 10 tools (get_user, list_servers, get_server, get_server_monitoring, list_sites, get_site, list_databases, list_crontabs, list_daemons, list_network_rules). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ploi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ploi/docs"},"termsOfService":"https://connectorbay.com/byok-ploi/terms"},"servers":[{"url":"https://byok-ploi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ploi/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/get_user":{"post":{"operationId":"get_user","summary":"Show the Ploi account the token belongs to: name, plan, plan expiry, time zone and creation date. Email and billing deta","description":"Show the Ploi account the token belongs to: name, plan, plan expiry, time zone and creation date. Email and billing details are not returned. Use for \"Which Ploi account and plan is my token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_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_servers":{"post":{"operationId":"list_servers","summary":"List the servers in the Ploi account with name, IP address, PHP and MySQL versions, number of sites and status. Use for ","description":"List the servers in the Ploi account with name, IP address, PHP and MySQL versions, number of sites and status. Use for \"Which servers do I have in Ploi and are they active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"Results per page (1 to 50, default 15).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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 Ploi server by id: name, IP address, PHP and MySQL versions, number of sites, status and whether monitoring is o","description":"Get one Ploi server by id: name, IP address, PHP and MySQL versions, number of sites, status and whether monitoring is on. Use for \"Show details of my Ploi server\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"}},"required":["server"],"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/get_server_monitoring":{"post":{"operationId":"get_server_monitoring","summary":"Get recent monitoring samples of a Ploi server: CPU percent, RAM percent, disk percent and load average over time. Needs","description":"Get recent monitoring samples of a Ploi server: CPU percent, RAM percent, disk percent and load average over time. Needs monitoring installed and a plan that includes it. Use for \"How busy has my Ploi server been lately (CPU, RAM, disk)\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"}},"required":["server"],"title":"get_server_monitoringArguments","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_sites":{"post":{"operationId":"list_sites","summary":"List the sites on a Ploi server with domain, status, project type, PHP version, last deploy time, disk usage and reposit","description":"List the sites on a Ploi server with domain, status, project type, PHP version, last deploy time, disk usage and repository flag. Use for \"Which sites run on my Ploi server and when were they last deployed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"Results per page (1 to 50, default 15).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["server"],"title":"list_sitesArguments","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_site":{"post":{"operationId":"get_site","summary":"Get one Ploi site: domain, status, project type, PHP version, last deploy time, disk usage and whether it has a reposito","description":"Get one Ploi site: domain, status, project type, PHP version, last deploy time, disk usage and whether it has a repository and quick deploy. Use for \"Show details of a Ploi site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"},"site":{"description":"Ploi site id, as returned by list_sites.","minimum":1,"title":"Site","type":"integer"}},"required":["server","site"],"title":"get_siteArguments","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 the databases on a Ploi server with type, name, status and the site each belongs to. Passwords are not returned. Us","description":"List the databases on a Ploi server with type, name, status and the site each belongs to. Passwords are not returned. Use for \"Which databases exist on my Ploi server\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"Results per page (1 to 50, default 15).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["server"],"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_crontabs":{"post":{"operationId":"list_crontabs","summary":"List the cron jobs on a Ploi server with command, user, frequency, status and site. Use for \"What cron jobs run on my Pl","description":"List the cron jobs on a Ploi server with command, user, frequency, status and site. Use for \"What cron jobs run on my Ploi server\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"}},"required":["server"],"title":"list_crontabsArguments","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_daemons":{"post":{"operationId":"list_daemons","summary":"List the daemons (background processes) on a Ploi server with command, process count, user, directory and status. Use fo","description":"List the daemons (background processes) on a Ploi server with command, process count, user, directory and status. Use for \"Which daemons run on my Ploi server\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"Results per page (1 to 50, default 15).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["server"],"title":"list_daemonsArguments","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_network_rules":{"post":{"operationId":"list_network_rules","summary":"List the firewall (network) rules of a Ploi server with name, port, source IP, allow or deny type and status. Use for \"W","description":"List the firewall (network) rules of a Ploi server with name, port, source IP, allow or deny type and status. Use for \"What firewall rules does my Ploi server have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server":{"description":"Ploi server id, as returned by list_servers.","minimum":1,"title":"Server","type":"integer"}},"required":["server"],"title":"list_network_rulesArguments","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}}}}