
FavCRM
Plugs service business CRM operations directly into Claude via 194 typed tools over streamable HTTP. Handles the full customer lifecycle: search members, book appointments with slot availability checks, enroll loyalty tiers, create invoices, process payments, send WhatsApp campaigns. Ships with agentic registration so your AI can sign you up without touching a web form. Tools are annotated with readOnlyHint and destructiveHint flags so clients can gate writes appropriately. Free tier covers 100 customers and 200 bookings per month. Works in Cursor, Smithery, and Windsurf today. Includes portable skill packages for booking ops, sales workflows, and comms approval that codify FavCRM best practices for agents.
- tools
- 80
- auth
- Secret needed
- transport
- HTTP
- last updated
- Jun 8, 2026
Install
From registry metadata$ npx add-mcp https://api.favcrm.io/mcp --name favcrm --header 'Authorization: Bearer ${API_TOKEN}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http favcrm https://api.favcrm.io/mcp --header 'Authorization: YOUR_AUTHORIZATION'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 80 toolsVerified live against the running server on Nov 6, 2026.
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.18 params
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.
createdAfterstringcreatedBeforestringhasBookingbooleanhasMembershipbooleaninactiveDaysnumberlastActivityAfterstringlastActivityBeforestringlastBookingAfterstringlastBookingBeforestringlifeStagestringlead · active · churned · vip · prospectlimitnumbermembershipStatusstringactive · expired · suspendedorderstringasc · descsearchstringsortstringsourcestringwalk_in · online · pos · whatsapp · referral · importtagIdsarraytierIdstringget_member_profileGet detailed profile for a specific member/account by ID.1 params
Get detailed profile for a specific member/account by ID.
accountId*stringpreview_customer_importPreview a bulk customer import (max 2000 rows). Matches existing accounts by phone/email and shows create vs update actions plus points/stamps/credit deltas. Use commit_customer_import with the returned sessionId to apply.2 params
Preview a bulk customer import (max 2000 rows). Matches existing accounts by phone/email and shows create vs update actions plus points/stamps/credit deltas. Use commit_customer_import with the returned sessionId to apply.
filenamestringrows*arraycommit_customer_importCommit a previewed customer import. Pass the same rows and sessionId returned by preview_customer_import. Creates/updates accounts and applies points, stamps, and credit deltas.2 params
Commit a previewed customer import. Pass the same rows and sessionId returned by preview_customer_import. Creates/updates accounts and applies points, stamps, and credit deltas.
rows*arraysessionId*stringcreate_accountCreate a CRM account/customer with a primary contact. Optionally enroll the account as a member; use enrol_membership later when the account already exists.13 params
Create a CRM account/customer with a primary contact. Optionally enroll the account as a member; use enrol_membership later when the account already exists.
addressobjectemailstringenrollMembershipbooleanexpiresAtstringfirstNamestringlastNamestringlifeStagestringlead · active · churned · vip · prospectname*stringnotesstringphonestringsourcestringwalk_in · online · pos · whatsapp · referral · importtierIdstringtypestringindividual · business · householdupdate_accountUpdate CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.15 params
Update CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.
accountId*stringassignedTovaluedateOfBirthvalueemailstringfirstNamevaluegenderstringlastNamevaluelifeStagestringlead · active · churned · vip · prospectmemberCodevaluenamestringnotesstringphonestringreferredByAccountIdvaluesourcestringwalk_in · online · pos · whatsapp · referral · importtypestringindividual · business · householddelete_accountSoft-delete a CRM account/customer. This releases the primary phone for future reuse while keeping account history for audit.1 params
Soft-delete a CRM account/customer. This releases the primary phone for future reuse while keeping account history for audit.
accountId*stringlist_tagsList all available tags for the merchant.1 params
List all available tags for the merchant.
searchstringcreate_tagCreate a CRM tag for customer segmentation and organization.2 params
Create a CRM tag for customer segmentation and organization.
colorstringname*stringupdate_tagRename or recolor an existing CRM tag.3 params
Rename or recolor an existing CRM tag.
colorvaluenamestringtagId*stringdelete_tagDelete a CRM tag and remove it from all tagged entities.1 params
Delete a CRM tag and remove it from all tagged entities.
tagId*stringattach_tagsAttach one or more tags to a member/account. Useful for segmenting members after filtering.2 params
Attach one or more tags to a member/account. Useful for segmenting members after filtering.
accountIds*arraytagId*stringdetach_tagsDetach one tag from one or more member/account records.2 params
Detach one tag from one or more member/account records.
accountIds*arraytagId*stringlist_tiersList all membership tiers with member counts and stats.
List all membership tiers with member counts and stats.
No parameters. Call it with no arguments.
get_membership_tierGet a specific membership tier by ID.1 params
Get a specific membership tier by ID.
tierId*stringissue_rewardsIssue a gift/reward to multiple members. Requires a gift offer ID and member IDs.3 params
Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
expiresAtstringgiftOfferId*stringmemberIds*arrayenrol_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.3 params
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.
accountId*stringexpiresAtstringtierIdstringget_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.1 params
Get a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier. Returns null if the member is not enrolled.
accountId*stringearn_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.4 params
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.
accountId*stringamount*integerfield*stringpoints · stampsreasonstringget_dashboard_statsGet high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.
Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.
No parameters. Call it with no arguments.
list_bookingsList bookings with filters for date range, status, service, staff, or member.7 params
List bookings with filters for date range, status, service, staff, or member.
accountIdstringdateFromstringdateTostringlimitnumberserviceIdstringstaffIdstringstatusstringdraft · held · pending · confirmed · cancelled · completedget_booking_detailGet full booking details including line items, status history, and participants.1 params
Get full booking details including line items, status history, and participants.
bookingId*stringget_booking_statsGet booking counts: today, this week, this month, and breakdown by status.
Get booking counts: today, this week, this month, and breakdown by status.
No parameters. Call it with no arguments.
get_available_slotsFind available booking slots for a service on a specific date.4 params
Find available booking slots for a service on a specific date.
date*stringresourceIdstringserviceId*stringstaffIdstringlist_servicesList booking services with name, price, duration, and status.3 params
List booking services with name, price, duration, and status.
limitnumbersearchstringstatusstringactive · inactive · archivedget_service_detailGet full service details including addons, staff, resources, and tier pricing.1 params
Get full service details including addons, staff, resources, and tier pricing.
serviceId*stringget_service_tier_pricingRead every membership-tier pricing configuration for one booking service.1 params
Read every membership-tier pricing configuration for one booking service.
serviceId*stringset_service_tier_pricingSet the complete pricing and booking-policy configuration for one membership tier on a booking service.7 params
Set the complete pricing and booking-policy configuration for one membership tier on a booking service.
advanceBookingDays*valuebookingLimits*valuediscountPercent*valuepriceOverride*valueserviceId*stringtierId*stringtimeSlotPricing*valuecopy_service_tier_pricingCopy the complete pricing and booking-policy configuration from one membership tier to another on the same booking service.3 params
Copy the complete pricing and booking-policy configuration from one membership tier to another on the same booking service.
serviceId*stringsourceTierId*stringtargetTierId*stringcreate_serviceCreate a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.20 params
Create a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.
allowedTierIdsarraycapacitynumbercategoryIdstringcommissionCurrencyvaluecommissionTypevaluecommissionValuevaluecooldownMinutesnumbercurrencystringdescriptionstringdurationMinutes*numbername*stringpricestringrequireLoginbooleanrequiresConfirmationbooleanrequiresResourcebooleanrequiresStaffbooleansortOrdernumberstatusstringactive · inactive · archivedtypestringone_on_one · group · classvisibilitystringpublic · members_only · hiddenupdate_serviceUpdate an existing booking service. Pass only the fields you want to change.17 params
Update an existing booking service. Pass only the fields you want to change.
capacitynumbercategoryIdvaluecommissionCurrencyvaluecommissionTypevaluecommissionValuevaluecooldownMinutesnumberdescriptionstringdurationMinutesnumbernamestringpricestringrequireLoginbooleanrequiresConfirmationbooleanrequiresResourcebooleanrequiresStaffbooleanserviceId*stringstatusstringactive · inactive · archivedvisibilitystringpublic · members_only · hiddencreate_service_scheduleCreate a bookable schedule window for a service, including recurring weekly/daily availability.12 params
Create a bookable schedule window for a service, including recurring weekly/daily availability.
byWeekdayarraydate*stringendTime*stringmaxCapacitynumbernotesstringrecurrencestringnone · daily · weekly · monthlyrecurrenceEndDatestringrecurrenceIntervalnumberresourceIdstringserviceId*stringstaffIdstringstartTime*stringlist_service_schedulesList schedule windows for booking services.7 params
List schedule windows for booking services.
dateFromstringdateTostringisOverridebooleanlimitnumberresourceIdstringserviceIdstringstaffIdstringupdate_service_scheduleUpdate a service schedule window. Pass only fields to change.12 params
Update a service schedule window. Pass only fields to change.
byWeekdayvaluedatestringendTimestringmaxCapacitynumbernotesvaluerecurrencestringnone · daily · weekly · monthlyrecurrenceEndDatevaluerecurrenceIntervalnumberresourceIdvaluescheduleId*stringstaffIdvaluestartTimestringassign_staff_to_serviceAssign a staff member to a booking service. Pass users.id from list_staff.userId.2 params
Assign a staff member to a booking service. Pass users.id from list_staff.userId.
serviceId*stringuserId*stringlink_resource_to_serviceLink a room/resource to a booking service.2 params
Link a room/resource to a booking service.
resourceId*stringserviceId*stringlist_service_categoriesList service categories (groups for booking services like "Treatments", "Classes").
List service categories (groups for booking services like "Treatments", "Classes").
No parameters. Call it with no arguments.
create_service_categoryCreate a service category (e.g. "Treatments", "Classes") to group bookable services.3 params
Create a service category (e.g. "Treatments", "Classes") to group bookable services.
descriptionstringname*stringsortOrdernumbercreate_resourceCreate a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.5 params
Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.
capacitynumberdescriptionstringname*stringstatusstringactive · inactivetype*stringset_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.7 params
Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks.
datestringdayOfWeekstringmon · tue · wed · thu · fri · satendTime*stringisRecurringbooleanresourceId*stringstartTime*stringtypestringavailable · blockedset_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.7 params
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.
datestringdayOfWeekstringmon · tue · wed · thu · fri · satendTime*stringisRecurringbooleanmemberId*stringstartTime*stringtypestringavailable · blockedget_booking_settingsGet global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
No parameters. Call it with no arguments.
update_booking_settingsUpdate global booking settings. Pass only the fields you want to change.20 params
Update global booking settings. Pass only the fields you want to change.
accessPassAfterMinutesintegeraccessPassBeforeMinutesintegerallowMemberCancellationbooleanblockUntilFinishedbooleanbookingReminderEnabledbooleanbookingReminderLeadHoursintegerbookingReminderLeadHoursListarraycalendarStylestringlist · calendarcooldownMessagevalueglobalCooldownDaysvaluehideUnavailableTimeslotsbooleanmemberCancellationCutoffHoursvaluememberReschedulingModestringdisabled · merchant_only · memberminimumAdvanceBookingMinutesvaluepremisePassCodevaluerequireBookingConfirmationbooleansameDayReminderEnabledbooleansameDayReminderLeadHoursintegershowAccessPassbooleanshowCouponbooleanlist_ticketsList support tickets with optional filters.6 params
List support tickets with optional filters.
accountIdstringcategorystringbug · feature_request · account · billing · general · otherlimitnumberprioritystringcritical · high · medium · lowsearchstringstatusstringopen · in_progress · waiting_customer · resolved · closedget_ticket_statsGet ticket counts grouped by status.
Get ticket counts grouped by status.
No parameters. Call it with no arguments.
create_ticketCreate a support ticket for a member issue.9 params
Create a support ticket for a member issue.
accountIdstringcategorystringbug · feature_request · account · billing · general · othercontactEmailstringcontactNamestringcontactPhonestringdescriptionstringprioritystringcritical · high · medium · lowsourcestringportal · email · phone · walk_in · api · mobile_appsubject*stringupdate_ticket_statusUpdate the status of an existing support ticket.2 params
Update the status of an existing support ticket.
status*stringopen · in_progress · waiting_customer · resolved · closedticketId*stringlist_surveysList surveys with optional status/search filters.3 params
List surveys with optional status/search filters.
limitnumbersearchstringstatusstringdraft · published · closed · archivedcreate_surveyCreate a survey with custom question blocks. Publish it later or set status to published for immediate portal access.9 params
Create a survey with custom question blocks. Publish it later or set status to published for immediate portal access.
closeAtstringdescriptionstringopenAtstringquestionBlocks*arraysettingsobjectslugstringstatusstringdraft · published · closed · archivedtitle*stringvisibilitystringpublic · members_only · token_only · privateget_surveyGet survey detail, including blocks, publishing status, visibility, settings, and response count.1 params
Get survey detail, including blocks, publishing status, visibility, settings, and response count.
surveyId*stringupdate_surveyUpdate a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.10 params
Update a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.
closeAtvaluedescriptionvalueopenAtvaluequestionBlocksarraysettingsobjectslugstringstatusstringdraft · published · closed · archivedsurveyId*stringtitlestringvisibilitystringpublic · members_only · token_only · privatearchive_surveyArchive a survey and remove it from active survey lists.1 params
Archive a survey and remove it from active survey lists.
surveyId*stringget_survey_statsGet response and invitation metrics for a survey overview dashboard.1 params
Get response and invitation metrics for a survey overview dashboard.
surveyId*stringget_survey_responsesList responses for a survey.2 params
List responses for a survey.
limitnumbersurveyId*stringlist_survey_invitationsList survey invitation history without exposing token hashes or old invitation tokens.2 params
List survey invitation history without exposing token hashes or old invitation tokens.
limitnumbersurveyId*stringcreate_survey_invitationCreate a token-auth survey invitation for a specific member/account or contact.9 params
Create a token-auth survey invitation for a specific member/account or contact.
accountIdstringchannelstringcontactIdstringexpiresAtstringmetadataobjectrecipientEmailstringrecipientNamestringrecipientPhonestringsurveyId*stringlist_survey_workflowsList automation workflows attached to a survey.1 params
List automation workflows attached to a survey.
surveyId*stringupsert_survey_workflowCreate or update a survey automation workflow, usually triggered by survey_response_submitted.6 params
Create or update a survey automation workflow, usually triggered by survey_response_submitted.
graph*objectname*stringstatusstringdraft · active · disabledsurveyId*stringtriggerstringworkflowIdstringlist_dealsList CRM deals (sales pipeline) with optional filters.6 params
List CRM deals (sales pipeline) with optional filters.
accountIdstringdealTypestringlimitnumberpagenumbersearchstringstagestringget_dealGet detailed CRM deal information by ID.1 params
Get detailed CRM deal information by ID.
dealId*stringcreate_dealCreate a CRM sales pipeline deal, optionally linked to a customer account and contact.10 params
Create a CRM sales pipeline deal, optionally linked to a customer account and contact.
accountIdvalueamountvalueclosingDatevaluecontactIdvaluedealTypevaluedescriptionvaluename*stringownerIdvalueprobabilityvaluestagevalueupdate_dealUpdate a CRM deal. Pass only fields to change; use null for nullable links/fields to clear them.11 params
Update a CRM deal. Pass only fields to change; use null for nullable links/fields to clear them.
accountIdvalueamountvalueclosingDatevaluecontactIdvaluedealId*stringdealTypevaluedescriptionvaluenamestringownerIdvalueprobabilityvaluestagevaluedelete_dealSoft-delete a CRM deal from the sales pipeline.1 params
Soft-delete a CRM deal from the sales pipeline.
dealId*stringupdate_deal_stageMove a deal to a different pipeline stage.4 params
Move a deal to a different pipeline stage.
dealId*stringlostReasonstringprobabilitystringstage*stringdiscovery · qualified · proposal · negotiation · won · lostmark_deal_wonMark a CRM deal as won and set close date.2 params
Mark a CRM deal as won and set close date.
closingDatestringdealId*stringmark_deal_lostMark a CRM deal as lost. Requires a lost reason.2 params
Mark a CRM deal as lost. Requires a lost reason.
dealId*stringreason*stringconvert_leadConvert an account: qualify its open lead (creating one if needed) and link exactly one pipeline deal. Also promotes lifeStage lead -> active. Safe to repeat — a second call lands on the same lead and deal. Works on accounts that are already active.7 params
Convert an account: qualify its open lead (creating one if needed) and link exactly one pipeline deal. Also promotes lifeStage lead -> active. Safe to repeat — a second call lands on the same lead and deal. Works on accounts that are already active.
accountId*stringcreateDealbooleandealAmountnumberdealClosingDatestringdealNamestringdealStagestringdiscovery · qualified · proposal · negotiation · won · lostlifeStagestringactive · viplist_contactsList contacts (people linked to CRM accounts), optionally filtered by account or search.3 params
List contacts (people linked to CRM accounts), optionally filtered by account or search.
accountIdstringlimitnumbersearchstringget_contactFetch a single contact by ID.1 params
Fetch a single contact by ID.
contactId*stringcreate_contactCreate a contact on an existing CRM account.6 params
Create a contact on an existing CRM account.
accountId*stringemailstringisPrimarybooleanjobTitlestringname*stringphonestringupdate_contactUpdate fields on an existing contact.6 params
Update fields on an existing contact.
contactId*stringemailstringisPrimarybooleanjobTitlestringnamestringphonestringset_primary_contactSet a contact as the primary contact for its CRM account and demote other contacts on that account.1 params
Set a contact as the primary contact for its CRM account and demote other contacts on that account.
contactId*stringdelete_contactDelete a secondary contact. Primary contacts are protected; set another primary contact or delete the account instead.1 params
Delete a secondary contact. Primary contacts are protected; set another primary contact or delete the account instead.
contactId*stringlist_custom_fieldsList custom field definitions for CRM entities such as account, contact, deal, or booking.1 params
List custom field definitions for CRM entities such as account, contact, deal, or booking.
entityType*stringaccount · contact · deal · booking · ticket · productget_custom_fieldGet a custom field definition by ID.1 params
Get a custom field definition by ID.
definitionId*stringcreate_custom_fieldCreate a custom field definition for CRM entities. Use options for select or multiselect fields.7 params
Create a custom field definition for CRM entities. Use options for select or multiselect fields.
entityType*stringaccount · contact · deal · booking · ticket · productfieldLabel*stringfieldName*stringfieldType*stringtext · number · date · select · multiselect · booleanisRequiredbooleanoptionsarraysortOrdernumberupdate_custom_fieldUpdate a custom field definition label, type, options, required flag, or sort order.6 params
Update a custom field definition label, type, options, required flag, or sort order.
definitionId*stringfieldLabelstringfieldTypestringtext · number · date · select · multiselect · booleanisRequiredbooleanoptionsarraysortOrdernumberdelete_custom_fieldDelete a custom field definition and its stored values.1 params
Delete a custom field definition and its stored values.
definitionId*stringget_custom_field_valuesGet custom field values for a CRM entity such as an account, contact, deal, or booking.2 params
Get custom field values for a CRM entity such as an account, contact, deal, or booking.
entityId*stringentityType*stringaccount · contact · deal · booking · ticket · productset_custom_field_valuesSet or clear custom field values for a CRM entity. Values are stored as strings; pass null to clear a value.3 params
Set or clear custom field values for a CRM entity. Values are stored as strings; pass null to clear a value.
entityId*stringentityType*stringaccount · contact · deal · booking · ticket · productvalues*arraySponsors
Readme
FavCRM MCP
Install snippets, examples, and docs for the FavCRM Model Context Protocol server. The server itself is hosted at
https://api.favcrm.io/mcp— this repo is for client setup and community examples.
231 typed tools — customers, bookings, events, loyalty, invoices, payments, WhatsApp / SMS / email — exposed via MCP. Works with any agentic client that speaks Streamable HTTP transport.
The endpoint supports purpose-built tool profiles selected with ?profile=<name> or X-FavCRM-MCP-Profile:
compactexposes a smallsearch_tools+execute_tooldiscovery/router surface for large-agent runtimes.platformexposes only superadmin customer-workspace and company-setup operations, works without an active merchant company, and never exposes raw SQL.fullremains the default for clients and scanners.
Details
- Repository
- github.com/favcrm/mcp
- Website
- favcrm.io
- Categories
- Sales & Marketing, AI & LLM Tools, Communication & Messaging, Finance & Commerce
- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Resources
- 5
- Prompts
- 37
- Tools verified
- Nov 6, 2026