← All MCP servers
MCP server directory

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

What it can do

As declared by the publisher

Tools · 132

  • append_post_block

    Append 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_service

    Assign a staff member to a booking service. Pass users.id from list\_staff.userId.

  • attach_post_cover_from_job

    Attach 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_tags

    Attach one or more tags to a member/account. Useful for segmenting members after filtering.

  • cancel_booking

    Cancel a booking. Optionally provide a reason.

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

  • complete_booking

    Mark a booking as completed. Triggers commission calculation if configured.

  • confirm_booking

    Confirm a pending booking.

  • create_booking

    Create 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_broadcast

    Create a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the Broadcasts page.

  • 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".

  • create_category

    Create a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the table is flat.

  • create_contact

    Create a contact on an existing CRM account.

  • create_note

    Add a note to a member/account, booking, ticket, or invoice.

  • create_offer_rule

    Create an upsell/cross-sell offer rule as draft. Specify trigger type, conditions, and suggested products with optional discounts.

  • create_post

    Create 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_type

    Define 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_field

    Add 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_product

    Create a new shop product as DRAFT. Merchant can review and activate from the portal.

  • create_product_category

    Create a product category. Use parentId to create subcategories under an existing category.

  • create_promotion

    Create 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_resource

    Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.

  • create_segment

    Create a new customer segment. Use STATIC for manual member lists, DYNAMIC for criteria-based auto-filtering.

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

  • create_service_category

    Create a service category (e.g. "Treatments", "Classes") to group bookable services.

  • create_service_package

    Create a service package/prepaid session bundle. Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events.

  • create_service_schedule

    Create a bookable schedule window for a service, including recurring weekly/daily availability.

  • create_task

    Create a task. Optionally link to a CRM account or assign to a team member.

  • create_ticket

    Create a support ticket for a member issue.

  • create_variation

    Add a variation (size, color, etc.) to an existing product.

  • delete_campaign

    Delete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history.

  • delete_category

    Delete a CMS post category. Posts in the category are not deleted; they are simply unlinked.

  • delete_post

    Delete a CMS post by ID. Permanent — categories detach automatically (cascade), but blocks/meta are not recoverable.

  • delete_post_type

    Delete 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_field

    Remove 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_promotion

    Delete a promotion. Past usage records are preserved.

  • delete_service_package

    Delete a service package by ID.

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

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

  • find_or_create_workroom_thread

    Find 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_image

    Generate 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_cover

    Generate 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_slots

    Find available booking slots for a service on a specific date.

  • get_booking_detail

    Get full booking details including line items, status history, and participants.

  • get_booking_settings

    Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.

  • get_booking_stats

    Get booking counts: today, this week, this month, and breakdown by status.

  • get_contact

    Fetch a single contact by ID.

  • get_conversation_messages

    Get messages from a specific conversation thread. Shows the chat history between the merchant and a contact.

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

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

  • get_member_profile

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

  • get_membership_tier

    Get a specific membership tier by ID.

  • get_offer_rule

    Get offer rule detail including associated products and discounts.

  • get_order

    Get full order detail including line items.

  • get_post

    Get detailed CMS post including content blocks, categories, and tags.

  • get_product

    Get full product detail including images, options, and variations.

  • get_promotion

    Get details of a specific promotion/coupon code.

  • get_segment_members

    Get the members that belong to a specific segment.

  • get_service_detail

    Get full service details including addons, staff, resources, and tier pricing.

  • get_service_package

    Get service package detail including applicability and selected booking service/event items.

  • get_ticket_stats

    Get ticket counts grouped by status.

  • issue_rewards

    Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.

  • link_resource_to_service

    Link a room/resource to a booking service.

  • list_bookings

    List bookings with filters for date range, status, service, staff, or member.

  • list_campaigns

    List marketing campaigns (email, SMS, WhatsApp) with delivery stats.

  • list_categories

    List CMS post categories.

  • list_contacts

    List contacts (people linked to CRM accounts), optionally filtered by account or search.

  • list_conversations

    List messaging conversations across channels (WhatsApp, SMS, email, etc). Shows unread counts and last message time.

  • list_deals

    List CRM deals (sales pipeline) with optional filters.

  • list_image_models

    List AI image-generation models exposed to merchants (sanitized — provider/cost details hidden). Use to pick a `modelCode` for `generate_post_cover`.

  • list_invoices

    List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.

  • list_knowledge_documents

    List 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_companies

    List all companies/organisations the current user has access to. Use this to see available orgs before switching.

  • list_notes

    List notes attached to a member/account, booking, or ticket.

  • list_notification_logs

    List notification delivery logs for the current company. Recipients are masked by default for incident-response safety.

  • list_offer_rules

    List upsell/cross-sell offer rules with optional filters.

  • list_orders

    List shop orders with optional status and search filters.

  • list_posts

    List CMS posts (blog posts and/or pages) with optional filters.

  • list_post_type_fields

    List 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_types

    List all post types defined for this company (built-in: blog\_post, page; plus any custom types).

  • list_product_categories

    List all product categories for the shop.

  • list_products

    List shop products with optional filters by name, status, or category.

  • list_promotions

    List promotion/coupon codes with optional status filter.

  • list_resources

    List booking resources (rooms, equipment, etc.).

  • list_reward_schemes

    List loyalty reward schemes (points/stamps programs) configured for this business.

  • list_segments

    List customer segments. Segments group members by criteria for targeted campaigns.

  • list_service_categories

    List service categories (groups for booking services like "Treatments", "Classes").

  • list_service_packages

    List service packages/prepaid session bundles with optional search, status, sorting, and pagination.

  • list_services

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

  • list_service_schedules

    List schedule windows for booking services.

  • list_shipping_methods

    List all shipping methods configured for the shop.

  • list_staff

    List staff/team members in the business.

  • list_subscriptions

    List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.

  • list_tags

    List all available tags for the merchant.

  • list_tasks

    List tasks with optional status, assignee, and account filters.

  • list_tickets

    List support tickets with optional filters.

  • list_tiers

    List all membership tiers with member counts and stats.

  • mark_no_show

    Mark a booking as no-show when the customer did not attend.

  • post_workroom_message

    Post 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_block

    Remove the block at the given index (0-based). All subsequent blocks shift up by one.

  • reorder_post_blocks

    Reorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.

  • reorder_post_type_fields

    Reorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.

  • replace_post_block

    Replace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update\_post.

  • request_send_approval

    Create 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_crm

    Search across CRM accounts and contacts by name, email, or phone.

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

  • send_campaign

    Disabled for agents. Use request\_send\_approval so the merchant can approve the exact campaign send in Workroom.

  • send_message

    Disabled for agents. Use request\_send\_approval so the merchant can approve the exact draft in Workroom.

  • send_test_campaign

    Disabled for agents. Use request\_send\_approval so the merchant can approve the exact test email in Workroom.

  • send_whatsapp_message

    Disabled for agents. Use request\_send\_approval so the merchant can approve the exact WhatsApp draft in Workroom.

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

  • switch_company

    Switch 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_settings

    Update global booking settings. Pass only the fields you want to change.

  • update_campaign

    Update an existing campaign. Channel cannot be changed after creation. Pass only fields to change.

  • update_category

    Update a CMS post category.

  • update_contact

    Update fields on an existing contact.

  • update_deal_stage

    Move a deal to a different pipeline stage.

  • update_order_status

    Update the status of a shop order (e.g. confirm, ship, cancel).

  • update_post

    Update an existing CMS post (any post type). Only provided fields are changed.

  • update_post_type

    Update a custom post type. Built-in types (blog\_post, page) cannot be modified.

  • update_post_type_field

    Update 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_product

    Update an existing product. Only provided fields are changed.

  • update_promotion

    Update an existing promotion. Pass only the fields you want to change.

  • update_service

    Update an existing booking service. Pass only the fields you want to change.

  • update_service_package

    Update an existing service package. Pass only the fields you want to change.

  • update_service_schedule

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

  • update_task

    Update a task (status, priority, assignee, due date, completion).

  • update_ticket_status

    Update the status of an existing support ticket.

  • upload_post_cover_from_url

    Download 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_campaign

    Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.

  • validate_promotion

    Check 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

  • booking

    Booking record schema.

  • contact

    CRM contact (account) record schema.

  • order

    Shop order schema.

  • post

    CMS post schema with block array.

  • product

    Shop product schema.

Prompts · 5

  • complete-booking

    Step-by-step workflow to find and confirm a pending booking

  • fulfil-order

    Step-by-step workflow to fulfil a shop order

  • onboard-member

    Step-by-step workflow to onboard a new member with tier and loyalty setup

  • publish-blog-post

    Step-by-step workflow to create and publish a CMS blog post

  • send-campaign

    Step-by-step workflow to send an email or WhatsApp campaign