cf
CallFunnel.ai

Docs · API

Hosted MCP tools.

CallFunnel exposes its workflows, knowledge bank, customer timeline, and approval ladder as MCP tools. Plug the endpoint into Claude.ai, Cursor, or your own agent.

Endpoint & auth

MCP endpointhttps://api.callfunnel.ai/mcp (post-launch). Streamable HTTP transport.

Auth — Bearer token from Dashboard → API tokens → Create MCP token. Scoped to your tenant; can't read or act on anyone else's data. Revoke any time.

Connecting from Claude.ai

Claude.ai → Connectors → Add custom MCP. Name "CallFunnel", URL your MCP endpoint, Bearer token. Within a chat, ask Claude "list my callfunnel workflows" — the tools show up.

Connecting from Cursor

Cursor → Settings → MCP → Add server. JSON config:

{ "mcpServers": { "callfunnel": { "url": "https://api.callfunnel.ai/mcp", "headers": { "Authorization": "Bearer YOUR_TOKEN" } } } }

Tool catalogue

callfunnel.place_call

Place an outbound call. Async — returns a call_id; poll get_call or rely on the call.completed webhook.

{ "workflow_id", "contact" (E.164), "persona"?, "variables"? } → { "call_id", "status": "queued" }

callfunnel.send_message

(deprecated; voice-only platform — this tool is no longer exposed)

{ "workflow_id", "contact", "channel": "wa"|"tg"|"email", "variables"? } → { "message_id", "status": "queued" }

callfunnel.get_timeline

Full call history for a contact. Useful before deciding what to do next.

{ "contact", "since"?, "channel"?, "workflow_id"? } → { "contact": {...}, "turns": [{channel, ts, role, content, ...}], "approvals": [...] }

callfunnel.get_call

Fetch a specific call's full record: transcript, disposition, duration, cost, recording URL.

{ "call_id" } → { "id", "status", "duration_seconds", "transcript_url", "disposition", ... }

callfunnel.query_kb

Retrieve top-k chunks from your knowledge bank + customer data. Same retrieval that powers in-call RAG.

{ "query", "top_k"?, "scope": "company"|"customer"|"both" } → { "chunks": [{text, source, score, ...}] }

callfunnel.create_workflow

Author a new workflow from a plain-English brief. Opus generates, validators run, you get a workflow_id or repair suggestions.

{ "name", "brief", "goal_kind": "cta"|"info", "persona"?, "dry_run"? } → { "workflow_id", "status", "rule_book_excerpt", "validation_warnings": [...] }

callfunnel.list_workflows

List your tenant's workflows.

{ "status"?: "draft"|"live"|"paused" } → { "workflows": [{id, name, status, persona, created_at}] }

callfunnel.approve / .deny / .counter

Resolve a pending approval. Equivalent to tapping a Slack button.

{ "approval_id", "decision": "approve"|"deny"|"counter", "justification"?, "counter_value_paise"? } → { "ok": true, "approval": {...} }

callfunnel.list_approvals

Pending approvals across all workflows. Useful for an agent that periodically reviews queue.

callfunnel.get_balance / .topup

Wallet balance + minutes-remaining; or initiate a top-up checkout.

get_balance() → { "balance_minor", "currency", "minutes_remaining" } topup({ "amount_minor", "return_url"? }) → { "checkout_url" }

Cost

Calls / messages dispatched via MCP cost the same as those dispatched from the dashboard — your tier's per-minute or per-message rate. MCP plumbing itself is free; no per-tool-call fee.

Rate limits

Same per-tenant limits as the REST API (600 req/min). Tool-call concurrency on Anthropic's side is bound by your account tier.

Roadmap

Post-launch additions on the planning board:

  • Streaming tool replies (transcript-as-it-happens for in-call observation)
  • Resource subscriptions (real-time customer timeline updates pushed to the agent)
  • Workflow re-authoring tools (edit rule book sections, not just regenerate whole)