Connect Cursor or Claude to 190+ Typed CRM Tools With MCP

In the previous guide, we created a FavCRM workspace and received a fav_mcp_* API key.
Now we can connect an agent.
FavCRM exposes its backend through the Model Context Protocol at:
https://api.favcrm.io/mcp
Once authenticated, the client can discover 190+ typed tools across CRM, bookings, loyalty, invoices, commerce, content, team onboarding, WhatsApp setup, and reporting.
Add FavCRM to Cursor
Create or update ~/.cursor/mcp.json.
{
"mcpServers": {
"favcrm": {
"url": "https://api.favcrm.io/mcp",
"headers": {
"Authorization": "Bearer ${env:FAVCRM_API_KEY}"
}
}
}
}
Then set the environment variable somewhere Cursor can read it.
export FAVCRM_API_KEY=fav_mcp_...
Restart Cursor and check the MCP settings panel. The favcrm server should connect and expose the tool catalog.
The important detail is that the key lives in an environment variable, not in a repo-tracked config file.
Add FavCRM to Claude
The same bearer-token shape works in a Claude MCP config. The server URL is the same:
https://api.favcrm.io/mcp
The header is the same:
Authorization: Bearer fav_mcp_...
The exact config file location depends on your Claude environment, but the MCP server shape is identical: a Streamable HTTP server URL plus the bearer-token header.
Smoke-test from the CLI
The favcrm CLI is also an MCP client, so it is useful for smoke tests.
favcrm doctor
favcrm tool list
To inspect one tool:
favcrm tool describe create_booking
To call a read-only tool:
favcrm tool call list_services '{}'
If the workspace is new, an empty list is not an error. It means the tool call succeeded and there are no services yet.
What the catalog gives the agent
An MCP tool is more than a function name. Each FavCRM tool includes:
- a name
- a description
- an input schema
- an output shape
- annotations for agent safety
Those annotations are what let an agent reason about operational risk. For example:
list_servicesis read-onlycreate_bookingwrites datacancel_bookingchanges booking state- customer-facing sends and external services are open-world operations
Agents should inspect unfamiliar tools before calling them:
favcrm tool describe create_booking
favcrm tool describe cancel_booking
favcrm tool describe request_send_approval
This is the difference between an agent operating a backend and an agent guessing against a database.
Use plan checks before gated operations
Some operations depend on plan, module, quota, or billing state. Before a write that might be gated, call:
favcrm plan status
favcrm plan check --tool create_account
favcrm plan check --module whatsapp
favcrm plan options
If the operation requires an upgrade, the backend can return an upgrade action. A Stripe-hosted link is only created when the user explicitly confirms:
favcrm plan upgrade --plan-code favcrm-lite --confirm
This keeps the agent from accidentally triggering payment flows while still making the next step clear.
Use approval-gated sends
Customer-facing messages should not be treated like normal CRUD. For campaigns, WhatsApp, SMS, email, and inbox replies, prefer approval-gated workflows: the agent drafts the message, shows the user the intended recipient or segment, and requests approval before sending.
That pattern gives the agent power without letting it silently message customers.
A useful first prompt
After connecting FavCRM to Cursor or Claude, try:
Use the FavCRM tools to inspect this workspace.
First list my companies, then show plan status, then list services.
Do not create or send anything yet.
A good agent should call safe read-only tools first:
list_my_companiesget_plan_statuslist_services
Then it should summarize what is configured and what is missing.
What comes next
Now that the agent can discover and call tools, you can build a real app on top — a booking storefront backed by live CRM data: services, available slots, bookings, confirmation, and customer records. Every call returns a persisted record, not mock data.
That is the point of a headless CRM: the agent builds the interface, and a real backend stands behind it.
New to the category? Start with what an agentic CRM is.

