FavCRM — Agentic CRM
Agentic CRM for service businesses — 136 typed tools across customers, bookings, loyalty, invoices, and WhatsApp/SMS.
What it can do
- Search Members: Search and filter members/accounts. Supports text search, date ranges, booking/activity history, membership tier, tags, and more. Use lastBookingBefore/inactiveDays to find inactive me
- Get Member Profile: Get detailed profile for a specific member/account by ID.
- List Tags: List all available tags for the merchant.
What data it sees
Do you need an account
No: the server works without sign-in
Agentic CRM for service businesses — 136 typed tools across customers,
bookings, loyalty, invoices, and WhatsApp/SMS. Hosted at api.favcrm.io/mcp.
What it does
- Customers & loyalty — segments, memberships, rewards, points
- Bookings — create, confirm, cancel, no-show; capacity-aware schedules
- Commerce — invoices, payments, products, orders, inventory
- Communications — WhatsApp, SMS, email with templates
- CRM core — contacts, tasks, tickets, deals, campaigns
Auth
API key (fav_mcp_...). Sign up free at favcrm.io → Settings → API Keys.
Free tier: 100 customers + 200 bookings/month. No credit card.
Quickstart
Install snippets, examples, and smoke tests: github.com/favcrm/mcp
How to connect
How to connect FavCRM — Agentic CRM to Claude
The server address to paste into Claude settings:
https://favcrm--favcrm.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect FavCRM — Agentic CRM to ChatGPT
The server address to paste into ChatGPT settings:
https://favcrm--favcrm.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect FavCRM — Agentic CRM to Cursor
The server address to paste into Cursor settings:
https://favcrm--favcrm.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (60)
Raw names from tools/list. Only developers need these.
| search_members | Search and filter members/accounts. Supports text search, date ranges, booking/activity history, membership tier, tags, and more. Use lastBookingBefore/inactiveDays to find inactive members. |
| get_member_profile | Get detailed profile for a specific member/account by ID. |
| list_tags | List all available tags for the merchant. |
| attach_tags | Attach one or more tags to a member/account. Useful for segmenting members after filtering. |
| list_tiers | List all membership tiers with member counts and stats. |
| get_membership_tier | Get a specific membership tier by ID. |
| issue_rewards | Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs. |
| enrol_membership | Enrol a member into a membership tier. Free tiers enrol immediately; paid tiers return PAYMENT_REQUIRED unless skipPriceCheck is set. Use list_tiers first to find the target tier. |
| get_loyalty_balance | Get a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier. Returns null if the member is not enrolled. |
| earn_loyalty_points | Credit loyalty points or stamps to a member. Use field="points" for points, "stamps" for stamps. Server records a transaction with the reason as audit context. |
| get_dashboard_stats | Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent. |
| list_bookings | List bookings with filters for date range, status, service, staff, or member. |
| get_booking_detail | Get full booking details including line items, status history, and participants. |
| get_booking_stats | Get booking counts: today, this week, this month, and breakdown by status. |
| get_available_slots | Find available booking slots for a service on a specific date. |
| list_services | List booking services with name, price, duration, and status. |
| get_service_detail | Get full service details including addons, staff, resources, and tier pricing. |
| create_service | Create a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category. |
| update_service | Update an existing booking service. Pass only the fields you want to change. |
| create_service_schedule | Create a bookable schedule window for a service, including recurring weekly/daily availability. |
| list_service_schedules | List schedule windows for booking services. |
| update_service_schedule | Update a service schedule window. Pass only fields to change. |
| assign_staff_to_service | Assign a staff member to a booking service. Pass users.id from list_staff.userId. |
| link_resource_to_service | Link a room/resource to a booking service. |
| list_service_categories | List service categories (groups for booking services like "Treatments", "Classes"). |
| create_service_category | Create a service category (e.g. "Treatments", "Classes") to group bookable services. |
| create_resource | Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true. |
| set_resource_availability | Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks. |
| set_staff_availability | Add an availability window for a staff member (companyMembers.id). Use day-of-week + recurring for weekly schedules, or a specific date for one-off changes. |
| get_booking_settings | Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements. |
| update_booking_settings | Update global booking settings. Pass only the fields you want to change. |
| list_tickets | List support tickets with optional filters. |
| get_ticket_stats | Get ticket counts grouped by status. |
| create_ticket | Create a support ticket for a member issue. |
| update_ticket_status | Update the status of an existing support ticket. |
| list_deals | List CRM deals (sales pipeline) with optional filters. |
| update_deal_stage | Move a deal to a different pipeline stage. |
| list_contacts | List contacts (people linked to CRM accounts), optionally filtered by account or search. |
| get_contact | Fetch a single contact by ID. |
| create_contact | Create a contact on an existing CRM account. |
| update_contact | Update fields on an existing contact. |
| list_tasks | List tasks with optional status, assignee, and account filters. |
| create_task | Create a task. Optionally link to a CRM account or assign to a team member. |
| update_task | Update a task (status, priority, assignee, due date, completion). |
| send_whatsapp_message | Disabled for agents. Use request_send_approval so the merchant can approve the exact WhatsApp draft in Workroom. |
| search_crm | Search across CRM accounts and contacts by name, email, or phone. |
| list_invoices | List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date. |
| list_subscriptions | List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions. |
| list_campaigns | List marketing campaigns (email, SMS, WhatsApp) with delivery stats. |
| create_campaign | Create a marketing campaign (email, SMS, or WhatsApp) in DRAFT. For email channelConfig, use subject + htmlBody + optional plainTextBody. recipientSource="list" is accepted as an alias for "individual". |
| update_campaign | Update an existing campaign. Channel cannot be changed after creation. Pass only fields to change. |
| delete_campaign | Delete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history. |
| send_campaign | Disabled for agents. Use request_send_approval so the merchant can approve the exact campaign send in Workroom. |
| validate_campaign | Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending. |
| send_test_campaign | Disabled for agents. Use request_send_approval so the merchant can approve the exact test email in Workroom. |
| list_notification_logs | List notification delivery logs for the current company. Recipients are masked by default for incident-response safety. |
| list_conversations | List messaging conversations across channels (WhatsApp, SMS, email, etc). Shows unread counts and last message time. |
| create_broadcast | Create a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the Broadcasts page. |
| clone | Duplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer). Creates a copy in DRAFT status with "(Copy)" appended to the name. |
| list_notes | List notes attached to a member/account, booking, or ticket. |