MCP-first · 79 tools · OAuth sign-in

Connect your AI agent to DeployCloud

Claude, ChatGPT, Cursor, VS Code — any client that speaks the Model Context Protocol — can deploy, inspect and run your apps for you. Paste one URL, sign in, approve: there is no token to copy, and the agent acts as you, with your role on each app.

MCP server URL

https://deploycloud.app/mcp

Streamable HTTP with OAuth 2.1 (PKCE, dynamic client registration). You sign in with your DeployCloud account and approve the connection on a DeployCloud page.

Set up

Connect in a minute

Pick your client. Each one opens a DeployCloud page where you sign in and choose Allow — and you can disconnect it later from your Tokens page.

Claude

claude.ai, Claude Desktop and the mobile apps

  1. 1
    Open Settings → Connectors on claude.ai or in Claude Desktop.
  2. 2
    Choose Add custom connector, name it DeployCloud and paste the URL above.
  3. 3
    Click Add, then Connect.
  4. 4
    Sign in to DeployCloud in the window that opens and choose Allow.
  5. 5
    In a chat, turn DeployCloud on from the tools menu and ask away. Connectors you add are available in the Claude mobile apps too.

On Team and Enterprise plans an owner may need to add the connector for the organization first.

Claude Code

the terminal agent

  1. 1
    Add the server:
    terminal
    claude mcp add --transport http deploycloud https://deploycloud.app/mcp
  2. 2
    Start Claude Code and run /mcp; pick deploycloud and choose to authenticate.
  3. 3
    Sign in in the browser tab it opens and choose Allow. Back in the terminal, it is connected.

ChatGPT

developer mode connectors

  1. 1
    Open Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
  2. 2
    Back in Apps & Connectors, choose Create.
  3. 3
    Name it DeployCloud, paste the URL above as the MCP server URL and pick OAuth as the authentication.
  4. 4
    Create it, then sign in to DeployCloud and choose Allow.
  5. 5
    In a chat, add DeployCloud from the + menu (developer mode) and ask.

Developer mode is available on the ChatGPT plans that support custom connectors.

Cursor

the AI code editor

  1. 1
    Add DeployCloud to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
    ~/.cursor/mcp.json
    {
      "mcpServers": {
        "deploycloud": {
          "url": "https://deploycloud.app/mcp"
        }
      }
    }
  2. 2
    Open Cursor Settings → Tools & MCP; next to deploycloud choose Connect (it says it needs a login).
  3. 3
    Sign in in the browser and choose Allow; Cursor comes back by itself.

VS Code

GitHub Copilot agent mode

  1. 1
    Add the server to .vscode/mcp.json in your project, or to your user configuration with MCP: Open User Configuration:
    .vscode/mcp.json
    {
      "servers": {
        "deploycloud": {
          "type": "http",
          "url": "https://deploycloud.app/mcp"
        }
      }
    }
  2. 2
    Choose Start above the server entry; VS Code asks to sign in — allow it.
  3. 3
    Sign in to DeployCloud in the browser and choose Allow. The tools appear in Copilot Chat’s agent mode.

Any MCP client with OAuth

Codex, Windsurf, Zed, your own agent…

Give it the URL above as a remote (Streamable HTTP) server. It finds out how to sign in by itself: the first call answers 401 with a pointer to /.well-known/oauth-protected-resource, the client registers (RFC 7591), sends you to DeployCloud to sign in and allow it, and trades the code with PKCE for a token that lasts an hour and renews itself.

Clients that can only run a local command can use the local server below, or npx mcp-remote https://deploycloud.app/mcp as a bridge.

Prefer a token? Run the server on your computer

stdio, one zero-dependency Node 20+ script

  1. 1
    Create an API token in the dashboard (it is shown once).
  2. 2
    Download the server (one file):
    terminal
    curl -fsSL https://deploycloud.app/mcp.mjs -o deploycloud-mcp.mjs
  3. 3
    Add it to your client with the platform URL and the token, as on the right, and restart the client.

The local server has every tool the connector has, plus the three that read your own disk: upload_bundle (deploy a folder that is not in git), push_volume and import_database. Signed in with the CLI (deploycloud login)? Leave the env block out and it uses that login.

