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✅✅✅
Correlated timeline: deploys, health verdicts, log-error clusters and request rate/latency on one axis, per app or as an org-wide roll-upget_timeline✅✅—
Deep debugging bundle (health + logs + audit)debug_app✅✅—

Previews

CapabilityToolMCPAPIUI
Create a preview (by default its own isolated database copy + a fresh volume/bucket; database: "shared" opts into the parent's database instead)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—✅¹✅
Source connections (your own GitHub accounts)—✅✅
Org preferences (default template, preview TTL, default idle window)read via get_account✅✅
Audit log: view & exportper-app entries via debug_app✅✅
Compliance exports (backup attestation, SIEM, data export)—✅✅
SSO connections—operator-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 is an Enterprise capability, and connections are configured by DeployMill operators (no self-serve). The dashboard shows a read-only status page. See SSO setup.

See also