FavCRM — Agentic CRM
**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](https://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](https://github.com/favcrm/mcp)
https://favcrm--favcrm.run.tools
How to connect
-
Smithery (hosted)
1. Open https://smithery.ai/servers/favcrm/favcrm 2. Click Connect and complete OAuth in your MCP client (Claude, Cursor, VS Code, etc.) 3. MCP endpoint: https://favcrm--favcrm.run.tools
Tools (50)
-
search_membersSearch 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_profileGet detailed profile for a specific member/account by ID.
-
list_tagsList all available tags for the merchant.
-
attach_tagsAttach one or more tags to a member/account. Useful for segmenting members after filtering.
-
list_tiersList all membership tiers with member counts and stats.
-
get_membership_tierGet a specific membership tier by ID.
-
issue_rewardsIssue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
-
enrol_membershipEnrol 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_balanceGet 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_pointsCredit 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_statsGet high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.
-
list_bookingsList bookings with filters for date range, status, service, staff, or member.
-
get_booking_detailGet full booking details including line items, status history, and participants.
-
get_booking_statsGet booking counts: today, this week, this month, and breakdown by status.
-
get_available_slotsFind available booking slots for a service on a specific date.
-
list_servicesList booking services with name, price, duration, and status.
-
get_service_detailGet full service details including addons, staff, resources, and tier pricing.
-
create_serviceCreate a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.
-
update_serviceUpdate an existing booking service. Pass only the fields you want to change.
-
create_service_scheduleCreate a bookable schedule window for a service, including recurring weekly/daily availability.
-
list_service_schedulesList schedule windows for booking services.
-
update_service_scheduleUpdate a service schedule window. Pass only fields to change.
-
assign_staff_to_serviceAssign a staff member to a booking service. Pass users.id from list_staff.userId.
-
link_resource_to_serviceLink a room/resource to a booking service.
-
list_service_categoriesList service categories (groups for booking services like "Treatments", "Classes").
-
create_service_categoryCreate a service category (e.g. "Treatments", "Classes") to group bookable services.
-
create_resourceCreate a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.
-
set_resource_availabilityAdd 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_availabilityAdd 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_settingsGet global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
-
update_booking_settingsUpdate global booking settings. Pass only the fields you want to change.
-
list_ticketsList support tickets with optional filters.
-
get_ticket_statsGet ticket counts grouped by status.
-
create_ticketCreate a support ticket for a member issue.
-
update_ticket_statusUpdate the status of an existing support ticket.
-
list_dealsList CRM deals (sales pipeline) with optional filters.
-
update_deal_stageMove a deal to a different pipeline stage.
-
list_contactsList contacts (people linked to CRM accounts), optionally filtered by account or search.
-
get_contactFetch a single contact by ID.
-
create_contactCreate a contact on an existing CRM account.
-
update_contactUpdate fields on an existing contact.
-
list_tasksList tasks with optional status, assignee, and account filters.
-
create_taskCreate a task. Optionally link to a CRM account or assign to a team member.
-
update_taskUpdate a task (status, priority, assignee, due date, completion).
-
send_whatsapp_messageDisabled for agents. Use request_send_approval so the merchant can approve the exact WhatsApp draft in Workroom.
-
search_crmSearch across CRM accounts and contacts by name, email, or phone.
-
list_invoicesList invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.
-
list_subscriptionsList member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.
-
list_campaignsList marketing campaigns (email, SMS, WhatsApp) with delivery stats.
-
create_campaignCreate 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".