claude_desktop_config.json, ~/.cursor/mcp.json…
{
  "mcpServers": {
    "deploycloud": {
      "command": "node",
      "args": [
        "/absolute/path/to/deploycloud-mcp.mjs"
      ],
      "env": {
        "DEPLOYCLOUD_URL": "https://deploycloud.app",
        "DEPLOYCLOUD_TOKEN": "dc_your_token_here"
      }
    }
  }
}

Use it

Things to ask

Talk to it like a colleague who has the dashboard open. A few that work well:

  • “Deploy my app shop, wait until it is live, then check its logs, error rate and HTTPS certificate.”

    deploy_app, then get_deployment until it is running, get_metrics, get_logs, list_domains.

  • “The api app has been returning 500s since 14:00. Find out why and propose a fix — don’t change anything yet.”

    diagnose, list_deployments, get_logs, get_metrics and get_activity, read-only, then a ranked list of fixes.

  • “Add a Postgres database to blog, set LOG_LEVEL=debug and restart it.”

    add_addon, set_env and restart_app — DATABASE_URL is injected without the password ever reaching the chat.

  • “Roll api back to the release before this one.”

    rollback_app answers with a preview of what would be replaced; it rolls back only after you say yes.

  • “Which of my apps need attention this week? Give me a prioritized to-do list.”

    diagnose and list_backups across every app you can reach: failing deploys, alerts, certificates, disks, backups.

The server also ships 3 ready-made prompts your client may list: Deploy an app and verify it, Investigate a failing app and Weekly platform health.

Capabilities

What an agent can do: 79 tools

One tool for each thing you can do in the dashboard, run as you. This list is read from the server itself, so it is always the current one. Open a tool for its full description.

Readsnever changes anythingChangesyour client asks you before running itAsks firstanswers with a preview; acts only once you agree

Start here

5 tools

What needs attention across your apps, the apps you can reach, your plan and the activity log.

  • What needs attentiondiagnoseReads

    One report of everything that needs attention across the apps this account can reach, or in one app: apps down or crashing, failed or stuck deploys, 5xx spikes, alerts firing, domains not verified, HTTPS certificates broken or expiring, volumes and databases near full, backups missing or failing, crons failing, configuration changed but not yet deployed. Most urgent first; each finding lists the calls that look into it or fix it, limited to what the caller's role allows. For a health check, or when something seems wrong.

  • List appslist_appsReads

    Every app you can reach — your own and the ones shared with you — with the status of its latest production deployment, replica count, live URL, repo, branch, group, tags and YOUR role on it (owner, admin, member, developer, viewer).

  • Get an appget_appReads

    One app in detail: repo, branch, scale, URL, verified domains, its live release (commit, processes), build & run settings (port, health path, root dir, memory/CPU caps), plan limits, previews, maintenance, site-password state, alert thresholds, autoscaling, notification webhook (set/unset), backup schedule, your role and the exact permissions it gives you, and env var KEYS when you may read them (values never leave the platform).

  • Account, plan and usageget_accountReads

    The account you are signed in as: email, plan and what it allows (apps, replicas, memory/CPU, add-ons, volumes, domains, collaborators, backups, alerts, autoscaling, log drains), how much is in use, subscription state, security (2FA, passkeys) and the plan catalogue with prices.

  • Activity logget_activityReads

    The audit trail: who did what to which app, newest first — deploys, settings, env changes (keys only), domains, backups, collaborators. For questions like "what changed before this broke?". Covers the apps the account can see and what it did itself.

Inspect

16 tools

