Skip to content
Pitch2SaleDevelopers
Open the app
Early access: these pages are being written and reviewed. Facts in the header boxes come straight from the product.

MCP server

Pitch2Sale runs a Model Context Protocol server, so an AI agent can read your pipeline and log work in the CRM.

Endpoint POST https://api.pitch2sale.com/mcp
Transport Streamable HTTP, stateless; every response is plain JSON (no SSE stream). GET /mcp returns 405 (with a valid key; without one, 401 first).
Authentication Authorization: Bearer pat_… — a personal access token only
Scopes mcp:read for the read tools; mcp:write for the write tools (it also allows the read tools)
Rate limit 120 requests per minute per key

The MCP scopes are never granted by default. Create a key with them explicitly:

Terminal window
curl -X POST "https://api.pitch2sale.com/api/v1/settings/api-keys" \
-H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{ "label": "Claude Desktop", "scopes": ["mcp:read"] }'

Claude Desktop, Cursor and other clients that accept a remote server URL use a config like this:

{ "mcpServers": { "pitch2sale": { "url": "https://api.pitch2sale.com/mcp", "headers": { "Authorization": "Bearer pat_…" } } } }

Keep the token out of shared or committed config files. Every tool runs as the key’s user inside that user’s organization.

Available to keys with mcp:read or mcp:write. tools/list returns each tool’s description and input schema.

Area Tools
Leads stale_leads, leads_summary, top_leads, search_leads, search_semantic, lead_source_performance, follow_up_gaps
Pipeline and deals pipeline_summary, deals_at_risk, hot_deals, win_loss_analysis
Activity and calls recent_activities, upcoming, team_call_stats, response_time_stats, best_time_to_contact, meeting_outcomes, call_detail, call_quality_trend
Sequences and templates sequence_performance, template_performance
Email and conversations email_threads, email_thread_messages, conversation_timeline, conversation_memory
Clients and contacts find_client, client_overview, contacts_lookup
Invoices and revenue invoices_query, revenue_summary, unpaid_balance, price_lookup
Proposals and projects proposals_query, projects_query, project_detail
Help and memory product_help, sales_playbook, list_memory

Listed and callable only with mcp:write. Each one also requires the caller’s role permission and an idempotency_key.

Tool Does Role permission Arguments
create_lead Create a lead leads.create name; optional description, source
log_activity Log a call or note on a lead leads.create lead_id, type (call or note), body; optional subject, duration_seconds
create_task Create a follow-up task tasks.create title, due_date (ISO date); optional lead_id, description, priority (low, medium, high)

idempotency_key is a string you choose (1–200 characters), unique per write. Retrying a call with the same key returns the first call’s result instead of creating a duplicate; if the first call is still running you get an error asking you to retry shortly. A write that failed releases its key, so you can fix the arguments and retry with it. Every successful write is recorded in the audit log.

Situation Response
Missing or invalid token HTTP 401, {"error":"…"} (see Authentication)
Key has neither MCP scope HTTP 403, {"error":"Token does not have any of the required scopes: mcp:read, mcp:write"}
Rate limit exceeded HTTP 429, JSON-RPC error -32000 “Rate limit exceeded. Please slow down.”
Internal failure HTTP 500, JSON-RPC error -32603 “Internal error”
Write tool without mcp:write JSON-RPC error -32600 (invalid request)
Unknown tool JSON-RPC error -32601 (method not found)
Bad arguments, missing permission, record not found A tool result with isError: true and a readable message