Browse docs All docs
Docs / Capability matrix (MCP · API · UI)
Docdeploymill://docs/capabilities

Capability matrix (MCP · API · UI)

This page is the at-a-glance answer to "what can DeployMill do, and where can I do it?" Every capability is listed against the three surfaces you can drive it from:

  • MCP: the MCP tools your AI agent calls over POST /mcp. This is the primary product.
  • API: the /api/v1 REST API, an HTTP mirror of the deploy-lifecycle tools for scripts and CI. (For workspace administration, "API" means the account/org API instead. See that table's note.)
  • UI: the human dashboard at /account.

How to read this matrix (the agent-first approach)

DeployMill is built on two deliberate rules, and the matrix is the proof of both:

  1. The deploy lifecycle is agent-first. Everything involved in shipping and operating an app (create, import, deploy, previews, domains, env vars, secrets, source, database, object storage, rollback, logs, health) lands as an MCP tool first. So the MCP column is the most complete column in the deploy-lifecycle table: an agent is never forced into a dashboard to ship. The REST API mirrors nearly all of it, and the dashboard is a secondary surface for observing and managing what the agent built.
  2. Workspace administration is API-first. Running the workspace itself (members, roles, billing, SSO, support) is human work. These are deliberately not MCP tools. They live in the dashboard with a solid API behind them (the second table). The one read an agent needs to deploy (quota/headroom via get_account) stays on the agent surface.

Legend: ✅ available · — not on this surface · 👤 human-only by design.

Deploy lifecycle (agent-first)

For this table the API column is the /api/v1 REST API. Read tools never return secret values. Mutations run the same guardrails (health-gated deploys, isolated previews, the secret hand-off the client never sees) on every surface.

Projects & apps

CapabilityToolMCPAPIUI
Start a project end-to-end (repo + app + deploy + domain)start_project
Import an existing repo as an appimport_repo
Create a bare app bound to a repocreate_app
Diff & apply project.json against live infrareconcile_project
List appslist_apps
App status: detail (source, port, size, domains, mounts, protection) + live health (edge probe, deploy rollout, image drift, diagnostics)get_app
List tenant projectslist_projects
Account quota & headroomget_account
List starter templateslist_templates
Stop / start an appstop_app / start_app
Sleep a running app now (scale to zero, wakes on next request, keeps its quota slot)sleep_app
Set CPU / memoryset_app_resources
Idle-sleep policy (always-alive · idle window · sleep-vs-stop)set_app_sleep_policy
Delete an app and its resourcesdelete_app

Deploy, rollback, health & logs

CapabilityToolMCPAPIUI
Build & deploy from sourcedeploy
Cancel an in-flight deploycancel_deploy
List deploymentslist_deployments
Roll back to a previous releaserollback
Read build / runtime logsget_logs
Deep debugging bundle (health + logs + audit)debug_app

Previews

CapabilityToolMCPAPIUI
Create a preview (isolated DB branch + fresh volume/bucket)create_preview
List previewslist_previews
Redeploy a previewdeploy (by (parentApplicationId, ref) or the preview's applicationId)
Set / extend preview TTLset_preview_ttl
Delete a previewdelete_app (by (parentApplicationId, ref) or the preview's applicationId)

Domains & env vars

CapabilityToolMCPAPIUI
Attach a custom domainattach_domain
Detach a domaindetach_domain
List domainslist_domains
Set env varsset_env_vars
List env-var keys (values never returned)list_env_vars
Delete env varsdelete_env_vars
Bind a secret into an app's envbind_secret

Secrets (zero-readback vault)

No surface ever returns a secret value. The agent and API client work by name only.

CapabilityToolMCPAPIUI
Request a secret (mint single-use browser link)request_secret
Poll a secret request's statussecret_request_status
Enter / change a secret value— (browser hand-off)👤
List secret names (org vault: omit applicationId; app vault: pass it)list_secrets
Delete a secret (scope: "org" or scope: "app")delete_secret
Promote an app secret to org-sharedshare_secret
Unshare an org secret into an appunshare_secret

Source / files

CapabilityToolMCPAPIUI
List files in a repo pathlist_files
Read a fileget_file
Push files (creates the branch on demand via createBranchIfMissing)push_files
Temporary git clone credentialsget_clone_credentials
Export full source as a zip

Object storage

CapabilityToolMCPAPIUI
List objectslist_objects
Download an objectget_object
Upload an objectput_object
Delete an objectdelete_object

Direct database access

CapabilityToolMCPAPIUI
Inspect the database schema (tables, columns, indexes, but never row values)describe_database
Run a single read-only SQL query (capped, audited)¹query_database

¹ query_database requires a plan with direct data access (paid) and can be turned off org-wide by an admin governance toggle. describe_database (schema only) is available on every plan. See the direct database access guide.

Database backups & restore

CapabilityToolMCPAPIUI
Snapshot the database on demandcreate_backup
List restore pointslist_backups
Restore a backup into the live DBrestore_backup
Download a backup (presigned dump)download_backup
Verify a backup restores cleanlyverify_backup
Swap the app onto a restored databaseswap_database

Protection & docs

CapabilityToolMCPAPIUI
Gate a site (HTTP Basic / organization auth)set_app_protection
Full-text search the docssearch_docs

Scheduled jobs (cron) are config-as-code: declare a schedules block in .deploymill/project.json and apply it with reconcile_project. There is no standalone schedule tool. See the schedules guide.

Workspace administration (API-first)

These run the workspace itself, not your apps. By design they are not on the MCP surface. Agents ship apps, and people run workspaces. The programmatic path here is the account/org API (Better Auth /api/auth/organization/* plus the dashboard's JSON endpoints), not /api/v1. The API column below reflects that surface.

CapabilityMCPAPIUI
Invite / remove members, change roles
Per-member permission grants/revokes & app limits
Create / revoke org API keys
Billing: plan, add-ons, checkout✅¹
Provider connections (source / database)
Org preferences (default DB provider / template)read via get_account
Audit log: view & exportper-app entries via debug_app
Compliance exports (backup attestation, SIEM, data export)
SSO connectionsoperator-managed²read-only status
Account settings (2FA, password, linked providers)
Contact support (email-only — the dashboard points at a monitored mailbox)👤 ✅
Delete / erase the organization

¹ Billing checkout and the customer portal complete in the browser (Stripe), launched from the dashboard. ² SSO connections are configured by DeployMill operators (no self-serve). The dashboard shows a read-only status page. See SSO setup.

See also

</content> </invoke>