Connect Cursor
Add Pact as an MCP server in Cursor via .cursor/mcp.json — your CRM's tools, consent-filtered and audited, inside the editor.
Cursor speaks MCP natively, so Pact's tools (query_accounts, query_deals,
ask_workspace, …) become available to Cursor's agent the moment you register
the server. Every call is consent-filtered, tenant-scoped, and written to your
audit log — the same guarantees as every other Pact surface.
Prerequisites
- A scoped Pact API key (
pact_live_*orpact_test_*), created at Settings → API keys. Give it the read scopes for the tools you want (e.g.read:accounts,read:deals). - Cursor with MCP support (any recent release).
1. Add the server
Create (or extend) .cursor/mcp.json in your project root — or
~/.cursor/mcp.json to make Pact available in every project:
{
"mcpServers": {
"pact": {
"url": "https://api.pact.place/mcp/",
"headers": { "Authorization": "Bearer pact_live_xxx" }
}
}
}
Replace pact_live_xxx with your key.
Warning
Keep the trailing slash on /mcp/. A request to /mcp redirects to /mcp/, and most HTTP
clients drop the Authorization header across a redirect — which surfaces as a mysterious 401.
2. Enable it
Open Cursor Settings → MCP. The pact entry appears with its tool list;
toggle it on if it isn't already. No restart is required — Cursor picks up
mcp.json changes automatically.
3. Verify
Ask Cursor's agent something only your CRM knows:
Using the pact tools, which of our deals are in Negotiation?
You should see a query_deals tool call in the agent's activity, and the
response will note any records hidden by consent (consent_filtered).
Troubleshooting
| Symptom | Likely cause |
|---|---|
| 401 on every call | Missing trailing slash, or the key was revoked |
| Tool calls fail with a scope error | The key lacks that tool's scope — mint one with the right read scopes |
| Server shows zero tools | The url is wrong; confirm https://api.pact.place/mcp/ |
Test any tool with real arguments — no LLM in the loop — in the tool sandbox before wiring up a client.