favcrm avatar

FavCRM

favcrm/mcp

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 tools

Verified 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.

Parameters* required
createdAfterstring
ISO date — accounts created after this date
createdBeforestring
ISO date — accounts created before this date
hasBookingboolean
Filter to members with/without any booking
hasMembershipboolean
Filter to members with active membership
inactiveDaysnumber
Members with no activity in the last N days
lastActivityAfterstring
ISO date — members with activity after this date
lastActivityBeforestring
ISO date — members with no activity since this date
lastBookingAfterstring
ISO date — members who have a booking after this date
lastBookingBeforestring
ISO date — members whose last booking is before this date (or have no bookings)
lifeStagestring
Filter by life stageone of lead · active · churned · vip · prospect
limitnumber
Max results (default 20)
membershipStatusstring
Filter by membership statusone of active · expired · suspended
orderstring
Sort orderone of asc · desc
searchstring
Name, email, or phone to search
sortstring
Sort column: name, email, or createdAt
sourcestring
Filter by account sourceone of walk_in · online · pos · whatsapp · referral · import
tagIdsarray
Filter by tag IDs
tierIdstring
Filter by membership tier ID
get_member_profileGet detailed profile for a specific member/account by ID.1 params

Get detailed profile for a specific member/account by ID.

Parameters* required
accountId*string
The account ID
preview_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.

Parameters* required
filenamestring
Original filename for audit
rows*array
commit_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.

Parameters* required
rows*array
sessionId*string
sessionId from preview_customer_import
create_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.

Parameters* required
addressobject
Postal address
emailstring
Email address
enrollMembershipboolean
Whether to create an active membership immediately
expiresAtstring
Optional ISO expiry for the membership
firstNamestring
First name for individual accounts
lastNamestring
Last name for individual accounts
lifeStagestring
CRM life stage. Defaults to active.one of lead · active · churned · vip · prospect
name*string
Account/customer display name
notesstring
Internal notes
phonestring
Phone number
sourcestring
Acquisition source. Defaults to api.one of walk_in · online · pos · whatsapp · referral · import
tierIdstring
Membership tier ID to enroll into. If omitted, the company default tier may apply.
typestring
Account type. Defaults to individual.one of individual · business · household
update_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.

Parameters* required
accountId*string
The account ID to update
assignedTovalue
Assigned team member user ID, or null to clear
dateOfBirthvalue
YYYY-MM-DD date of birth, or null to clear
emailstring
Email address
firstNamevalue
First name for individual accounts
genderstring
Gender
lastNamevalue
Last name for individual accounts
lifeStagestring
CRM life stageone of lead · active · churned · vip · prospect
memberCodevalue
Merchant member code, or null to clear
namestring
Account/customer display name
notesstring
Internal notes
phonestring
Phone number
referredByAccountIdvalue
Referrer account ID, or null to clear
sourcestring
Acquisition sourceone of walk_in · online · pos · whatsapp · referral · import
typestring
Account typeone of individual · business · household
delete_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.

Parameters* required
accountId*string
The account ID to soft-delete
list_tagsList all available tags for the merchant.1 params

List all available tags for the merchant.

Parameters* required
searchstring
Search tags by name
create_tagCreate a CRM tag for customer segmentation and organization.2 params

Create a CRM tag for customer segmentation and organization.

Parameters* required
colorstring
Optional display color, e.g. #2563eb
name*string
Tag name
update_tagRename or recolor an existing CRM tag.3 params

Rename or recolor an existing CRM tag.

Parameters* required
colorvalue
New color, or null to clear
namestring
New tag name
tagId*string
The tag ID to update
delete_tagDelete a CRM tag and remove it from all tagged entities.1 params

Delete a CRM tag and remove it from all tagged entities.

Parameters* required
tagId*string
The tag ID to delete
attach_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.

Parameters* required
accountIds*array
Member/account IDs to tag (max 100)
tagId*string
Tag ID to attach
detach_tagsDetach one tag from one or more member/account records.2 params

Detach one tag from one or more member/account records.

Parameters* required
accountIds*array
Member/account IDs to untag (max 100)
tagId*string
Tag ID to detach
list_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.

