Skip to content
Zumu

Developers

Every conversation, programmable.

Read any call over REST, run the whole platform from your MCP client, and send every outcome to your systems.

Front deskLinden Animal Clinic

Phone · 8:14 AM · 03:24

Example
Read the call over

REST API

curl \
  $API/v1/call_session/retrieve/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Organization-Id: $ORG"

200 · session

{ "session": {
    "status": "ended",
    "end_reason": "agent_hangup",
    "variables": [{
      "key": "appointment",
      "value": "Thu 9:40 AM" }],
    … } }
Read the REST API

MCP server

https://api.zumu.ai/platform/mcp

youDid yesterday’s limping-pet calls get booked?

  1. toollist_calls{ "searchQuery": "limping" }
  2. toolget_call{ "sessionId": "3f6c2a91-…" }
  3. assistantYes. Hannah Kerr’s beagle, Biscuit, is booked for Thu 9:40 AM with Dr. Lund, and the confirmation went out by text.
Connect the MCP server

Webhooks

POST hooks.lindenanimal.example/zumu

event
Summary ready
attempt
2 · signed
{
  "phone": "+1 212 555 0118",
  "owner": "Hannah Kerr",
  "pet": "Biscuit, beagle",
  …
  "slot": "Thu 9:40 AM",
  "visit_id": "LV-4471"
}

204Sent

Set up webhooks

Your API

Import your API. The agent calls it mid-call.

Point Zumu at your OpenAPI spec, or describe one call by hand. Each operation becomes a tool the agent uses while the customer is still on the line.

Your spec

openapi.yaml
openapi: 3.1.0
paths:
  /visits:
    post:
      operationId: book_visit
      summary: Book a visit
      requestBody:
        content:
          application/json:
            schema:
              required: [phone, pet, reason, slot]
              properties:
                phone: { type: string }
                pet: { type: string }
                reason: { type: string }
                slot: { type: string }

Imported as a tool

Linden Animal Clinic · Front deskPhone · 8:14 AM
  1. Hannah

    Thursday morning is fine, the earlier the better.

  2. Tool

    book_visitslot "Thu 9:00 AM" · pet "Biscuit, beagle"409 slot_taken

  3. Agent

    That time was just taken. The next opening is 9:40. Shall I book it?

  4. Hannah

    Yes, please.

  5. Tool

    book_visitslot "Thu 9:40 AM" · pet "Biscuit, beagle"201

BookedVisit LV-4471 · Thu 9:40 AM

How the agent recovers when your API says no →

Put the agent on your page, or in your own app.

One script tag puts voice and chat on your site. A realtime key brings your own voice client to the same agent.

Everything the widget does on a page →

index.html
<script async
  src="https://cdn.zumu.ai/widget/v1/widget.js">
</script>
<zumu-widget data-token="YOUR_EMBED_TOKEN">
</zumu-widget>

Linden Animal ClinicFront desk · voice and chat

  1. Visitor: Pepper won’t put weight on her paw. Can she come in today?
  2. Agent: Yes, today at 4:20 PM with Dr. Lund. Pepper is booked, and the details are on their way to your phone.

Build Zumu into the systems you already run.

After your demo call, your team has working credentials and its first integration planned.

book_visit slot "Thu 9:40 AM"201Bookedvisit LV-4471

Read the clinic’s call over REST