get_workspace: read the whole workspace

Takes no input and returns the same object as GET /api/manage/workspace: both agents’ settings, free conversations used, any team phone numbers for handover, sources, recent conversations, token prefixes and status fields. It’s marked read-only.

Make it the first call after you connect a client. If it returns your settings, the token and connection work.

update_agent: change one agent’s settings

Takes settings, a required object, and an optional channel, support or sales. The settings object accepts the same fields as PATCH /api/manage/settings, with the same limits, and the tool returns the agent’s full saved settings. The tool’s input schema doesn’t list those fields, so tell your coding agent which ones to change, or point it at the agent settings reference.

Validation failures come back as isError text, such as “Unknown setting: greting”, “Add up to 10 allowed origins.” or “Provide an agent settings object.”

Before a coding agent calls it, make sure it knows these four things:

  • allowedOrigins replaces the saved list, so have the agent read it with get_installation first and send it back whole.
  • enabled: true switches customer calls on at once. Ask your coding agent to leave it alone until you’ve tested in the dashboard.
  • Changing origins, the calls switch or the handover switch emails the workspace owner and names the token by its prefix. Greetings and instructions change without an email.
  • Human handover is an early release. Once a UK or US team number is verified for an agent in the dashboard, escalationEnabled: true lets callers choose Talk to a human, and whoever answers hears a private briefing first. Before that, the tool returns “Verify your team phone number in Settings before enabling handover.” as isError text. Leave humanNumber out, because numbers are verified and changed only in the dashboard, and keep your usual contact options, because customer routing is still being tested.
Change the sales greeting and button label
// params of the tools/call request
{"name": "update_agent", "arguments": {"channel": "sales", "settings": {"greeting": "Hi, I can answer questions about plans and features. What are you looking for?", "widgetLabel": "Ask about plans"}}}

// JSON inside result.content[0].text, with some fields left out
{
  "productName": "Example App",
  "agentName": "Robin",
  "greeting": "Hi, I can answer questions about plans and features. What are you looking for?",
  "voice": "cedar",
  "widgetLabel": "Ask about plans",
  "allowedOrigins": [
    "https://www.example.com"
  ],
  "enabled": false
}

get_installation: fetch the embed code

Takes an optional channel and returns the embed snippet, the agent’s allowed origins and whether customer calls are on. It’s marked read-only, and it’s the only way to get the snippet outside the dashboard.

The snippet comes on one line and always includes data-channel, even for support, so it can look different from the dashboard’s copy while doing the same job.

Get the sales embed
// params of the tools/call request
{"name": "get_installation", "arguments": {"channel": "sales"}}

// JSON inside result.content[0].text
{
  "channel": "sales",
  "embed": "<script src=\"https://app.kawlnow.com/widget.js\" data-helpline=\"YOUR_WORKSPACE_ID\" data-channel=\"sales\" async></script>",
  "allowedOrigins": [
    "https://www.example.com"
  ],
  "enabled": false
}

list_conversations: check recent calls

Takes no input and returns up to 100 recent conversations, newest first: id, channel, topic, status, created_at, seconds, finalized, is_test, summary and feedback. It’s marked read-only. The summary is the start of what the caller said, not an AI-written summary.

Full transcripts aren’t available over MCP. Fetch them with GET /api/manage/conversations/{id}, or read them in the dashboard.

List recent conversations
// params of the tools/call request
{"name": "list_conversations", "arguments": {}}

// JSON inside result.content[0].text
[
  {
    "id": "CONVERSATION_ID",
    "channel": "support",
    "topic": "Inviting a teammate",
    "status": "ended",
    "created_at": "2026-10-08T10:02:11.000Z",
    "seconds": 96.4,
    "finalized": 1,
    "is_test": 1,
    "summary": "How do I invite someone from my team?",
    "feedback": "Customer rating: helpful"
  }
]

conversation_insights: read recurring questions

Takes an optional channel, support or sales, and returns the same object as GET /api/manage/insights: recurring questions, reported issues and themes from what callers said in up to the latest 30 finished customer calls for that agent in the last 30 days, with exact quotes. It’s marked read-only, and the report updates automatically.

An OpenAI model writes each group’s label and summary, and every quote is checked against the call it cites. Counts describe that sample rather than every call, so read the conversations behind a group, in the dashboard or with GET /api/manage/conversations/{id}, before you change your knowledge. The conversations reference explains each field.

What can’t these tools do?

Some jobs need the dashboard or the REST API:

  • Start a call. Test calls run in the dashboard, and visitors start calls from the widget.
  • Create or revoke tokens. Use the dashboard or the REST API.
  • Read full transcripts. Use the REST API or the dashboard.
  • Verify or change a team phone number for human handover. That happens only in the dashboard’s Settings, and update_agent can switch handover on once the number is verified.