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)
- Version:
- hosted
- Publisher:
- favcrm
Install
Generated from the server’s transport data — never hand-written. Placeholders in angle brackets are yours to fill.
Hosted — https://favcrm--favcrm.run.tools
claude mcp add --transport http favcrm-agentic-crm https://favcrm--favcrm.run.toolsWhat it can do
As declared by the publisher
Tools · 132
append_post_blockAppend one or more blocks to the end of a post. Each block must be a valid block object: { id, version, type, data }. Types: paragraph, heading, image, list, quote, code, divider, spacer, embed, file, faq, callout, gallery, cta, accordion, product.
assign_staff_to_serviceAssign a staff member to a booking service. Pass users.id from list\_staff.userId.
attach_post_cover_from_jobAttach a previously generated ai-media job's output as the post's featuredImage. Use when generate\_post\_cover timed out (job kept running) or when reusing the same generation across multiple posts. Verifies the job belongs to your company and succeeded. Does NOT charge credits — credits were charged at submit time.
attach_tagsAttach one or more tags to a member/account. Useful for segmenting members after filtering.
cancel_bookingCancel a booking. Optionally provide a reason.
cloneDuplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer). Creates a copy in DRAFT status with "(Copy)" appended to the name.
complete_bookingMark a booking as completed. Triggers commission calculation if configured.
confirm_bookingConfirm a pending booking.
create_bookingCreate a new booking for a member. Use get\_available\_slots first to find valid times, then create the booking with the service, member, date, and time.
create_broadcastCreate a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the Broadcasts page.
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".
create_categoryCreate a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the table is flat.
create_contactCreate a contact on an existing CRM account.
create_noteAdd a note to a member/account, booking, ticket, or invoice.
create_offer_ruleCreate an upsell/cross-sell offer rule as draft. Specify trigger type, conditions, and suggested products with optional discounts.
create_postCreate a new CMS post (blog\_post, page, or any custom post type). The post type must already exist — use list\_post\_types to discover, create\_post\_type to add a new one. excerpt = plain-text summary only (auto-derived from blocks if omitted). Structured custom fields go in meta, keyed by the field schema defined with create\_post\_type\_field.
create_post_typeDefine a new custom post type (e.g. "treatment", "service"). Required before creating posts of that type. After creating a post type, use create\_post\_type\_field to define its structured field schema. Those fields are stored in meta on each post — do not use excerpt for structured data.
create_post_type_fieldAdd a custom field to a post type schema. The field key becomes the key in meta when creating/updating posts. Use fieldType="repeater" with fields=\[...] for repeatable structured rows. Use this instead of storing structured data in excerpt.
create_productCreate a new shop product as DRAFT. Merchant can review and activate from the portal.
create_product_categoryCreate a product category. Use parentId to create subcategories under an existing category.
create_promotionCreate a promotion / discount code. type=percentage or fixed\_amount; value is the discount as a string ("10" = 10% or 10 currency units). Codes are uppercased server-side.
create_resourceCreate a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.
create_segmentCreate a new customer segment. Use STATIC for manual member lists, DYNAMIC for criteria-based auto-filtering.
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.
create_service_categoryCreate a service category (e.g. "Treatments", "Classes") to group bookable services.
create_service_packageCreate a service package/prepaid session bundle. Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events.
create_service_scheduleCreate a bookable schedule window for a service, including recurring weekly/daily availability.
create_taskCreate a task. Optionally link to a CRM account or assign to a team member.
create_ticketCreate a support ticket for a member issue.
create_variationAdd a variation (size, color, etc.) to an existing product.
delete_campaignDelete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history.
delete_categoryDelete a CMS post category. Posts in the category are not deleted; they are simply unlinked.
delete_postDelete a CMS post by ID. Permanent — categories detach automatically (cascade), but blocks/meta are not recoverable.
delete_post_typeDelete a custom post type. Built-in types cannot be deleted. Fails if any posts of this type still exist — delete those first.
delete_post_type_fieldRemove a field from a post type schema. Blocked when posts of this type still have data in the field unless force=true is passed (orphans the data).
delete_promotionDelete a promotion. Past usage records are preserved.
delete_service_packageDelete a service package by 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.
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.
find_or_create_workroom_threadFind or create a Workroom DM thread between a merchant user and an AI colleague. Use this when an inbound event deserves owner attention but no threadId was provided. This only prepares an internal Workroom channel.
generate_imageGenerate an AI image via kie.ai and return its public R2 URL. Use to mint reusable URLs for content blocks (image, gallery), product photos, or any field that takes an image URL — does NOT attach to a post by itself. Costs credits (see list\_image\_models). On poll timeout the job continues running; pass `jobId` from the response to merchant ai-media APIs to retrieve it later.
generate_post_coverGenerate an AI image and attach it as a post's featuredImage. Submits a kie.ai job, polls until complete, copies the result into the canonical post-asset R2 folder, and writes the public URL onto the post. Costs credits (see list\_image\_models). On poll timeout, the job continues — call attach\_post\_cover\_from\_job(postId, jobId) once it finishes to attach without paying again.
get_available_slotsFind available booking slots for a service on a specific date.
get_booking_detailGet full booking details including line items, status history, and participants.
get_booking_settingsGet global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
get_booking_statsGet booking counts: today, this week, this month, and breakdown by status.
get_contactFetch a single contact by ID.
get_conversation_messagesGet messages from a specific conversation thread. Shows the chat history between the merchant and a contact.
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_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.
get_member_profileGet detailed profile for a specific member/account by ID.
get_membership_tierGet a specific membership tier by ID.
get_offer_ruleGet offer rule detail including associated products and discounts.
get_orderGet full order detail including line items.
get_postGet detailed CMS post including content blocks, categories, and tags.
get_productGet full product detail including images, options, and variations.
get_promotionGet details of a specific promotion/coupon code.
get_segment_membersGet the members that belong to a specific segment.
get_service_detailGet full service details including addons, staff, resources, and tier pricing.
get_service_packageGet service package detail including applicability and selected booking service/event items.
get_ticket_statsGet ticket counts grouped by status.
issue_rewardsIssue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
link_resource_to_serviceLink a room/resource to a booking service.
list_bookingsList bookings with filters for date range, status, service, staff, or member.
list_campaignsList marketing campaigns (email, SMS, WhatsApp) with delivery stats.
list_categoriesList CMS post categories.
list_contactsList contacts (people linked to CRM accounts), optionally filtered by account or search.
list_conversationsList messaging conversations across channels (WhatsApp, SMS, email, etc). Shows unread counts and last message time.
list_dealsList CRM deals (sales pipeline) with optional filters.
list_image_modelsList AI image-generation models exposed to merchants (sanitized — provider/cost details hidden). Use to pick a `modelCode` for `generate_post_cover`.
list_invoicesList invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.
list_knowledge_documentsList merchant knowledge base documents (uploads + scraped URLs). Use to discover what raw sources exist for the LLM-wiki pattern. Pass `updatedAfter` for delta sync. Content bytes are fetched separately via GET /v6/merchant/ai/knowledge/{id}/content — this tool returns metadata only.
list_my_companiesList all companies/organisations the current user has access to. Use this to see available orgs before switching.
list_notesList notes attached to a member/account, booking, or ticket.
list_notification_logsList notification delivery logs for the current company. Recipients are masked by default for incident-response safety.
list_offer_rulesList upsell/cross-sell offer rules with optional filters.
list_ordersList shop orders with optional status and search filters.
list_postsList CMS posts (blog posts and/or pages) with optional filters.
list_post_type_fieldsList the custom field schema for a post type. Use this before creating posts to know which keys to pass in meta and what types they expect.
list_post_typesList all post types defined for this company (built-in: blog\_post, page; plus any custom types).
list_product_categoriesList all product categories for the shop.
list_productsList shop products with optional filters by name, status, or category.
list_promotionsList promotion/coupon codes with optional status filter.
list_resourcesList booking resources (rooms, equipment, etc.).
list_reward_schemesList loyalty reward schemes (points/stamps programs) configured for this business.
list_segmentsList customer segments. Segments group members by criteria for targeted campaigns.
list_service_categoriesList service categories (groups for booking services like "Treatments", "Classes").
list_service_packagesList service packages/prepaid session bundles with optional search, status, sorting, and pagination.
list_servicesList booking services with name, price, duration, and status.
list_service_schedulesList schedule windows for booking services.
list_shipping_methodsList all shipping methods configured for the shop.
list_staffList staff/team members in the business.
list_subscriptionsList member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.
list_tagsList all available tags for the merchant.
list_tasksList tasks with optional status, assignee, and account filters.
list_ticketsList support tickets with optional filters.
list_tiersList all membership tiers with member counts and stats.
mark_no_showMark a booking as no-show when the customer did not attend.
post_workroom_messagePost an internal message from an AI colleague into a Workroom thread. Use this to report findings, ask the owner for approval, or share source links after reading CRM/Inbox data. This does not send anything to customers.
remove_post_blockRemove the block at the given index (0-based). All subsequent blocks shift up by one.
reorder_post_blocksReorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.
reorder_post_type_fieldsReorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.
replace_post_blockReplace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update\_post.
request_send_approvalCreate a merchant-owned Workroom approval request for a customer-facing send. The agent must not call send\_message, send\_whatsapp\_message, send\_test\_campaign, or send\_campaign directly.
search_crmSearch across CRM accounts and contacts by name, email, or phone.
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.
send_campaignDisabled for agents. Use request\_send\_approval so the merchant can approve the exact campaign send in Workroom.
send_messageDisabled for agents. Use request\_send\_approval so the merchant can approve the exact draft in Workroom.
send_test_campaignDisabled for agents. Use request\_send\_approval so the merchant can approve the exact test email in Workroom.
send_whatsapp_messageDisabled for agents. Use request\_send\_approval so the merchant can approve the exact WhatsApp draft in Workroom.
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.
switch_companySwitch the current session to a different company/organisation. Returns a new access token scoped to the target company. All subsequent tool calls will operate on the new company.
update_booking_settingsUpdate global booking settings. Pass only the fields you want to change.
update_campaignUpdate an existing campaign. Channel cannot be changed after creation. Pass only fields to change.
update_categoryUpdate a CMS post category.
update_contactUpdate fields on an existing contact.
update_deal_stageMove a deal to a different pipeline stage.
update_order_statusUpdate the status of a shop order (e.g. confirm, ship, cancel).
update_postUpdate an existing CMS post (any post type). Only provided fields are changed.
update_post_typeUpdate a custom post type. Built-in types (blog\_post, page) cannot be modified.
update_post_type_fieldUpdate a field on a post type schema. Changing fieldType or flipping required=true is blocked when posts already use the field unless force=true is passed.
update_productUpdate an existing product. Only provided fields are changed.
update_promotionUpdate an existing promotion. Pass only the fields you want to change.
update_serviceUpdate an existing booking service. Pass only the fields you want to change.
update_service_packageUpdate an existing service package. Pass only the fields you want to change.
update_service_scheduleUpdate a service schedule window. Pass only fields to change.
update_taskUpdate a task (status, priority, assignee, due date, completion).
update_ticket_statusUpdate the status of an existing support ticket.
upload_post_cover_from_urlDownload an external image URL into R2 and attach it as the post's featuredImage. Replaces the manual flow of pasting external URLs (which break when the source goes down). Validates content-type starts with `image/` and rejects payloads larger than 20 MB. No AI credits charged — only standard storage.
validate_campaignValidate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.
validate_promotionCheck if a promotion code is valid for a given order. Returns isValid, discount amount, and an error code/message if invalid. Use before applying to a checkout.
Resources · 5
bookingBooking record schema.
contactCRM contact (account) record schema.
orderShop order schema.
postCMS post schema with block array.
productShop product schema.
Prompts · 5
complete-bookingStep-by-step workflow to find and confirm a pending booking
fulfil-orderStep-by-step workflow to fulfil a shop order
onboard-memberStep-by-step workflow to onboard a new member with tier and loyalty setup
publish-blog-postStep-by-step workflow to create and publish a CMS blog post
send-campaignStep-by-step workflow to send an email or WhatsApp campaign