Parameters* required
tierId*string
The tier ID
issue_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.

Parameters* required
expiresAtstring
Optional ISO date when the reward expires
giftOfferId*string
The gift offer/reward scheme ID to issue
memberIds*array
Member/account IDs to receive the reward (max 50)
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.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.

Parameters* required
accountId*string
The member/account ID to enrol
expiresAtstring
Optional ISO date to override the tier-computed expiry.
tierIdstring
The membership tier ID. Omit to enrol on the default no-tier membership.
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.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.

Parameters* required
accountId*string
The member/account ID
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.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.

Parameters* required
accountId*string
The member/account ID
amount*integer
Positive integer amount to credit
field*string
Which loyalty unit to creditone of points · stamps
reasonstring
Audit-trail reason (e.g. "Booking completed", "Manual adjustment")
get_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.

Parameters* required
accountIdstring
Filter by member/account ID
dateFromstring
ISO date — bookings from this date
dateTostring
ISO date — bookings up to this date
limitnumber
Max results (default 20)
serviceIdstring
Filter by service ID
staffIdstring
Filter by staff member ID
statusstring
Filter by booking statusone of draft · held · pending · confirmed · cancelled · completed
get_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.

Parameters* required
bookingId*string
The booking ID
get_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.

Parameters* required
date*string
ISO date to check (YYYY-MM-DD)
resourceIdstring
Optional: filter by specific resource
serviceId*string
The service to check availability for
staffIdstring
Optional: filter by specific staff member
list_servicesList booking services with name, price, duration, and status.3 params

List booking services with name, price, duration, and status.

Parameters* required
limitnumber
Max results (default 20)
searchstring
Search by name
statusstring
Filter by statusone of active · inactive · archived
get_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.

Parameters* required
serviceId*string
The service ID
get_service_tier_pricingRead every membership-tier pricing configuration for one booking service.1 params

Read every membership-tier pricing configuration for one booking service.

Parameters* required
serviceId*string
Booking service ID
set_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.

Parameters* required
advanceBookingDays*value
bookingLimits*value
discountPercent*value
priceOverride*value
serviceId*string
Booking service ID
tierId*string
Membership tier ID
timeSlotPricing*value
copy_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.

Parameters* required
serviceId*string
Booking service ID
sourceTierId*string
Membership tier to copy from
targetTierId*string
Membership tier to replace
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.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.

Parameters* required
allowedTierIdsarray
Required when visibility=members_only
capacitynumber
How many participants per slot (default 1)
categoryIdstring
Existing service category ID
commissionCurrencyvalue
Commission currency (ISO code)
commissionTypevalue
Commission type: "fixed" or "percentage"
commissionValuevalue
Commission amount as decimal string
cooldownMinutesnumber
Minimum gap before bookings can be cancelled (default 0)
currencystring
ISO currency code, default HKD
descriptionstring
Description
durationMinutes*number
Duration of one booking in minutes
name*string
Service name
pricestring
Decimal string, e.g. "80.00". Defaults to "0".
requireLoginboolean
Default true — guests cannot book
requiresConfirmationboolean
If true, bookings start as pending and need confirm_booking
requiresResourceboolean
Whether the service requires a resource (room/equipment)
requiresStaffboolean
Whether the service requires staff assignment
sortOrdernumber
Sort order (lower = earlier)
statusstring
Default activeone of active · inactive · archived
typestring
Default one_on_oneone of one_on_one · group · class
visibilitystring
Visibility: public | members_only | hiddenone of public · members_only · hidden
update_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.

Parameters* required
capacitynumber
Participants per slot
categoryIdvalue
Category ID
commissionCurrencyvalue
Commission currency (ISO code)
commissionTypevalue
Commission type: "fixed" or "percentage"
commissionValuevalue
Commission amount as decimal string
cooldownMinutesnumber
Cooldown minutes between bookings
descriptionstring
Description
durationMinutesnumber
Duration of one booking in minutes
namestring
Name
pricestring
Decimal string, e.g. "80.00"
requireLoginboolean
If true, guests cannot book without an account
requiresConfirmationboolean
If true, bookings start pending and need explicit confirmation
requiresResourceboolean
Whether the service requires a resource (room/equipment)
requiresStaffboolean
Whether the service requires staff assignment
serviceId*string
Service ID to update
statusstring
Status filterone of active · inactive · archived
visibilitystring
Visibility: public | members_only | hiddenone of public · members_only · hidden
create_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.

