Skip to content
Zumu

Run Zumu from any MCP client.

Zumu’s own MCP server puts the whole platform in your AI assistant, and it changes an agent the way your team would: on a branch, tested, then published.

Server URLhttps://api.zumu.ai/platform/mcp

Your MCP clientConnected to Zumu
  1. You

    When a caller says their pet is limping, Front desk should offer today’s first open slot before any other day. Change it on a branch, run the booking test, and publish if it passes.

  2. zumucreate_agent_branch{ "branch": { "name": "same-day-first" } }branch ready
  3. zumupatch_agent_prompt1 anchored edit · content hash checkedrevision saved
  4. zumutest_run“Limping pet books same day”passed
  5. zumumerge_agent_branch{ "sourceBranchId": "same-day-first" }merged
  6. zumupublish_agent{ "agentId": "a41f…" }live
  7. Assistant

    Done. Front desk now offers a limping pet today’s first open slot. The booking test passed on the branch before any caller heard the change.

    PublishedFront desk · live

Example · Linden Animal Clinic

Connect

Add the URL, sign in, and get to work.

Your client finds Zumu’s sign-in on its own. There is no key to paste and none to rotate by hand.

Your client
Claude · ChatGPT
Add
Custom connector
Name
Zumu
URL
https://api.zumu.ai/platform/mcp
Sign-in
Your Zumu account, over OAuth
Claude Code
claude mcp add --transport http \
  zumu \
  https://api.zumu.ai/platform/mcp
.cursor/mcp.json
{
  "mcpServers": {
    "zumu": {
      "url": "https://api.zumu.ai/platform/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "zumu": {
      "type": "http",
      "url": "https://api.zumu.ai/platform/mcp"
    }
  }
}

The handshake

Standard OAuth, down to the last token.

Your client signs in once and holds only tokens that expire or rotate. Disconnect it from your dashboard and its next request is refused.

Your MCP client api.zumu.ai

  1. Discover

    Refused at first, with where to sign in.

    Your client sends:
    POST /platform/mcp
    Zumu answers:
    401 Unauthorized
    WWW-Authenticate: Bearer realm="zumu",
      resource_metadata="…/oauth-protected-resource"
  2. Metadata

    How to sign in: register, then ask for one scope.

    Your client sends:
    GET /.well-known/oauth-authorization-server/platform
    Zumu answers:
    200 OK
    { "registration_endpoint": "…/oauth/register",
      "scopes_supported": ["mcp"], … }
  3. Register

    Your client gets its own ID, and no secret to hold.

    Your client sends:
    POST /platform/oauth/register
    { "client_name": "Your MCP client", … }
    Zumu answers:
    201 Created
    { "client_id": "c7e41b0a-…",
      "token_endpoint_auth_method": "none", … }
  4. Sign in

    You pick the one organization and project it may use.

    Your client sends:
    GET /platform/oauth/authorize
      ?response_type=code&code_challenge=…
      &client_id=c7e41b0a-…
    Zumu answers:
    302 → your Zumu dashboard
      sign in, choose the organization and project
    302 → http://127.0.0.1:33418/callback?code=…
  5. Token

    The code and its verifier become a token good for one hour.

    Your client sends:
    POST /platform/oauth/token
    grant_type=authorization_code&code=…
      &code_verifier=…&client_id=c7e41b0a-…
    Zumu answers:
    200 OK
    { "access_token": "…", "expires_in": 3600,
      "refresh_token": "…" }
  6. Refresh

    Tokens rotate on refresh; a reused one ends the connection.

    Your client sends:
    POST /platform/oauth/token
    grant_type=refresh_token&refresh_token=…
    Zumu answers:
    200 OK
    { "access_token": "…", "refresh_token": "…" }

The tools

The whole platform, as tools.

Everything your dashboard does is a tool here, its schema generated from the running service, so your assistant sees what’s deployed.

  • Calls & records

    Any conversation, down to the tool call.

    • list_calls
    • get_call
    • get_call_tool_call
    • get_call_recording_url
    • get_call_cost_breakdown
  • Agents & prompts

    Build agents and edit long prompts by anchor.

    • create_agent
    • update_agent
    • patch_agent_prompt
    • list_agent_prompt_revisions
  • Branches & releases

    Preview a merge, and split traffic to test a change.

    • create_agent_branch
    • preview_agent_branch_merge
    • set_agent_traffic_split
    • publish_agent
  • Tests & quality

    Scripted conversations and the checks that judge them.

    • test_create
    • test_run
    • evaluation_get
  • Automations & tools

    Webhooks and their runs, imported APIs, connected servers.

    • agent_trigger_create
    • get_agent_trigger_run
    • tool_http_import_spec
    • tool_mcp_sync
  • Outbound

    Single calls and full campaigns.

    • outbound_call_create
    • outbound_campaign_launch
    • outbound_dnc_add
  • Knowledge & contacts

    What the agent knows, and who it is talking to.

    • resource_create
    • retrieve_context
    • contact_resolve_or_create
  • Numbers & voices

    Buy the line, choose or clone the voice.

    • phone_number_search
    • phone_number_purchase
    • list_voices
    • voice_clone_start
  • Analytics & billing

    The dashboard’s numbers and the balance behind them.

    • analytics_overview
    • analytics_time_series
    • analytics_heatmap
    • analytics_cost
    • billing_overview_get

Your MCP servers, on the call.

Connect any MCP server with standard OAuth or your own headers, and choose what each of its actions may do.

Allow
Runs whenever the agent needs it.
Ask
Reads back exactly what will change, and runs once the caller confirms.
Block
Never reaches the model.

How each permission is enforced →

linden-appointmentsConnected

https://mcp.lindenanimal.example/mcp

Sign-in
OAuth 2.0 · RFC 7591 registration · RFC 8707 audience-bound tokens
Discovery
Tools synced 07:40
ActionWhat it doesPermission
find_open_slotsOpen appointment slots by vet and dayAllow
book_visitBook a visit for a pet on fileAllow
reschedule_visitMove a booked visitAllow
update_clientChange an owner’s phone or addressAsk
apply_creditCredit an owner’s accountAsk
delete_clientRemove an owner and their petsBlock

Your team stays in control.

Can we see and undo what an assistant changed?

Yes. Every prompt edit is kept as a revision, with who made it and when, and any revision can be restored.

What can an assistant change?

The assistant acts under the role of the person who signed in: organization roles, project roles and custom permissions.

Can a script or CI job use it, with no one signing in?

Give that job the REST API. It authenticates with client credentials and needs no one at a keyboard; the MCP server is for a person working through an AI assistant, under their own sign-in.

Work on your agent from Claude or Cursor.

During the demo, your own MCP client edits a branch of the agent we build with you.

publish_agent { "agentId": "a41f…" }PublishedFront desk · live

Connect your client