{"openapi":"3.1.0","info":{"title":"Digital Ocean Account Activity (BYOK) API","version":"0.1.0","description":"Digital Ocean Account Activity (BYOK) lets an AI assistant read your own Digital Ocean Account Activity data through the Digital Ocean Account Activity API with a key you supply (personal access token with read scope). Read-only: 9 tools (list_actions, get_action, list_tags, get_tag, list_ssh_keys, get_ssh_key, list_byoip_prefixes, list_byoip_prefix_resources, list_one_click_apps). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-digitalocean-account-tags.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-digitalocean-account-tags/docs"},"termsOfService":"https://connectorbay.com/byok-digitalocean-account-tags/terms"},"servers":[{"url":"https://byok-digitalocean-account-tags.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-digitalocean-account-tags/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_actions":{"post":{"operationId":"list_actions","summary":"List recent account actions (droplet creates, resizes, snapshots, power events) with type, status, resource and timing, ","description":"List recent account actions (droplet creates, resizes, snapshots, power events) with type, status, resource and timing, newest first. Use for \"What actions ran on my DigitalOcean account recently and did they finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return per page.","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_actionsArguments","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":"Get one action by numeric id with type, status, resource, region and timing. Use for \"Did DigitalOcean action 36804636 c","description":"Get one action by numeric id with type, status, resource, region and timing. Use for \"Did DigitalOcean action 36804636 complete\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"action_id":{"description":"Numeric id of the action, as shown by list_actions.","minimum":1,"title":"Action Id","type":"integer"}},"required":["action_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}},"/v1/tools/list_tags":{"post":{"operationId":"list_tags","summary":"List tags with the number of tagged resources and a link to the last tagged one. Use for \"Which tags do I use on Digital","description":"List tags with the number of tagged resources and a link to the last tagged one. Use for \"Which tags do I use on DigitalOcean and how many resources carry each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return per page.","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_tagsArguments","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_tag":{"post":{"operationId":"get_tag","summary":"Get one tag by name with its resource count. Use for \"How many resources are tagged 'web' on DigitalOcean\".","description":"Get one tag by name with its resource count. Use for \"How many resources are tagged 'web' on DigitalOcean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_name":{"description":"Name of the tag, for example 'web'.","maxLength":255,"title":"Tag Name","type":"string"}},"required":["tag_name"],"title":"get_tagArguments","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 SSH public keys saved in the account with name, id and fingerprint (public keys only, never private keys). Use ","description":"List the SSH public keys saved in the account with name, id and fingerprint (public keys only, never private keys). Use for \"Which SSH keys are registered on my DigitalOcean account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return per page.","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_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_ssh_key":{"post":{"operationId":"get_ssh_key","summary":"Get one saved SSH public key by numeric id or fingerprint. Use for \"What is the fingerprint of SSH key 512189\".","description":"Get one saved SSH public key by numeric id or fingerprint. Use for \"What is the fingerprint of SSH key 512189\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ssh_key_identifier":{"description":"Numeric id or colon-separated fingerprint of the key, as shown by list_ssh_keys.","maxLength":100,"title":"Ssh Key Identifier","type":"string"}},"required":["ssh_key_identifier"],"title":"get_ssh_keyArguments","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_byoip_prefixes":{"post":{"operationId":"list_byoip_prefixes","summary":"List bring-your-own-IP prefixes with status, region, advertised and locked flags and validation failure reasons. Use for","description":"List bring-your-own-IP prefixes with status, region, advertised and locked flags and validation failure reasons. Use for \"Are my BYOIP prefixes on DigitalOcean advertised\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return per page.","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_byoip_prefixesArguments","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_byoip_prefix_resources":{"post":{"operationId":"list_byoip_prefix_resources","summary":"List the resources (such as Droplets) that use addresses from one BYOIP prefix. Use for \"Which resources use addresses f","description":"List the resources (such as Droplets) that use addresses from one BYOIP prefix. Use for \"Which resources use addresses from my BYOIP prefix\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"byoip_prefix_uuid":{"description":"UUID of the BYOIP prefix, as shown by list_byoip_prefixes.","maxLength":64,"title":"Byoip Prefix Uuid","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return per page.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["byoip_prefix_uuid"],"title":"list_byoip_prefix_resourcesArguments","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_one_click_apps":{"post":{"operationId":"list_one_click_apps","summary":"List the 1-Click application slugs that can be deployed, optionally only Droplet or Kubernetes ones. Use for \"Which 1-Cl","description":"List the 1-Click application slugs that can be deployed, optionally only Droplet or Kubernetes ones. Use for \"Which 1-Click apps does DigitalOcean offer for Kubernetes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["droplet","kubernetes"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one deployment type.","title":"Type"}},"title":"list_one_click_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}}}}