Parameters* required
byWeekdayarray
Weekdays for weekly recurrence: 0=Mon, 1=Tue, ... 6=Sun
date*string
Start date or one-off date (YYYY-MM-DD)
endTime*string
HH:MM (24h)
maxCapacitynumber
Max bookings per generated slot
notesstring
Free-form notes
recurrencestring
Default noneone of none · daily · weekly · monthly
recurrenceEndDatestring
YYYY-MM-DD
recurrenceIntervalnumber
Default 1
resourceIdstring
Optional resource ID to bind this schedule to a room/resource
serviceId*string
Service ID
staffIdstring
Optional companyMembers.id to bind this schedule to staff
startTime*string
HH:MM (24h)
list_service_schedulesList schedule windows for booking services.7 params

List schedule windows for booking services.

Parameters* required
dateFromstring
YYYY-MM-DD
dateTostring
YYYY-MM-DD
isOverrideboolean
Filter to override entries only
limitnumber
Max results (default 20)
resourceIdstring
Resource ID (room/equipment)
serviceIdstring
Service ID
staffIdstring
Staff member ID
update_service_scheduleUpdate a service schedule window. Pass only fields to change.12 params

Update a service schedule window. Pass only fields to change.

Parameters* required
byWeekdayvalue
Weekdays (0=Mon..6=Sun) for weekly recurrence
datestring
Date (YYYY-MM-DD)
endTimestring
End time (HH:mm)
maxCapacitynumber
Maximum capacity for this slot
notesvalue
Free-form notes
recurrencestring
Recurrence rule: none | daily | weekly | monthlyone of none · daily · weekly · monthly
recurrenceEndDatevalue
Recurrence end date (YYYY-MM-DD)
recurrenceIntervalnumber
Recurrence interval (e.g. every N weeks)
resourceIdvalue
Resource ID (room/equipment)
scheduleId*string
Schedule ID
staffIdvalue
Staff member ID
startTimestring
Start time (HH:mm)
assign_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.

Parameters* required
serviceId*string
Service ID
userId*string
users.id from list_staff.userId
link_resource_to_serviceLink a room/resource to a booking service.2 params

Link a room/resource to a booking service.

Parameters* required
resourceId*string
Resource ID
serviceId*string
Service ID
list_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.

Parameters* required
descriptionstring
Description
name*string
Category name
sortOrdernumber
Sort order (lower = earlier)
create_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.

Parameters* required
capacitynumber
How many concurrent bookings (default 1)
descriptionstring
Description
name*string
Resource name (e.g. "Treatment Room A")
statusstring
Default activeone of active · inactive
type*string
Free-form type label, e.g. "room", "equipment"
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.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.

Parameters* required
datestring
YYYY-MM-DD for a specific date instead of dayOfWeek
dayOfWeekstring
Day of week (0=Sun..6=Sat)one of mon · tue · wed · thu · fri · sat
endTime*string
HH:MM (24h)
isRecurringboolean
Default true
resourceId*string
Resource ID
startTime*string
HH:MM (24h)
typestring
Default availableone of available · blocked
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.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.

Parameters* required
datestring
YYYY-MM-DD for a specific date instead of dayOfWeek
dayOfWeekstring
Day of week (0=Sun..6=Sat)one of mon · tue · wed · thu · fri · sat
endTime*string
HH:MM (24h)
isRecurringboolean
Default true
memberId*string
companyMembers.id of the staff
startTime*string
HH:MM (24h)
typestring
Default availableone of available · blocked
get_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.

