cf
CallFunnel.ai

Hosted MCP

Your customer ops, callable from any LLM.

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 and your AI can place a call, draft a reply, queue an offer, or read a customer's full history — all with the same per-tenant auth, approval ladder, and audit trail as the dashboard.

One control plane. Many drivers.

A human in the dashboard, an agent in Claude.ai, a workflow on a cron — they all call the same tools, hit the same gates, and write to the same timeline. There's no "API mode" vs "UI mode" to keep in sync. Everything is one orchestrator.

Tool surface (post-launch)

The hosted MCP endpoint ships post-launch. Here's the planned tool catalogue — feedback welcome if you want one of these earlier.

callfunnel.place_call

Place an outbound call to a contact using a workflow rule book and persona. Returns a call_id; the call runs async, with the result delivered via webhook or polled via get_call.

{ workflow_id, contact (E.164), persona?, variables? }
callfunnel.get_timeline

Return a customer's full timeline — every call, approval, transcript. Filter by date or workflow.

{ contact, since?, workflow_id? }
callfunnel.query_kb

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

{ query, top_k?, scope (company|customer|both)? }
callfunnel.create_workflow

Author a new workflow from a plain-English brief. Opus generates the rule book, validators sanity-check it, you get back a workflow_id or a list of repair suggestions.

{ name, brief (plain English), goal_kind, persona?, dry_run? }
callfunnel.approve / .deny

Resolve a pending approval. Same as tapping a Slack button. Triggers the configured downstream action (continue concession, escalate, abandon).

{ approval_id, decision (approve|deny|counter), justification? }
callfunnel.get_balance / .topup

Read the wallet balance and minutes-remaining, or kick off a top-up checkout. Useful for agents that want to recharge before running a large outbound batch.

{ amount_minor?, return_url? }

Example: Claude.ai placing a call

User (in Claude.ai chat):
  "Call Priya about her order, she said it's missing items."

Claude calls:
  callfunnel.get_timeline({ contact: "+91-98765-43210" })
  → returns last order, last call summary, open ticket reference

Claude calls:
  callfunnel.place_call({
    workflow_id: "wf_order_resolution",
    contact:     "+91-98765-43210",
    persona:     "jacqueline",
    variables:   { order_id: "ORD-9924", refund_eligible: true }
  })
  → returns { call_id: "cl_a1b2c3", status: "queued" }

Claude waits, then calls:
  callfunnel.get_timeline({ contact: "+91-98765-43210", since: "1m" })
  → returns transcript + disposition: "approved partial refund ₹450"

Auth model

Bearer your tenant's MCP token (issued from the dashboard). The token is scoped to your tenant; it can't read anyone else's data and it can't bypass the approval ladder. Token revocation is immediate; rotation is one click.

Cost

Calls and messages dispatched through MCP cost the same as calls placed from the dashboard or a cron — your tier's per-minute or per-message rate. The MCP plumbing itself is free.

Want a tool we haven't listed? hello@callfunnel.ai.