Deployments, logs, metrics, alerts, env keys, domains, add-ons, volumes, backups, crons, previews and who has access.

  • List deploymentslist_deploymentsReads

    The 20 most recent deployments of an app (id, status, trigger, commit sha, timestamps, health status). Rows with previewBranch are branch previews, not production.

  • Get a deploymentget_deploymentReads

    One deployment: its status (queued, building, deploying, then "running" on success or "failed"), trigger, commit and timestamps, the end of its build + release log with credentials masked and, for a failed one, a plain-words diagnosis. For following a deploy until it settles, or finding out why one failed.

  • Runtime logsget_logsReads

    The runtime (container) logs of the app's live production release, credentials masked. Limit to the last N lines with `tail` (default 200, max 2000).

  • Metricsget_metricsReads

    CPU / memory / replica samples, uptime, and HTTP traffic (requests, 2xx–5xx counts, 5xx rate, p50/p95 latency) for an app over a window (default 1 h, max 48 h).

  • Alert historylist_alertsReads

    Recent alert history for an app (down / high CPU / high memory / error rate; firing and recovered).

  • Environment variable keyslist_envReads

    Environment variable KEYS of an app with their scope (all / production / preview) and whether they reach the build. Values are write-only and never returned.

  • List domainslist_domainsReads

    An app's custom domains: verification state, the DNS TXT record that proves ownership, and how its HTTPS certificate is obtained.

  • List add-onslist_addonsReads

    The add-ons (databases, caches, object storage…) provisioned for an app. Their credentials live in the app env and are never returned.

  • List volumeslist_volumesReads

    An app's persistent volumes (name, mount path, size). These are the only paths whose contents survive a deploy.

  • List backupslist_backupsReads

    An app's backups: every add-on dump and volume archive (file, kind — 'vol:<name>' for a volume —, size, when) plus the schedule, retention and what the schedule skips. For checking that a recent backup exists before a risky change, and for the exact file names that restoring or deleting one takes.

  • List cron jobslist_cronsReads

    An app's scheduled jobs: id, schedule (UTC), command, whether paused, last run, exit code and the tail of its last output (credentials masked).

  • List branch previewslist_previewsReads

    Branch previews of an app: whether auto-deploys are on, whether preview URLs are password-protected, and every running preview (branch, status, URL).

  • List log drainslist_log_drainsReads

    Where an app's runtime logs are forwarded (kind and host — never the full endpoint, which carries an ingest token).

  • Site password stateget_site_passwordReads

    Whether an app's production site is behind a password page, plus its message and public paths. The password itself is never returned — only whether one is set.

  • GitHub webhookget_github_webhookReads

    The push-to-deploy webhook for an app's GitHub repo: payload URL, content type, events and branch. The HMAC secret is never returned, only whether one is set.

  • List collaboratorslist_collaboratorsReads

    Who can reach an app (with slug): owner, collaborators with their role, and pending invitations if you manage collaborators. Without slug: your account team — people with a role on EVERY app of your account — and the accounts you belong to.

Deploy & release

8 tools

Deploy, roll back, restart, scale and autoscale, run one-off commands, and branch previews.

  • Deploydeploy_appChanges

    Queues a build and release of the app's tracked git branch and returns the new deployment id; the deploy runs asynchronously. While one is already queued, the same one is returned. Apps created from uploaded code deploy only from an uploaded archive.

  • Roll backrollback_appAsks first

    Re-deploy a previous release by reusing its image (no rebuild), replacing what is live now. Omit deploymentId for the release just before the current one. Without confirm it previews what would be replaced.

  • Restartrestart_appChanges

    Zero-downtime restart: fresh containers from the current release image, health-checked, then the old ones reaped. No rebuild — but runtime env, domains and volumes are re-read, so it applies those changes. Fails if there is no live release.

  • Scalescale_appChanges

    Set the web replica count (1 or more; the plan caps it, as the app's limits show). Reuses the current image and rolls out with health checks. Replicas are included in the plan price: scaling never changes the bill.

  • Autoscalingset_autoscaleChanges

    Let the platform adjust replicas to keep mean CPU per replica near a target (between min and max), or turn it off with off: true. Enabling needs a plan with autoscaling.

  • Run a commandrun_commandAsks first

    Run a one-off command SYNCHRONOUSLY in the app's live release environment (current image, decrypted env vars, the app's volumes and network) — migrations, maintenance scripts, inspection. It can change production data, so without confirm it only previews. Blocks up to 10 minutes; returns the exit code and the last 30,000 characters of output with the app's credentials masked. No TTY/stdin.

  • Deploy a branch previewdeploy_previewChanges

    Deploy one git branch as a preview at its own URL (1 replica, empty volumes). Branch previews must be enabled on the app. A preview inherits env vars scoped "all" — including add-on credentials, so by default it talks to the live database.

  • Tear down a previewdestroy_previewChanges

    Tear one branch preview down (containers, image, its empty volumes). The branch itself is untouched; a new push redeploys it while previews are on.

Configure

29 tools