Parameters* required
accessPassAfterMinutesinteger
Minutes after booking end when the access QR remains usable
accessPassBeforeMinutesinteger
Minutes before booking start when the access QR becomes usable
allowMemberCancellationboolean
Allow members to cancel bookings from the customer portal
blockUntilFinishedboolean
Block customers from booking again while they have active bookings
bookingReminderEnabledboolean
Send the default pre-booking reminder
bookingReminderLeadHoursinteger
Hours before booking start for the default reminder
bookingReminderLeadHoursListarray
Up to four reminder leads in hours. Replaces the legacy pair when set. Empty turns customer reminders off. Leads must be at least 2 hours apart.
calendarStylestring
Booking flow calendar presentationone of list · calendar
cooldownMessagevalue
Optional message shown when cooldown blocks a booking
globalCooldownDaysvalue
Minimum days between customer bookings, or null to disable
hideUnavailableTimeslotsboolean
Hide unavailable timeslots instead of showing them as full
memberCancellationCutoffHoursvalue
Hours before booking start when member cancellation closes, or null for no cutoff
memberReschedulingModestring
Choose whether rescheduling is disabled, merchant-only, or available to membersone of disabled · merchant_only · member
minimumAdvanceBookingMinutesvalue
Minutes before slot start when customer booking closes. null/0 = no cutoff; set > 0 to require advance notice
premisePassCodevalue
One premise pass code for this company. Guest templates show it only when they include the pass code variable. Empty clears it.
requireBookingConfirmationboolean
Require merchant confirmation before bookings are confirmed
sameDayReminderEnabledboolean
Send an additional same-day reminder before booking start
sameDayReminderLeadHoursinteger
Hours before booking start for the same-day reminder
showAccessPassboolean
Show access pass/package options in booking flow
showCouponboolean
Show coupon field in booking flow
list_ticketsList support tickets with optional filters.6 params

List support tickets with optional filters.

Parameters* required
accountIdstring
Filter by CRM account ID
categorystring
Filter by categoryone of bug · feature_request · account · billing · general · other
limitnumber
Max results (default 20)
prioritystring
Filter by priorityone of critical · high · medium · low
searchstring
Search by subject
statusstring
Filter by statusone of open · in_progress · waiting_customer · resolved · closed
get_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.

Parameters* required
accountIdstring
Member/account ID this ticket is about
categorystring
Ticket categoryone of bug · feature_request · account · billing · general · other
contactEmailstring
Contact email if no account ID
contactNamestring
Contact name if no account ID
contactPhonestring
Contact phone if no account ID
descriptionstring
Detailed description of the issue
prioritystring
Ticket priorityone of critical · high · medium · low
sourcestring
Where the ticket originatedone of portal · email · phone · walk_in · api · mobile_app
subject*string
Ticket subject/title
update_ticket_statusUpdate the status of an existing support ticket.2 params

Update the status of an existing support ticket.

Parameters* required
status*string
New statusone of open · in_progress · waiting_customer · resolved · closed
ticketId*string
The ticket ID to update
list_surveysList surveys with optional status/search filters.3 params

List surveys with optional status/search filters.

Parameters* required
limitnumber
Max results (default 20)
searchstring
Search survey title or description
statusstring
Filter by survey statusone of draft · published · closed · archived
create_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.

Parameters* required
closeAtstring
Optional ISO datetime when the survey closes
descriptionstring
Optional survey description
openAtstring
Optional ISO datetime when the survey opens
questionBlocks*array
Ordered survey question blocks
settingsobject
Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage
slugstring
Optional URL slug; generated from title when omitted
statusstring
Initial statusone of draft · published · closed · archived
title*string
Survey title
visibilitystring
Who can access the surveyone of public · members_only · token_only · private
get_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.

Parameters* required
surveyId*string
Survey ID
update_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.

Parameters* required
closeAtvalue
Optional ISO datetime when the survey closes
descriptionvalue
Survey description
openAtvalue
Optional ISO datetime when the survey opens
questionBlocksarray
Ordered survey question blocks
settingsobject
Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage
slugstring
URL slug
statusstring
Survey statusone of draft · published · closed · archived
surveyId*string
Survey ID
titlestring
Survey title
visibilitystring
Survey access modeone of public · members_only · token_only · private
archive_surveyArchive a survey and remove it from active survey lists.1 params

Archive a survey and remove it from active survey lists.

