Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.kataven.ai/llms.txt

Use this file to discover all available pages before exploring further.

The Kataven MCP server exposes every Hub API verb as a Model Context Protocol tool. Any MCP-aware client (Claude Desktop, Cursor’s chat, ChatGPT Desktop, n8n, OpenAI Agents SDK, etc.) can then manage your agents, tools, telephony, and more — without the user writing code.
You probably don’t need MCP if you’re using Claude Code. Claude Code can write Python and run it directly against the Python SDK, which is the headless surface. MCP is for chat-only agent contexts that don’t have a shell.

Install

pip install kataven-mcp

Configure

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (Mac):
{
  "mcpServers": {
    "kataven": {
      "command": "kataven-mcp",
      "env": {
        "KATAVEN_API_KEY": "eyJhbGciOi...",
        "KATAVEN_ACCOUNT_ID": "acme"
      }
    }
  }
}

Cursor

~/.cursor/mcp.json:
{
  "mcpServers": {
    "kataven": {
      "command": "kataven-mcp",
      "env": {
        "KATAVEN_API_KEY": "eyJhbGciOi...",
        "KATAVEN_ACCOUNT_ID": "acme"
      }
    }
  }
}

Generic MCP (stdio)

KATAVEN_API_KEY=... KATAVEN_ACCOUNT_ID=acme kataven-mcp
The server speaks MCP over stdio.

What gets exposed

Every SDK verb becomes an MCP tool, prefixed kataven_:
  • kataven_list_agents, kataven_get_agent, kataven_create_agent, kataven_update_agent, kataven_delete_agent
  • kataven_attach_playbook, kataven_detach_playbook, kataven_attach_faq, kataven_detach_faq
  • kataven_list_tools, kataven_create_tool, …
  • kataven_list_phone_numbers, kataven_create_phone_number, …
  • kataven_originate_call
  • kataven_create_campaign, kataven_start_campaign, …
  • … and so on for every resource.
The agent sees rich JSON-Schema for each tool’s arguments, so it can fill in fields correctly.

Example sessions

“Show me all my agents and which phone numbers point to them.” Claude calls kataven_list_agents, then kataven_list_phone_numbers for each, and presents the join.
“Create a ‘Tier 2 Support’ agent with a friendlier tone than the existing ‘Support’ agent.” Claude reads the existing agent via kataven_get_agent, derives a revised prompt, calls kataven_create_agent with the new config.
“Pause every running campaign so I can deploy.” Claude calls kataven_list_campaigns, filters to status=running, and calls kataven_pause_campaign on each.