Build & run settings, env vars, maintenance and password pages, alerts, log drains, domains, add-ons, volumes, crons, groups and tags.

  • Build & run settingsupdate_app_settingsChanges

    Change how an app is built and run: port, health-check path, build root (monorepos), tracked branch, repository URL, memory cap (MB) and CPU cap (cores) within the plan, and health-gated routing. Only what is passed changes. Applies on the next deploy, or on a restart without a rebuild. The app's name is not one of these settings.

  • Rename an apprename_appAsks first

    Change an app's slug — its name AND its <slug>.<apps-domain> address. The old address stops answering at once; anything linking to it (webhooks, bookmarks, other apps) breaks. Custom domains are unaffected. Without confirm it previews.

  • Set an env varset_envAsks first

    Set an environment variable, encrypted at rest; values are never readable again. Overwriting a key that already has a value in that scope destroys the old value, so that case previews first and needs confirm. Applies on the next deploy, or on the next restart when the value is not needed at build time.

  • Remove an env varunset_envAsks first

    Remove an environment variable (every scope of that key). Its value is gone for good — values cannot be read back — so this previews without confirm. Applies on the next deploy.

  • Import a .env fileimport_envAsks first

    Set many env vars at once from .env content (KEY=value lines; comments, `export` and quotes handled). Existing keys in that scope are overwritten, so it previews first (keys only, and which would be overwritten). In the local server, `path` reads a .env file from disk, so the values reach the platform without passing through the conversation. Returns the keys written, never values.

  • Maintenance modeset_maintenanceAsks first

    Route the app to a 503 maintenance page (on) or back to itself (off). The app keeps running — only routing changes, no rebuild. Turning it ON takes the site off the internet, so that previews first.

  • Put the site behind a passwordset_site_passwordChanges

    Put an app's production site behind a password page until it launches; omit password to re-enable with the saved one. message is shown above the field; bypass lists paths that stay public (e.g. a payment webhook). Switching on takes one no-rebuild release (~1 min); a new password signs every visitor out. The password is never echoed back.

  • Make the site publicdisable_site_passwordAsks first

    Take the password page off an app's production site: it becomes public to everyone, search engines included, and a site that was not meant to be public yet cannot be un-seen. The saved password is kept for turning it back on. Previews without confirm.

  • Branch previews settingsset_previewsAsks first

    Branch previews: turn auto-deploys of pushed branches on or off (off tears down every running preview), set or clear ("") a password on preview URLs (user "preview"), and set or clear ("") the GitHub token previews use to post commit statuses and PR comments. Secrets are never echoed.

  • Alert thresholdsset_alertsChanges

    Set the thresholds that fire the notification webhook: CPU percent (100 = one core), memory percent of the limit, and 5xx error-rate percent. This replaces all three: pass null or leave one out to turn it off. Needs a plan with alerts.

  • Deploy & alert notificationsset_notificationsChanges

    Set ("" or null clears) the Slack-compatible webhook URL that deploys and alerts are announced to, and/or send a test message to it (test: true). The URL is a credential and is never returned — only whether one is set and its host.

  • Add a log drainadd_log_drainAsks first

    Forward an app's runtime logs — everything it prints, secrets it logs included — to an outside destination: kind 'http' POSTs JSON batches to a URL; 'syslog' sends RFC3164 over UDP to host:port. Previews the destination first. Needs a plan with log drains.

  • Remove a log drainremove_log_drainChanges

    Stop forwarding an app's runtime logs to one log drain, by its id.

  • Add a custom domainadd_domainChanges

    Claim a custom domain for an app and get the DNS TXT record that proves ownership; it is routed once the record is verified and the app deployed. A wildcard ("*.example.com") routes every single-label subdomain to the app — how a multi-tenant app serves a hostname per tenant; it is proved on its base zone and needs the platform DNS-01 resolver.

  • Verify a domainverify_domainChanges

    Check a pending domain's DNS TXT record. Once verified, it is routed on the next deploy or restart.

  • Remove a custom domainremove_domainAsks first

    Detach a custom domain from an app: visitors to it stop reaching the app on the next deploy, and a new claim must be verified again. Previews without confirm.

  • Add an add-onadd_addonChanges

    Provision a backing service and inject its credentials into the app's env (never shown): postgres → DATABASE_URL, mysql → MYSQL_URL, redis → REDIS_URL, minio → S3_ENDPOINT/S3_ACCESS_KEY/S3_SECRET_KEY, and so on. memcached has no credential and is protected only by the app's private network. Included in the flat plan price, which caps how many an app may have. Applies on the next deploy.

  • Destroy an add-onremove_addonAsks first

    DESTRUCTIVE. Destroy an add-on and its data volume IMMEDIATELY and irreversibly — the database/cache/bucket is gone the moment this returns. Without confirm it previews; it proceeds with confirm: true AND confirm_name set to the add-on type.

  • Add a volumeadd_volumeChanges

    Mount a persistent volume into the app's containers at an absolute path, so what it writes there survives deploys — a SQLite file, uploads, a cache. Everything outside a volume is wiped on every release. Applies on the next deploy. Every web replica shares the one volume.

  • Delete a volumeremove_volumeAsks first

    DESTRUCTIVE. Detach a persistent volume AND delete its data, backups included. Irreversible. Without confirm it previews; to proceed pass confirm: true AND confirm_name set to the volume name.

  • Copy files into a volumepush_volumeAsks firstLocal server

    LOCAL server only. Copy a local directory (or a .tar/.tgz) INTO one of the app's volumes, unpacked at its mount path; files with the same names are overwritten. Previews without confirm.

  • Add a cron jobadd_cronAsks first

    Schedule a command in the app's release image, with every env var and the app's volumes — it runs unattended within minutes, so it previews first. 5-field cron, UTC.

  • Pause or resume a cron jobset_cron_enabledChanges

    Pause (enabled: false) or resume (true) one of an app's scheduled jobs, by id, without deleting it.

  • Delete a cron jobremove_cronChanges

    Delete one of an app's scheduled jobs for good, by id; pausing is the way to keep it.

  • File an app in a groupset_app_groupChanges

    Put an app in a group (the dashboard lists the fleet by group), or out of every group with group: null. Case-snaps to an existing group.

  • Tag an appset_app_tagsChanges

    Replace an app's tags (cross-cutting labels the dashboard filters by). [] clears them.

  • Rename or dissolve a grouprename_groupChanges

    Rename a group on every app carrying it (that you may change), or with to: null take every such app out of it. The apps themselves are untouched.

  • Public showcase listingset_showcaseAsks first

    List the app in (on: true) or remove it from the PUBLIC /showcase directory, which publishes its address, status, homepage screenshot and the owner's GitHub handle. Owner only. Listing previews first.

  • Refresh the thumbnailrefresh_screenshotChanges

    Ask for a fresh screenshot of the app's homepage (the dashboard tile); recaptured within ~30 s.