Parameters* required
surveyId*string
Survey ID to archive
get_survey_statsGet response and invitation metrics for a survey overview dashboard.1 params

Get response and invitation metrics for a survey overview dashboard.

Parameters* required
surveyId*string
Survey ID
get_survey_responsesList responses for a survey.2 params

List responses for a survey.

Parameters* required
limitnumber
Max responses (default 50)
surveyId*string
Survey ID
list_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.

Parameters* required
limitnumber
Max invitations (default 50)
surveyId*string
Survey ID
create_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.

Parameters* required
accountIdstring
CRM account ID to invite
channelstring
Intended channel, e.g. email, sms, whatsapp, link
contactIdstring
Contact ID to invite
expiresAtstring
Optional invitation expiry ISO datetime
metadataobject
Optional invitation metadata
recipientEmailstring
Recipient email for link tracking
recipientNamestring
Recipient display name for link tracking
recipientPhonestring
Recipient phone for link tracking
surveyId*string
Survey ID
list_survey_workflowsList automation workflows attached to a survey.1 params

List automation workflows attached to a survey.

Parameters* required
surveyId*string
Survey ID
upsert_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.

Parameters* required
graph*object
Workflow graph definition
name*string
Workflow name
statusstring
Workflow statusone of draft · active · disabled
surveyId*string
Survey ID
triggerstring
Trigger name, default from graph.trigger
workflowIdstring
Existing workflow ID when updating
list_dealsList CRM deals (sales pipeline) with optional filters.6 params

List CRM deals (sales pipeline) with optional filters.

Parameters* required
accountIdstring
Filter by account
dealTypestring
Filter by deal type
limitnumber
Items per page (default 20)
pagenumber
Page number (default 1)
searchstring
Search by name or description
stagestring
Filter by stage
get_dealGet detailed CRM deal information by ID.1 params

Get detailed CRM deal information by ID.

Parameters* required
dealId*string
The deal ID
create_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.

Parameters* required
accountIdvalue
Linked CRM account ID
amountvalue
Deal amount
closingDatevalue
Expected closing date
contactIdvalue
Linked contact ID
dealTypevalue
Deal type/category
descriptionvalue
Deal notes or description
name*string
Deal name
ownerIdvalue
Owner user/team member ID
probabilityvalue
Win probability, e.g. 25
stagevalue
Pipeline stage
update_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.

Parameters* required
accountIdvalue
Linked CRM account ID, or null to clear
amountvalue
Deal amount, or null to clear
closingDatevalue
Expected closing date, or null to clear
contactIdvalue
Linked contact ID, or null to clear
dealId*string
The deal ID
dealTypevalue
Deal type/category, or null to clear
descriptionvalue
Deal notes or description, or null to clear
namestring
Deal name
ownerIdvalue
Owner user/team member ID, or null to clear
probabilityvalue
Win probability, or null to clear
stagevalue
Pipeline stage, or null to clear
delete_dealSoft-delete a CRM deal from the sales pipeline.1 params

Soft-delete a CRM deal from the sales pipeline.

Parameters* required
dealId*string
The deal ID to delete
update_deal_stageMove a deal to a different pipeline stage.4 params

Move a deal to a different pipeline stage.

Parameters* required
dealId*string
The deal ID
lostReasonstring
Required when moving to lost
probabilitystring
Optional win probability (percent string)
stage*string
New pipeline stage. "lead", "new" and "open" are accepted aliases of "discovery".one of discovery · qualified · proposal · negotiation · won · lost
mark_deal_wonMark a CRM deal as won and set close date.2 params

Mark a CRM deal as won and set close date.

Parameters* required
closingDatestring
Optional close date (YYYY-MM-DD)
dealId*string
The deal ID
mark_deal_lostMark a CRM deal as lost. Requires a lost reason.2 params

Mark a CRM deal as lost. Requires a lost reason.

Parameters* required
dealId*string
The deal ID
reason*string
Why the deal was lost
convert_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.

