Agent tools reference
This app exposes an MCP server at /mcp, protected by OAuth. Tools read your CRM data as your signed-in account, so row-level security decides what an agent can see — a token can never widen that.
Scopes
funnel:read · funnel:admin
Rate limit
120 calls/min per user · 300 per client
Audit
HMAC-signed, arguments hashed only
Pipeline summary
pipeline_summaryfunnel:readHeadline lead and deal counts, open pipeline ARR and win rate.
Inputs
—— — No arguments.
Output
structuredContent: { leads, deals, openDeals, wonDeals, openArr, wonArr }
Example call
{ "name": "pipeline_summary", "arguments": {} }Example response
{ "leads": 412, "deals": 96, "openDeals": 51, "wonArr": 1840000 }List leads
list_leadsfunnel:readCRM leads visible to you, newest first, with optional filters.
Inputs
limitnumber 1–200 — Defaults to 25.sourcestring — Exact match on lead source.segmentstring — Exact match on segment.regionstring — Exact match on region.
Output
structuredContent: { count, leads[] }
Example call
{ "name": "list_leads", "arguments": { "limit": 10, "source": "outbound" } }Example response
{ "count": 10, "leads": [ { "company_name": "…", "created_at_ts": "…" } ] }List deals
list_dealsfunnel:readCRM deals with ARR, status and stage events.
Inputs
limitnumber 1–200 — Defaults to 25.statusopen | won | lost — Optional status filter.segmentstring — Exact match on segment.regionstring — Exact match on region.
Output
structuredContent: { count, deals[] }
Example call
{ "name": "list_deals", "arguments": { "status": "open", "limit": 25 } }Example response
{ "count": 25, "deals": [ { "arr": 42000, "status": "open" } ] }List funnel stages
list_funnel_stagesfunnel:readThe configured lead and deal stage model, including aliases.
Inputs
—— — No arguments.
Output
structuredContent: { lead[], deal[] }
Example call
{ "name": "list_funnel_stages", "arguments": {} }Example response
{ "lead": [ { "key": "qualified", "label": "Qualified" } ] }List entry points
list_entry_pointsfunnel:adminConfigured Attio, Apollo and Google lead bot entry points.
Inputs
—— — No arguments.
Output
structuredContent: { entryPoints[] }
Example call
{ "name": "list_entry_points", "arguments": {} }Example response
{ "entryPoints": [ { "id": "attio", "name": "Attio" } ] }Denials you may see
- Not authenticated — connect the server with OAuth first.
- Unsupported scope(s) — the token carries a scope this server does not define; the call is refused rather than downgraded.
- Requires the "funnel:admin" scope — re-issue the token with that scope.
- Rate limit reached — retry after the stated number of seconds.