Source & GitHub

3 tools

Connect or disconnect a git repository and wire push-to-deploy on GitHub.

  • Connect a repositoryconnect_repoAsks first

    Point an EXISTING app at a git repository: from now on every deploy clones it rather than using uploaded archives. Works on an app created by upload. A private repo needs the platform to be able to clone it (an SSH deploy key on the box and the git@host:owner/repo.git URL form). It decides what code runs with the production data, so it previews first.

  • Disconnect the repositorydisconnect_repoChanges

    Stop cloning a repository: the app goes back to deploying uploaded archives, and its next deploy needs one.

  • Wire push-to-deploy on GitHubinstall_github_webhookChanges

    Create (or repair) the push webhook on the app's github.com repository, server-side, so pushes to the tracked branch deploy — the HMAC secret never leaves the platform. Uses the app's own GitHub token (the one its previews use) or, when the caller is the owner, the owner's linked GitHub account; it needs admin access to the repository.

Backups

5 tools

Back up now, schedule backups, restore one or delete one.

  • Back up nowrun_backupChanges

    Take a backup NOW and wait for it, returning the file name. For a way back before a migration, a restore, or anything else that cannot be undone. Defaults to the Postgres add-on.

  • Restore a backuprestore_backupAsks first

    DESTRUCTIVE. Replace current data with a backup: a dump drops and rebuilds the add-on's schema; a volume archive replaces every file in that volume, with the app stopped meanwhile. Everything written since that backup is lost. Without confirm it previews; it proceeds with confirm: true AND confirm_name set to the backup file name.

  • Delete a backupdelete_backupAsks first

    DESTRUCTIVE. Delete one backup file, on the platform and off-site. Without confirm it previews; it proceeds with confirm: true AND confirm_name set to the file name.

  • Backup scheduleset_backup_scheduleChanges

    Schedule (or turn off with "") automatic backups of the app's add-ons and volumes: a 5-field cron in UTC ('0 4 * * *' = daily 04:00), how many to keep, and which series to skip. An app with a database and no schedule is one bad deploy from losing it.

  • Import a Postgres dumpimport_databaseAsks firstLocal server

    LOCAL server only. DESTRUCTIVE. Load a local pg_dump (plain SQL or .gz) into the app's Postgres add-on, REPLACING its database (it is kept as a backup first). Without confirm it previews; it proceeds with confirm: true AND confirm_name set to the app slug.