Parameters* required
accountId*string
Lead account ID
createDealboolean
Deprecated and ignored — a convert always links a deal
dealAmountnumber
Optional deal amount
dealClosingDatestring
Optional deal close date
dealNamestring
Optional deal name
dealStagestring
Optional initial deal stage ("lead" is an alias of "discovery")one of discovery · qualified · proposal · negotiation · won · lost
lifeStagestring
Lifecycle after convert (default active)one of active · vip
list_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.

Parameters* required
accountIdstring
Filter by account
limitnumber
Max results (default 20)
searchstring
Match name, email, or phone
get_contactFetch a single contact by ID.1 params

Fetch a single contact by ID.

Parameters* required
contactId*string
The contact ID
create_contactCreate a contact on an existing CRM account.6 params

Create a contact on an existing CRM account.

Parameters* required
accountId*string
Owning account ID
emailstring
Email
isPrimaryboolean
Mark as primary contact
jobTitlestring
Job title
name*string
Contact name
phonestring
Phone
update_contactUpdate fields on an existing contact.6 params

Update fields on an existing contact.

Parameters* required
contactId*string
The contact ID
emailstring
Email address
isPrimaryboolean
Mark as the primary contact
jobTitlestring
Job title
namestring
Name
phonestring
Phone number
set_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.

Parameters* required
contactId*string
The contact ID to make primary
delete_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.

Parameters* required
contactId*string
The contact ID to delete
list_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.

Parameters* required
entityType*string
Entity type the custom fields belong toone of account · contact · deal · booking · ticket · product
get_custom_fieldGet a custom field definition by ID.1 params

Get a custom field definition by ID.

Parameters* required
definitionId*string
Custom field definition ID
create_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.

Parameters* required
entityType*string
Entity type, e.g. account, contact, deal, bookingone of account · contact · deal · booking · ticket · product
fieldLabel*string
Human-readable label, e.g. Preferred branch
fieldName*string
Stable machine name, e.g. preferred_branch
fieldType*string
Field typeone of text · number · date · select · multiselect · boolean
isRequiredboolean
Whether this field is required
optionsarray
Allowed values for select/multiselect fields
sortOrdernumber
Display order
update_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.

Parameters* required
definitionId*string
Custom field definition ID
fieldLabelstring
Human-readable label
fieldTypestring
Field typeone of text · number · date · select · multiselect · boolean
isRequiredboolean
Whether this field is required
optionsarray
Allowed values for select/multiselect fields
sortOrdernumber
Display order
delete_custom_fieldDelete a custom field definition and its stored values.1 params

Delete a custom field definition and its stored values.

Parameters* required
definitionId*string
Custom field definition ID
get_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.

Parameters* required
entityId*string
Entity ID
entityType*string
Entity typeone of account · contact · deal · booking · ticket · product
set_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.

Parameters* required
entityId*string
Entity ID
entityType*string
Entity typeone of account · contact · deal · booking · ticket · product
values*array
Values to upsert

Sponsors

Readme

FavCRM MCP

smithery badge

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:

  • compact exposes a small search_tools + execute_tool discovery/router surface for large-agent runtimes.
  • platform exposes only superadmin customer-workspace and company-setup operations, works without an active merchant company, and never exposes raw SQL.
  • full remains the default for clients and scanners.

View the full README on GitHub

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

Related Sales & Marketing MCP servers

View all
1antonioblago avatarVisibly AI — SEO MCP Serverantonioblago/claude-code-seo-starterRemote SEO/GEO MCP: Search Console, keyword research, backlinks, competitor & on-page audits.0stars
2br0ski777 avatarEmail Finder APIbr0ski777/email-finder-x402Find email addresses from name and company domain. x402 paid.0stars
3bricepourle13 avatarMerx — European Business Databricepourle13/merxprotocolEuropean business data — French company check, EU VAT validation, legal search.0stars
4carlosalvite avatarFoundersignalcarlosalvite/foundersignal-mcpFind SaaS ideas worth building. Revenue data, growth signals and pain points from 10+ sources.0stars
5ernestalabs avatarForage - MCP Server for AI Agentsernestalabs/web-intelligence-mcpWeb intelligence, verified B2B contacts, and a persistent knowledge graph for AI agents.0stars
6leaddelta avatarLeadDelta MCP Serverleaddelta/ld-mcp-serverMCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.0stars