DigitalOcean Droplets & Apps
Lets an agent check a DigitalOcean account and balance, list and inspect Droplets and their action history, and monitor App Platform apps: list apps, follow deployments, read deployment logs and trigger a redeploy. Useful for ops assistants that answer what is running, why a deploy failed and how much is owed. Curated from DigitalOcean's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with DigitalOcean Droplets & Apps via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v2/account |
getAccount | Get the account's email, status and Droplet limit |
| GET | /v2/customers/my/balance |
getBalance | Get the current balance and month-to-date usage |
| GET | /v2/droplets |
listDroplets | List Droplets (filter by tag or name) |
| GET | /v2/droplets/{droplet_id} |
getDroplet | Get one Droplet's status, size, region and IPs |
| GET | /v2/droplets/{droplet_id}/actions |
listDropletActions | List actions run on a Droplet (reboots, resizes, ...) |
| GET | /v2/droplets/{droplet_id}/actions/{action_id} |
getDropletAction | Get the status of one Droplet action |
| GET | /v2/apps |
listApps | List App Platform apps |
| GET | /v2/apps/{id} |
getApp | Get one app, its spec and live URL |
| GET | /v2/apps/{app_id}/deployments |
listAppDeployments | List an app's deployments, newest first |
| POST | /v2/apps/{app_id}/deployments |
createAppDeployment | Start a new deployment (redeploy) of an app |
| GET | /v2/apps/{app_id}/deployments/{deployment_id} |
getAppDeployment | Get one deployment's phase and progress |
| GET | /v2/apps/{app_id}/deployments/{deployment_id}/logs |
getAppDeploymentLogs | Get a link to a deployment's build or run logs |
Authentication
bearerAuth
Bearer token — sent as Authorization: Bearer <token>
How to get a credential
- Sign in to the DigitalOcean control panel and open API > Tokens (https://cloud.digitalocean.com/account/api/tokens).
- Click Generate New Token, give it a name (e.g. "VX Agents") and an expiry.
- Choose Custom Scopes and tick the scopes in the table below (read-only scopes are enough unless you want the agent to redeploy apps).
- Copy the token (
dop_v1_...); it is shown only once.
Permissions used
| Scope | Operations |
|---|---|
| account:read | getAccount |
| billing:read | getBalance |
| droplet:read | listDroplets, getDroplet |
| actions:read | listDropletActions, getDropletAction |
| app:read | listApps, getApp, listAppDeployments, getAppDeployment, getAppDeploymentLogs |
| app:create / app:update | createAppDeployment |
Common errors
- 401 Unauthorized: the token is wrong, expired or revoked. Generate a new one and update the credential.
- 403 Forbidden: the token lacks a scope for this call. Create a token with the scope from the table.
- 400 / 422: an invalid id or parameter (e.g.
per_pageabove 200). Check the ids returned by the list calls. - 429 Too Many Requests: rate limit (5,000 requests/hour, 250/minute). Wait for
ratelimit-resetand retry.
Store the token as a VX Agents credential (Bearer token) so it is sent as Authorization: Bearer <token>.
Usage guide
Setup
- Create a DigitalOcean personal access token (API > Tokens) with custom scopes
account:read,billing:read,droplet:read,actions:read,app:read(addapp:updateonly if the agent may redeploy apps). Save it as a Bearer credential. - Optional presets: pin
per_page(e.g. 50) on list calls; pinapp_idif the agent should only watch one app.
Check infrastructure
getAccountto confirm the token works (status should beactive).listDroplets(filter withtag_nameorname) andgetDropletfor status, size, region and public IPv4 (networks.v4withtype: public).listDropletActions/getDropletActionto see recent reboots, resizes or snapshots and whether theycompletedorerrored.getBalanceformonth_to_date_usageandaccount_balance(USD strings).
Investigate or redeploy an app
listAppsand pick the app'sid;getAppforlive_url,active_deploymentand the app spec.listAppDeployments(newest first) andgetAppDeploymentforphase(PENDING_BUILD,BUILDING,DEPLOYING,ACTIVE,ERROR, ...) andprogresssteps.getAppDeploymentLogswithtype=BUILD(build failed) orDEPLOY/RUN(crash after start). It returnshistoric_urls/live_url: links to download the log text, not the logs themselves.- To redeploy, tell the user which app will rebuild and wait for confirmation, then call
createAppDeploymentwith{"force_build": true}to rebuild from source. PollgetAppDeploymentuntilACTIVEorERROR.
Good to know
- Ids: Droplet and action ids are integers; app and deployment ids are UUIDs.
- Pagination:
page(from 1) andper_page(max 200); followlinks.pages.nextuntil it is absent. - Timestamps are ISO 8601 UTC. Money values are strings in USD.
- This spec cannot create, power off or delete Droplets: use the control panel for that.
- Rate limits: 5,000 requests/hour and 250/minute; on 429 wait before retrying.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “DigitalOcean Droplets & Apps” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.