People

4 tools

Invite collaborators, change their role or remove them, and leave a team.

  • Invite a collaboratorinvite_collaboratorAsks first

    Email an invitation (with slug: to one app; without: to the account team, i.e. every app the account owns). Access starts only when they accept it, signed in with that address — an invitation asks a person, it never enrols one. Roles: admin (everything but deleting), member (operate incl. secrets/shell/restores), developer (deploy, previews, logs, shell, crons), viewer (read-only, free and unlimited). extraPermissions adds single permissions on top. Nobody can grant more than they hold. Previews first; it sends with confirm: true AND confirm_name set to the email address.

  • Change a collaborator's roleupdate_collaboratorAsks first

    Change someone's role and extra permissions — on one app (slug) or on the account team (no slug), by member id. Takes effect immediately, so it previews who and what first.

  • Remove a collaboratorremove_collaboratorAsks first

    Remove someone's access (memberId) or revoke a pending invitation (inviteId) — on one app (slug) or on the account team (no slug). Their access ends immediately; inviting them again restores it. Previews who first.

  • Leave someone's teamleave_teamAsks first

    Leave an account team this account was invited to (owner = that account's email): access to all of its apps ends until invited again. Previews without confirm.

Create & delete apps

3 tools

Create an app from git or uploaded code, deploy code from your computer, delete an app.

  • Create an appcreate_appChanges

    Create a new app (it counts against the plan's app limit). source 'git' (default) clones repoUrl. 'upload' and 'static' need NO repository — they are for code that exists only on a computer and arrives afterwards as an archive from the local MCP server or `deploycloud upload`: 'upload' builds with its own Dockerfile/Nixpacks; 'static' serves a pre-built site as-is.

  • Deploy local codeupload_bundleChangesLocal server

    LOCAL server only. Deploy code straight from this machine — no git remote, no credentials on the server. `path` is a directory (tarred, excluding node_modules/.git/.env/build output and nested git worktrees) or an existing .tgz/.zip. A directory in a git repo stamps the deployment with its HEAD sha (plus '-dirty' for uncommitted changes). The app must have been created with source 'upload' or 'static'. Returns the deployment id, plus `warnings` when something was left out or the bundle is unusually big; the deploy runs asynchronously.

  • Delete an appdelete_appAsks first

    DESTRUCTIVE. Permanently delete an app with its add-ons, their data, its volumes and its backups. Owner only. Without confirm it previews exactly what would be lost; it proceeds with confirm: true AND confirm_name set to the app slug.

Plan

1 tool

A Stripe link to change plan, which you open and pay yourself — the agent never pays.

  • Change planchange_planAsks first

    Get the link that moves the account to a paid plan (Stripe Checkout, or the Billing Portal when a subscription exists), or with portal: true the Billing Portal itself (change or cancel, invoices, card). LINK ONLY: nothing is charged by this tool and no money moves through this connector — the person opens the link and completes the payment in a browser. A plan link previews first; it is returned with confirm: true AND confirm_amount set to the plan's monthly price in USD.

REST API

4 tools

Anything else the REST API does: reads run at once, changes preview first.

  • Read from the DeployCloud APIapi_getReads

    Read any endpoint of the DeployCloud REST API v1 with GET, as the signed-in account, for data no purpose-built tool returns (e.g. /apps/<slug>/notify, /groups). The API is documented at https://deploycloud.app/docs#api (a private instance serves the same page at its own /docs#api). path is relative to /api/v1, e.g. '/apps/blog/metrics'. Refused: sign-in, tokens and OAuth; operator-only routes; billing (no money moves through this connector); backup downloads; and the destructive calls that have a purpose-built tool with its own confirmation (deleting an app, a volume, an add-on or a backup, restores, commands, rollbacks, imports, uploads, leaving a team). Credentials in the answer are masked.

  • Create through the DeployCloud APIapi_createAsks first

    Send a POST to an endpoint of the DeployCloud REST API v1, as the signed-in account, for an action no purpose-built tool covers. The API is documented at https://deploycloud.app/docs#api. path is relative to /api/v1. It previews the request first and sends it with confirm: true. Refused: sign-in, tokens and OAuth; operator-only routes; billing (no money moves through this connector); backup downloads; and the destructive calls that have a purpose-built tool with its own confirmation (deleting an app, a volume, an add-on or a backup, restores, commands, rollbacks, imports, uploads, leaving a team). Credentials in the answer are masked.

  • Update through the DeployCloud APIapi_updateAsks first

    Send a PUT (replace) or PATCH (change some fields) to an endpoint of the DeployCloud REST API v1, as the signed-in account, for a change no purpose-built tool covers. The API is documented at https://deploycloud.app/docs#api. path is relative to /api/v1. It previews the request first and sends it with confirm: true. Refused: sign-in, tokens and OAuth; operator-only routes; billing (no money moves through this connector); backup downloads; and the destructive calls that have a purpose-built tool with its own confirmation (deleting an app, a volume, an add-on or a backup, restores, commands, rollbacks, imports, uploads, leaving a team). Credentials in the answer are masked.

  • Delete through the DeployCloud APIapi_deleteAsks first

    Send a DELETE to an endpoint of the DeployCloud REST API v1, as the signed-in account, for a removal no purpose-built tool covers. The API is documented at https://deploycloud.app/docs#api. path is relative to /api/v1. It previews the request first and sends it with confirm: true. Refused: sign-in, tokens and OAuth; operator-only routes; billing (no money moves through this connector); backup downloads; and the destructive calls that have a purpose-built tool with its own confirmation (deleting an app, a volume, an add-on or a backup, restores, commands, rollbacks, imports, uploads, leaving a team). Credentials in the answer are masked.

Platform operators

4 tools

For the people who run a DeployCloud instance: the hostnames the platform itself answers on.

  • Platform domains (operator)list_platform_domainsReadsOperators

    PLATFORM OPERATOR only (others get a 403). The custom hostnames that serve the platform's own dashboard and API, with any redirect each one has (e.g. www → apex).

  • Add a platform domain (operator)add_platform_domainChangesOperators

    PLATFORM OPERATOR only. Serve the platform's dashboard and API on another hostname, or with redirectTo make that hostname answer 301 to another one (e.g. www → apex). Applies live.

  • Repoint a platform domain (operator)set_platform_domain_redirectChangesOperators

    PLATFORM OPERATOR only. Change where a platform hostname redirects (301), or with redirectTo: null make it serve the dashboard itself. Applies live.

  • Remove a platform domain (operator)remove_platform_domainAsks firstOperators

    PLATFORM OPERATOR only. Detach a hostname from the platform: whoever reaches the dashboard or API through it loses it — removing the one in use cuts off the dashboard. Applies live. Without confirm it previews; it proceeds with confirm: true AND confirm_name set to the hostname.

Safety & privacy

You stay in charge

The connector is another way in to your account, with the same rules as the dashboard — and a few more.

It acts as you, with your role

Every tool is a call to the DeployCloud API with your connection’s token: on an app where you are a viewer, it can only look. Plan limits, permissions and the activity log are exactly the dashboard’s.

Reads and writes are labelled

Each tool tells your client whether it only reads or changes something, so the client can ask you before anything that writes.

Nothing irreversible on the first call

Deleting an app, a volume, an add-on or a backup, restoring, rolling back, running a command or inviting someone first answers with a preview. It proceeds only when called again with your confirmation — and the resource’s name typed back for data.

Secrets stay write-only

Env values, add-on credentials, site passwords and webhook secrets are never returned; logs and command output reach the agent with your app’s credentials masked.

It cannot spend your money

No tool pays, refunds or changes your card. Changing plan returns a Stripe link that you open and pay yourself; everything else about billing is in the dashboard.

Revoke it any time

Each connection appears on your Tokens page as a connected app; revoke it there and it stops at once. A password reset ends every connection. Access tokens last an hour and renew; an unused connection lapses after 90 days.

What data flows where

DeployCloud receives the tool calls your agent makes — the same API requests the dashboard makes — and never your conversation. What a tool returns (app names, logs, metrics, settings) goes to the AI provider you connected and is handled under their terms. We keep the connection itself (the client’s name, its return address, when it was last used, the token as a hash) and, for every change it makes, the activity-log line we keep for any change. Details are in the Privacy and Data Policy.

Deploy from a chat today.

Free to start, no credit card. Connect your agent and ask it to ship.