Skip to content

FavCRM

by favcrm.io · remote · no sign-in to list tools · v1.0.0 · published by io.favcrm

Agentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing.

Deletes · 24Final · 8Changes · 111

237 tools: 24 can delete or cancel things, 8 do something that can't be undone, 111 change things and 94 only read.

Scanned Oct 21, 2026

6 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http favcrm https://api.favcrm.io/mcp

Findings

Matches of fixed checks, with the text they matched.

6 warn
  • The server marks "preview_customer_import" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_customer_import" says "preview": a word for reading.

    What this check looks for
  • The server marks "find_or_create_workroom_thread" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "find_or_create_workroom_thread" says "find": a word for reading.

    What this check looks for
  • The server marks "scrape_knowledge_url" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "fetch": a word for reading.

    What this check looks for
  • The input schema at properties.area.enum[0] names a tool "missing" that this server does not list.

    Matched text

    inputSchema.properties.area.enum[0]: "mcp_tool_missing"

    What this check looks for
  • The input schema at properties.area.enum[1] names a tool "error" that this server does not list.

    Matched text

    inputSchema.properties.area.enum[1]: "mcp_tool_error"

    What this check looks for
  • The server marks "backfill_conversation_summaries" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

237 tools

Deletes or cancels 24Claude Code: deny
  • archive_surveyArchive a survey and remove it from active survey lists.No findings

    Why it is in this group

    • The name "archive_survey" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archive a survey and remove it from active survey lists.

    Annotations the server declares

    • title: Archive Survey
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • cancel_bookingCancel a booking and create a durable refund receipt.No findings

    Why it is in this group

    • The name "cancel_booking" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a booking and create a durable refund receipt. Uses the merchant refund setting unless refundMethod is provided.

    Annotations the server declares

    • title: Cancel Booking
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • cancel_subscriptionCancel a subscription.No findings

    Why it is in this group

    • The name "cancel_subscription" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a subscription. Destructive — turns off auto-renew and prevents further billing cycles. Existing paid periods stay valid until end.

    Annotations the server declares

    • title: Cancel Subscription
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_accountSoft-delete a CRM account/customer.No findings

    Why it is in this group

    • The name "delete_account" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Soft-delete a CRM account/customer. This releases the primary phone for future reuse while keeping account history for audit.

    Annotations the server declares

    • title: Delete Account
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_campaignDelete a campaign.No findings

    Why it is in this group

    • The name "delete_campaign" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history.

    Annotations the server declares

    • title: Delete Campaign
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_categoryDelete a CMS post category.No findings

    Why it is in this group

    • The name "delete_category" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a CMS post category. Posts in the category are not deleted; they are simply unlinked.

    Annotations the server declares

    • title: Delete Category
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_contactDelete a secondary contact.No findings

    Why it is in this group

    • The name "delete_contact" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a secondary contact. Primary contacts are protected; set another primary contact or delete the account instead.

    Annotations the server declares

    • title: Delete Contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_custom_fieldDelete a custom field definition and its stored values.No findings

    Why it is in this group

    • The name "delete_custom_field" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a custom field definition and its stored values.

    Annotations the server declares

    • title: Delete Custom Field
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_dealSoft-delete a CRM deal from the sales pipeline.No findings

    Why it is in this group

    • The name "delete_deal" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Soft-delete a CRM deal from the sales pipeline.

    Annotations the server declares

    • title: Delete Deal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_invoiceDelete a DRAFT invoice.No findings

    Why it is in this group

    • The name "delete_invoice" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a DRAFT invoice. Only invoices that have never been sent can be deleted; otherwise use void_invoice.

    Annotations the server declares

    • title: Delete Invoice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_knowledge_documentSoft-delete a knowledge document.No findings

    Why it is in this group

    • The name "delete_knowledge_document" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Soft-delete a knowledge document. The agent loses access immediately, but the document can be restored with restore_knowledge_document.

    Annotations the server declares

    • title: Delete Knowledge Document
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_postDelete a CMS post by ID.No findings

    Why it is in this group

    • The name "delete_post" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a CMS post by ID. Soft-deleted posts can be restored with restore_post.

    Annotations the server declares

    • title: Delete Post
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_post_typeDelete a custom post type.No findings

    Why it is in this group

    • The name "delete_post_type" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a custom post type. Built-in types cannot be deleted. Fails if any posts of this type still exist — delete those first.

    Annotations the server declares

    • title: Delete Post Type
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_post_type_fieldRemove a field from a post type schema.No findings

    Why it is in this group

    • The name "delete_post_type_field" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Delete Post Type Field
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_promotionDelete a promotion.No findings

    Why it is in this group

    • The name "delete_promotion" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a promotion. Past usage records are preserved.

    Annotations the server declares

    • title: Delete Promotion
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_segmentDelete a customer segment.No findings

    Why it is in this group

    • The name "delete_segment" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a customer segment.

    Annotations the server declares

    • title: Delete Segment
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_service_packageDelete a service package by ID.No findings

    Why it is in this group

    • The name "delete_service_package" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a service package by ID.

    Annotations the server declares

    • title: Delete Service Package
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_tagDelete a CRM tag and remove it from all tagged entities.No findings

    Why it is in this group

    • The name "delete_tag" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a CRM tag and remove it from all tagged entities.

    Annotations the server declares

    • title: Delete Tag
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_taskSoft-delete a CRM task.No findings

    Why it is in this group

    • The name "delete_task" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Soft-delete a CRM task.

    Annotations the server declares

    • title: Delete Task
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • detach_tagsDetach one tag from one or more member/account records.No findings

    Why it is in this group

    • The name "detach_tags" says "detach": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Detach one tag from one or more member/account records.

    Annotations the server declares

    • title: Detach Tags
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • execute_toolExecute an available FavCRM tool by name after discovering it with search_tools.No findings

    Why it is in this group

    • The name "execute_tool" says "execute": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Execute an available FavCRM tool by name after discovering it with search_tools. Target tool availability, input schema, module gates, and audit logging are still enforced.

    Annotations the server declares

    • title: Execute Tool
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • remove_post_blockRemove the block at the given index (0-based).No findings

    Why it is in this group

    • The name "remove_post_block" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove the block at the given index (0-based). All subsequent blocks shift up by one.

    Annotations the server declares

    • title: Remove Post Block
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • revert_audit_actionRevert an audited action by restoring the captured before snapshot.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revert an audited action by restoring the captured before snapshot. Only works for allowlisted target tables with full before/after audit snapshots.

    Annotations the server declares

    • title: Revert Audit Action
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • void_invoiceVoid an invoice.No findings

    Why it is in this group

    • The name "void_invoice" says "void": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Void an invoice. Destructive — invoice can no longer be paid or edited; existing payments are preserved as history. Cannot void invoices that are already PAID or VOIDED.

    Annotations the server declares

    • title: Void Invoice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Can't be undone 8Claude Code: ask
  • accept_team_invite_requestStep 1 of agentic team invite acceptance.No findings

    Why it is in this group

    • The name "accept_team_invite_request" says "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Step 1 of agentic team invite acceptance. Validates an invite token and sends a 6-digit verification code to the invited email. Then call accept_team_invite_verify with the code to join and receive an MCP API key.

    Annotations the server declares

    • title: Accept Team Invite — Request Code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • accept_team_invite_verifyStep 2 of agentic team invite acceptance.No findings

    Why it is in this group

    • The name "accept_team_invite_verify" says "invite": a word for sending, and what is sent cannot be taken back.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Step 2 of agentic team invite acceptance. Verifies the emailed code, joins the invited user to the company, and returns a one-time MCP API key for that user.

    Annotations the server declares

    • title: Accept Team Invite — Verify Code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_subscriptionCreate a manual, non-renewing subscription record for a member.No findings

    Why it is in this group

    • The name "create_subscription" says "create": a word for a change.
    • The input carries an amount (input.amount) and a currency, so it moves money.
    Description, as the server wrote it
    Create a manual, non-renewing subscription record for a member. Use a subscription action link for provider-backed recurring billing.

    Annotations the server declares

    • title: Create Subscription
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_team_member_inviteInvite a team member to this company and return a one-time MCP accept token.No findings

    Why it is in this group

    • The name "create_team_member_invite" says "create": a word for a change.
    • The description's first verb is "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Invite a team member to this company and return a one-time MCP accept token. The invited user must verify an email code through accept_team_invite_request and accept_team_invite_verify before membership and API key issuance.

    Annotations the server declares

    • title: Create Team Member Invite
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • post_workroom_messagePost an internal message from an AI colleague into a Workroom thread.No findings

    Why it is in this group

    • The name "post_workroom_message" says "post" and "message": it sends a message, which cannot be taken back.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Post Workroom Message
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • record_invoice_paymentRecord a manual payment against an invoice (cash, bank transfer, cheque, card terminal).No findings

    Why it is in this group

    • The name "record_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Record a manual payment against an invoice (cash, bank transfer, cheque, card terminal). Updates invoice status to PARTIAL or PAID based on the running total.

    Annotations the server declares

    • title: Record Invoice Payment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • request_send_approvalCreate a merchant-owned Workroom approval request for a customer-facing send.No findings

    Why it is in this group

    • The name "request_send_approval" says "request": a word for a change.
    • The name "request_send_approval" also says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Request Send Approval
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • undo_campaign_sendUndo a campaign send during its one-minute safety buffer.No findings

    Why it is in this group

    • The name "undo_campaign_send" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Undo a campaign send during its one-minute safety buffer. Use immediately when the merchant says to stop or undo a submitted campaign.

    Annotations the server declares

    • title: Undo Campaign Send
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Changes things 111Claude Code: ask
  • add_knowledge_textAdd a free-form text document to the knowledge base.No findings

    Why it is in this group

    • The name "add_knowledge_text" says "add": a word for a change.
    Description, as the server wrote it
    Add a free-form text document to the knowledge base. Use for pasted policies, FAQs, internal notes, brand voice references — anything the agent should be able to retrieve later. Stored as a single document; agent-side embedding/retrieval happens elsewhere.

    Annotations the server declares

    • title: Add Knowledge Text
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • append_post_blockAppend one or more blocks to the end of a post.No findings

    Why it is in this group

    • The name "append_post_block" says "post": a word for a change.
    Description, as the server wrote it
    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, html, youtube, file, faq, callout, gallery, cta, accordion, product.

    Annotations the server declares

    • title: Append Post Block
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • assign_staff_to_serviceAssign a staff member to a booking service.No findings

    Why it is in this group

    • The name "assign_staff_to_service" says "assign": a word for a change.
    Description, as the server wrote it
    Assign a staff member to a booking service. Pass users.id from list_staff.userId.

    Annotations the server declares

    • title: Assign Staff To Service
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • attach_post_cover_from_jobAttach a previously generated ai-media job's output as the post's featuredImage.No findings

    Why it is in this group

    • The name "attach_post_cover_from_job" says "attach": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Attach Post Cover From Job
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • attach_tagsAttach one or more tags to a member/account.No findings

    Why it is in this group

    • The name "attach_tags" says "attach": a word for a change.
    Description, as the server wrote it
    Attach one or more tags to a member/account. Useful for segmenting members after filtering.

    Annotations the server declares

    • title: Attach Tags
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • backfill_conversation_summariesFind conversations with no usable cached AI summary (missing or malformed; legacy valid caches are never touched) and generate them, at most limit per call (default 10, max 10).1 finding

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "backfill_conversation_summaries" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Find conversations with no usable cached AI summary (missing or malformed; legacy valid caches are never touched) and generate them, at most limit per call (default 10, max 10). Newest activity first; only conversations you may read are considered. Default dryRun=true lists candidates with no model call, billing or writes. Set dryRun=false to generate; it is billed to company credits and needs company AI summaries enabled. Stops on the first generation failure, missing AI gateway configuration (rejected before any request, not billed), disabled flag, unknown usage or lost access. Cursor rules: use executeCursor from a preview to execute from its frozen window and starting position; eligibility is rechecked. nextCursor only continues the mode that produced it. Scans at most 50 visible rows per call, so hasMore may be true with no candidates in this page.

    Annotations the server declares

    • title: Backfill Conversation Summaries
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • check_plan_operationPreflight whether an intended operation is allowed by token scopes, enabled modules, subscription state, and quota.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Preflight whether an intended operation is allowed by token scopes, enabled modules, subscription state, and quota. Provide toolName, quotaCode, or moduleCode.

    Annotations the server declares

    • title: Check Plan Operation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • cloneDuplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Clone
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • commit_customer_importCommit a previewed customer import.No findings

    Why it is in this group

    • The name "commit_customer_import" says "commit": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Commit Customer Import
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • complete_bookingMark a booking as completed.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a booking as completed. Triggers commission calculation if configured.

    Annotations the server declares

    • title: Complete Booking
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • confirm_bookingConfirm a pending booking.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Confirm a pending booking.

    Annotations the server declares

    • title: Confirm Booking
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • convert_leadConvert an account: qualify its open lead (creating one if needed) and link exactly one pipeline deal.No findings

    Why it is in this group

    • The name "convert_lead" says "convert": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Convert Lead
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • copy_service_tier_pricingCopy the complete pricing and booking-policy configuration from one membership tier to another on the same booking service.No findings

    Why it is in this group

    • The name "copy_service_tier_pricing" says "copy": a word for a change.
    Description, as the server wrote it
    Copy the complete pricing and booking-policy configuration from one membership tier to another on the same booking service.

    Annotations the server declares

    • title: Copy Service Tier Pricing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_accountCreate a CRM account/customer with a primary contact.No findings

    Why it is in this group

    • The name "create_account" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Account
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_bookingCreate a new booking for a member.No findings

    Why it is in this group

    • The name "create_booking" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Booking
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_campaignCreate an email, SMS, WhatsApp, or push campaign in DRAFT.No findings

    Why it is in this group

    • The name "create_campaign" says "create": a word for a change.
    Description, as the server wrote it
    Create an email, SMS, WhatsApp, or push campaign in DRAFT. audienceExclusions can omit specific account IDs and recipients of previous campaign IDs. For email channelConfig, use subject + htmlBody + optional plainTextBody. recipientSource="list" is accepted as an alias for "individual".

    Annotations the server declares

    • title: Create Campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_categoryCreate a CMS post category (e.g.No findings

    Why it is in this group

    • The name "create_category" says "create": a word for a change.
    Description, as the server wrote it
    Create a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the table is flat.

    Annotations the server declares

    • title: Create Category
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_contactCreate a contact on an existing CRM account.No findings

    Why it is in this group

    • The name "create_contact" says "create": a word for a change.
    Description, as the server wrote it
    Create a contact on an existing CRM account.

    Annotations the server declares

    • title: Create Contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_crm_taskCreate a CRM follow-up task for you or, where your assignment policy allows, another active member.No findings

    Why it is in this group

    • The name "create_crm_task" says "create": a word for a change.
    Description, as the server wrote it
    Create a CRM follow-up task for you or, where your assignment policy allows, another active member. Optionally link it to a CRM account or conversation you can see. dueAt must be an exact datetime with a timezone; resolve relative dates such as "tomorrow" with the user first.

    Annotations the server declares

    • title: Create Crm Task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_custom_fieldCreate a custom field definition for CRM entities.No findings

    Why it is in this group

    • The name "create_custom_field" says "create": a word for a change.
    Description, as the server wrote it
    Create a custom field definition for CRM entities. Use options for select or multiselect fields.

    Annotations the server declares

    • title: Create Custom Field
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_dealCreate a CRM sales pipeline deal, optionally linked to a customer account and contact.No findings

    Why it is in this group

    • The name "create_deal" says "create": a word for a change.
    Description, as the server wrote it
    Create a CRM sales pipeline deal, optionally linked to a customer account and contact.

    Annotations the server declares

    • title: Create Deal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_inbox_reply_suggestionCreate a draft reply suggestion that appears inline in the FavCRM Inbox composer.No findings

    Why it is in this group

    • The name "create_inbox_reply_suggestion" says "create": a word for a change.
    Description, as the server wrote it
    Create a draft reply suggestion that appears inline in the FavCRM Inbox composer. Use this for message.inbound events with replyPolicy="suggest"; it does not send anything to the customer.

    Annotations the server declares

    • title: Create Inbox Reply Suggestion
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_invoiceCreate a new invoice for a customer.No findings

    Why it is in this group

    • The name "create_invoice" says "create": a word for a change.
    Description, as the server wrote it
    Create a new invoice for a customer. Optionally include line items inline. Returns the new invoiceId.

    Annotations the server declares

    • title: Create Invoice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_noteAdd a note to a member/account, booking, ticket, or invoice.No findings

    Why it is in this group

    • The name "create_note" says "create": a word for a change.
    Description, as the server wrote it
    Add a note to a member/account, booking, ticket, or invoice.

    Annotations the server declares

    • title: Create Note
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_offer_ruleCreate an upsell/cross-sell offer rule as draft.No findings

    Why it is in this group

    • The name "create_offer_rule" says "create": a word for a change.
    Description, as the server wrote it
    Create an upsell/cross-sell offer rule as draft. Specify trigger type, conditions, and suggested products with optional discounts.

    Annotations the server declares

    • title: Create Offer Rule
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_outletCreate a shop outlet/location.No findings

    Why it is in this group

    • The name "create_outlet" says "create": a word for a change.
    Description, as the server wrote it
    Create a shop outlet/location. Optionally pass id to preserve a legacy UUID during migration.

    Annotations the server declares

    • title: Create Outlet
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_postCreate a new CMS post (blog_post, page, or any custom post type).No findings

    Why it is in this group

    • The name "create_post" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Post
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_post_typeDefine a new custom post type (e.g.No findings

    Why it is in this group

    • The name "create_post_type" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Post Type
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_post_type_fieldAdd a custom field to a post type schema.No findings

    Why it is in this group

    • The name "create_post_type_field" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Post Type Field
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_productCreate a new shop product as DRAFT.No findings

    Why it is in this group

    • The name "create_product" says "create": a word for a change.
    Description, as the server wrote it
    Create a new shop product as DRAFT. Merchant can review and activate from the portal.

    Annotations the server declares

    • title: Create Product
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_product_categoryCreate a product category.No findings

    Why it is in this group

    • The name "create_product_category" says "create": a word for a change.
    Description, as the server wrote it
    Create a product category. Use parentId to create subcategories under an existing category.

    Annotations the server declares

    • title: Create Product Category
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_promotionCreate a promotion / discount code.No findings

    Why it is in this group

    • The name "create_promotion" says "create": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Promotion
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_resourceCreate a bookable resource (room, equipment, vehicle).No findings

    Why it is in this group

    • The name "create_resource" says "create": a word for a change.
    Description, as the server wrote it
    Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.

    Annotations the server declares

    • title: Create Resource
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_segmentCreate a new customer segment.No findings

    Why it is in this group

    • The name "create_segment" says "create": a word for a change.
    Description, as the server wrote it
    Create a new customer segment. Use STATIC for manual member lists, DYNAMIC for criteria-based auto-filtering.

    Annotations the server declares

    • title: Create Segment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_serviceCreate a bookable service.No findings

    Why it is in this group

    • The name "create_service" says "create": a word for a change.
    Description, as the server wrote it
    Create a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.

    Annotations the server declares

    • title: Create Service
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_service_categoryCreate a service category (e.g.No findings

    Why it is in this group

    • The name "create_service_category" says "create": a word for a change.
    Description, as the server wrote it
    Create a service category (e.g. "Treatments", "Classes") to group bookable services.

    Annotations the server declares

    • title: Create Service Category
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_service_packageCreate a service package/prepaid session bundle.No findings

    Why it is in this group

    • The name "create_service_package" says "create": a word for a change.
    Description, as the server wrote it
    Create a service package/prepaid session bundle. Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events.

    Annotations the server declares

    • title: Create Service Package
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_service_scheduleCreate a bookable schedule window for a service, including recurring weekly/daily availability.No findings

    Why it is in this group

    • The name "create_service_schedule" says "create": a word for a change.
    Description, as the server wrote it
    Create a bookable schedule window for a service, including recurring weekly/daily availability.

    Annotations the server declares

    • title: Create Service Schedule
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_surveyCreate a survey with custom question blocks.No findings

    Why it is in this group

    • The name "create_survey" says "create": a word for a change.
    Description, as the server wrote it
    Create a survey with custom question blocks. Publish it later or set status to published for immediate portal access.

    Annotations the server declares

    • title: Create Survey
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_survey_invitationCreate a token-auth survey invitation for a specific member/account or contact.No findings

    Why it is in this group

    • The name "create_survey_invitation" says "create": a word for a change.
    Description, as the server wrote it
    Create a token-auth survey invitation for a specific member/account or contact.

    Annotations the server declares

    • title: Create Survey Invitation
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_tagCreate a CRM tag for customer segmentation and organization.No findings

    Why it is in this group

    • The name "create_tag" says "create": a word for a change.
    Description, as the server wrote it
    Create a CRM tag for customer segmentation and organization.

    Annotations the server declares

    • title: Create Tag
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_taskCreate a task.No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    Description, as the server wrote it
    Create a task. Optionally link to a CRM account or assign to a team member.

    Annotations the server declares

    • title: Create Task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_templateCreate and submit a WhatsApp message template to Meta for approval.No findings

    Why it is in this group

    • The name "create_template" says "create": a word for a change.
    Description, as the server wrote it
    Create and submit a WhatsApp message template to Meta for approval. Text templates only (header text, body with {{1}} variables, footer) — add buttons in the app. The template is NOT usable until Meta approves it (check with list_templates). Submitting consumes the store’s Meta template allowance.

    Annotations the server declares

    • title: Create Template
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_ticketCreate a support ticket for a member issue.No findings

    Why it is in this group

    • The name "create_ticket" says "create": a word for a change.
    Description, as the server wrote it
    Create a support ticket for a member issue.

    Annotations the server declares

    • title: Create Ticket
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_variationAdd a variation (size, color, etc.) to an existing product.No findings

    Why it is in this group

    • The name "create_variation" says "create": a word for a change.
    Description, as the server wrote it
    Add a variation (size, color, etc.) to an existing product.

    Annotations the server declares

    • title: Create Variation
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • earn_loyalty_pointsCredit loyalty points or stamps to a member.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Earn Loyalty Points
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • enrol_membershipEnrol a member into a membership tier.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Enrol Membership
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • find_or_create_workroom_threadFind or create a Workroom DM thread between a merchant user and an AI colleague.1 finding

    Why it is in this group

    • The name "find_or_create_workroom_thread" says "find": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "find_or_create_workroom_thread" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "find_or_create_workroom_thread" says "find": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Find Or Create Workroom Thread
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • generate_imageGenerate an AI image via kie.ai and return its public R2 URL.No findings

    Why it is in this group

    • The name "generate_image" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Generate Image
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • generate_post_coverGenerate an AI image and attach it as a post's featuredImage.No findings

    Why it is in this group

    • The name "generate_post_cover" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Generate Post Cover
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • issue_rewardsIssue a gift/reward to multiple members.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.

    Annotations the server declares

    • title: Issue Rewards
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • mark_deal_lostMark a CRM deal as lost.No findings

    Why it is in this group

    • The name "mark_deal_lost" says "mark": a word for a change.
    Description, as the server wrote it
    Mark a CRM deal as lost. Requires a lost reason.

    Annotations the server declares

    • title: Mark Deal Lost
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • mark_deal_wonMark a CRM deal as won and set close date.No findings

    Why it is in this group

    • The name "mark_deal_won" says "mark": a word for a change.
    Description, as the server wrote it
    Mark a CRM deal as won and set close date.

    Annotations the server declares

    • title: Mark Deal Won
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • mark_invoice_sentMark an invoice as sent to the customer (transitions DRAFT → OPEN).No findings

    Why it is in this group

    • The name "mark_invoice_sent" says "mark": a word for a change.
    Description, as the server wrote it
    Mark an invoice as sent to the customer (transitions DRAFT → OPEN). Use after delivering the invoice via email or share link. Idempotent.

    Annotations the server declares

    • title: Mark Invoice Sent
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • mark_no_showMark a booking as no-show when the customer did not attend.No findings

    Why it is in this group

    • The name "mark_no_show" says "mark": a word for a change.
    Description, as the server wrote it
    Mark a booking as no-show when the customer did not attend.

    Annotations the server declares

    • title: Mark No Show
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • pause_subscriptionPause an active subscription (status → past_due, no further auto-renew).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Pause an active subscription (status → past_due, no further auto-renew). Use resume_subscription to reactivate.

    Annotations the server declares

    • title: Pause Subscription
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • preview_customer_importPreview a bulk customer import (max 2000 rows).1 finding

    Why it is in this group

    • The name "preview_customer_import" says "preview": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "preview_customer_import" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_customer_import" says "preview": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Preview Customer Import
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • refresh_conversation_summaryRegenerate the AI summary of one conversation on explicit user request.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Regenerate the AI summary of one conversation on explicit user request. Uses the model and is billed to company credits. Respects the cooldown and quiet-period rules, so it may return the current cache instead. Never sends a message or changes tags or tasks.

    Annotations the server declares

    • title: Refresh Conversation Summary
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • register_organisation_requestStep 1 of agentic signup.No findings

    Why it is in this group

    • The name "register_organisation_request" says "request": a word for a change.
    Description, as the server wrote it
    Step 1 of agentic signup. Sends a 6-digit verification code to the email. After the user reads the code, call register_organisation_verify with it to finish and receive an API key. Use this when a user wants to create a new FavCRM workspace from inside an MCP client.

    Annotations the server declares

    • title: Register Organisation — Request Code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • register_organisation_verifyStep 2 of agentic signup.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Step 2 of agentic signup. Confirms the 6-digit code and creates the workspace. Returns an API key the agent should set as Authorization: Bearer <apiKey> for all subsequent FavCRM MCP calls in this session.

    Annotations the server declares

    • title: Register Organisation — Verify Code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • reorder_post_blocksReorder blocks by passing block IDs in the desired order.No findings

    Why it is in this group

    • The name "reorder_post_blocks" says "post": a word for a change.
    Description, as the server wrote it
    Reorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.

    Annotations the server declares

    • title: Reorder Post Blocks
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • reorder_post_type_fieldsReorder fields on a post type.No findings

    Why it is in this group

    • The name "reorder_post_type_fields" says "post": a word for a change.
    Description, as the server wrote it
    Reorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.

    Annotations the server declares

    • title: Reorder Post Type Fields
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • replace_post_blockReplace a single block at the given index (0-based).No findings

    Why it is in this group

    • The name "replace_post_block" says "replace": a word for a change.
    Description, as the server wrote it
    Replace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update_post.

    Annotations the server declares

    • title: Replace Post Block
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • report_agent_issueReport a FavCRM platform issue when an agent finds a missing MCP path, tool failure, confusing schema, CLI/docs issue, or SDK fallback.2 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Warn

      The input schema at properties.area.enum[0] names a tool "missing" that this server does not list.

      Matched text

      inputSchema.properties.area.enum[0]: "mcp_tool_missing"

      What this check looks for
    • Warn

      The input schema at properties.area.enum[1] names a tool "error" that this server does not list.

      Matched text

      inputSchema.properties.area.enum[1]: "mcp_tool_error"

      What this check looks for
    Description, as the server wrote it
    Report a FavCRM platform issue when an agent finds a missing MCP path, tool failure, confusing schema, CLI/docs issue, or SDK fallback. Include logs, AI analysis, references, and clarification questions so the platform team can follow up.

    Annotations the server declares

    • title: Report Agent Issue
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_campaignRestore a previously deleted campaign.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted campaign.

    Annotations the server declares

    • title: Restore Campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_categoryRestore a previously deleted CMS post category.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted CMS post category.

    Annotations the server declares

    • title: Restore Category
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_invoiceRestore a previously deleted DRAFT invoice.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted DRAFT invoice.

    Annotations the server declares

    • title: Restore Invoice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_knowledge_documentRestore a previously deleted knowledge document.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted knowledge document.

    Annotations the server declares

    • title: Restore Knowledge Document
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_postRestore a previously deleted CMS post.No findings

    Why it is in this group

    • The name "restore_post" says "post": a word for a change.
    Description, as the server wrote it
    Restore a previously deleted CMS post.

    Annotations the server declares

    • title: Restore Post
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_post_typeRestore a previously deleted custom post type.No findings

    Why it is in this group

    • The name "restore_post_type" says "post": a word for a change.
    Description, as the server wrote it
    Restore a previously deleted custom post type.

    Annotations the server declares

    • title: Restore Post Type
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_post_type_fieldRestore a previously deleted field on a post type schema.No findings

    Why it is in this group

    • The name "restore_post_type_field" says "post": a word for a change.
    Description, as the server wrote it
    Restore a previously deleted field on a post type schema.

    Annotations the server declares

    • title: Restore Post Type Field
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_promotionRestore a previously deleted promotion.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted promotion.

    Annotations the server declares

    • title: Restore Promotion
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_service_packageRestore a previously deleted service package by ID.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore a previously deleted service package by ID.

    Annotations the server declares

    • title: Restore Service Package
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • resume_subscriptionResume a paused subscription back to active.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Resume a paused subscription back to active.

    Annotations the server declares

    • title: Resume Subscription
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • scrape_knowledge_urlFetch a URL's content into the knowledge base.1 finding

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "scrape_knowledge_url" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "fetch": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Fetch a URL's content into the knowledge base. Server crawls the URL, stores the response body in R2, returns the new document ID. Failures store the row with status='failed'. Use for adding marketing pages, FAQ docs, or external references the agent should be aware of.

    Annotations the server declares

    • title: Scrape Knowledge Url
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • set_custom_field_valuesSet or clear custom field values for a CRM entity.No findings

    Why it is in this group

    • The name "set_custom_field_values" says "set": a word for a change.
    Description, as the server wrote it
    Set or clear custom field values for a CRM entity. Values are stored as strings; pass null to clear a value.

    Annotations the server declares

    • title: Set Custom Field Values
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_primary_contactSet a contact as the primary contact for its CRM account and demote other contacts on that account.No findings

    Why it is in this group

    • The name "set_primary_contact" says "set": a word for a change.
    Description, as the server wrote it
    Set a contact as the primary contact for its CRM account and demote other contacts on that account.

    Annotations the server declares

    • title: Set Primary Contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_resource_availabilityAdd an availability window for a resource.No findings

    Why it is in this group

    • The name "set_resource_availability" says "set": a word for a change.
    Description, as the server wrote it
    Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks.

    Annotations the server declares

    • title: Set Resource Availability
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_segment_membersReplace the members of a STATIC customer segment with the given account IDs.No findings

    Why it is in this group

    • The name "set_segment_members" says "set": a word for a change.
    Description, as the server wrote it
    Replace the members of a STATIC customer segment with the given account IDs. The segment is converted to STATIC.

    Annotations the server declares

    • title: Set Segment Members
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_service_tier_pricingSet the complete pricing and booking-policy configuration for one membership tier on a booking service.No findings

    Why it is in this group

    • The name "set_service_tier_pricing" says "set": a word for a change.
    Description, as the server wrote it
    Set the complete pricing and booking-policy configuration for one membership tier on a booking service.

    Annotations the server declares

    • title: Set Service Tier Pricing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_staff_availabilityAdd an availability window for a staff member (companyMembers.id).No findings

    Why it is in this group

    • The name "set_staff_availability" says "set": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Set Staff Availability
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • switch_companyIssue a new MCP access token scoped to another company/organisation.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Issue a new MCP access token scoped to another company/organisation. This does not mutate the current MCP connection: the client must use the returned token on later /mcp requests. Platform operators should prefer explicit-company admin tools when available.

    Annotations the server declares

    • title: Switch Company
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • update_accountUpdate CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.No findings

    Why it is in this group

    • The name "update_account" says "update": a word for a change.
    Description, as the server wrote it
    Update CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.

    Annotations the server declares

    • title: Update Account
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_booking_settingsUpdate global booking settings.No findings

    Why it is in this group

    • The name "update_booking_settings" says "update": a word for a change.
    Description, as the server wrote it
    Update global booking settings. Pass only the fields you want to change.

    Annotations the server declares

    • title: Update Booking Settings
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_campaignUpdate an existing campaign, including audience exclusions.No findings

    Why it is in this group

    • The name "update_campaign" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing campaign, including audience exclusions. Channel cannot be changed after creation. Pass only fields to change.

    Annotations the server declares

    • title: Update Campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_categoryUpdate a CMS post category.No findings

    Why it is in this group

    • The name "update_category" says "update": a word for a change.
    Description, as the server wrote it
    Update a CMS post category.

    Annotations the server declares

    • title: Update Category
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_contactUpdate fields on an existing contact.No findings

    Why it is in this group

    • The name "update_contact" says "update": a word for a change.
    Description, as the server wrote it
    Update fields on an existing contact.

    Annotations the server declares

    • title: Update Contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_crm_taskUpdate a CRM follow-up task you can work: title, description, dueAt (exact datetime, or null to clear), owner (users.id, or null to unassign), status (done sets completion) or prio…No findings

    Why it is in this group

    • The name "update_crm_task" says "update": a word for a change.
    Description, as the server wrote it
    Update a CRM follow-up task you can work: title, description, dueAt (exact datetime, or null to clear), owner (users.id, or null to unassign), status (done sets completion) or priority. Changing the linked account or conversation is not supported; create a new task instead.

    Annotations the server declares

    • title: Update Crm Task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_custom_fieldUpdate a custom field definition label, type, options, required flag, or sort order.No findings

    Why it is in this group

    • The name "update_custom_field" says "update": a word for a change.
    Description, as the server wrote it
    Update a custom field definition label, type, options, required flag, or sort order.

    Annotations the server declares

    • title: Update Custom Field
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_dealUpdate a CRM deal.No findings

    Why it is in this group

    • The name "update_deal" says "update": a word for a change.
    Description, as the server wrote it
    Update a CRM deal. Pass only fields to change; use null for nullable links/fields to clear them.

    Annotations the server declares

    • title: Update Deal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_deal_stageMove a deal to a different pipeline stage.No findings

    Why it is in this group

    • The name "update_deal_stage" says "update": a word for a change.
    Description, as the server wrote it
    Move a deal to a different pipeline stage.

    Annotations the server declares

    • title: Update Deal Stage
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_order_statusUpdate the status of a shop order (e.g.No findings

    Why it is in this group

    • The name "update_order_status" says "update": a word for a change.
    Description, as the server wrote it
    Update the status of a shop order (e.g. confirm, ship, cancel).

    Annotations the server declares

    • title: Update Order Status
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_outletUpdate an existing shop outlet/location by ID.No findings

    Why it is in this group

    • The name "update_outlet" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing shop outlet/location by ID.

    Annotations the server declares

    • title: Update Outlet
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_postUpdate an existing CMS post (any post type).No findings

    Why it is in this group

    • The name "update_post" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing CMS post (any post type). Only provided fields are changed.

    Annotations the server declares

    • title: Update Post
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_post_typeUpdate a custom post type.No findings

    Why it is in this group

    • The name "update_post_type" says "update": a word for a change.
    Description, as the server wrote it
    Update a custom post type. Built-in types (blog_post, page) cannot be modified.

    Annotations the server declares

    • title: Update Post Type
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_post_type_fieldUpdate a field on a post type schema.No findings

    Why it is in this group

    • The name "update_post_type_field" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Update Post Type Field
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_productUpdate an existing product.No findings

    Why it is in this group

    • The name "update_product" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing product. Only provided fields are changed.

    Annotations the server declares

    • title: Update Product
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_promotionUpdate an existing promotion.No findings

    Why it is in this group

    • The name "update_promotion" says "update": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Update an existing promotion. Pass only the fields you want to change.

    Annotations the server declares

    • title: Update Promotion
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_segmentUpdate an existing customer segment by id.No findings

    Why it is in this group

    • The name "update_segment" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing customer segment by id. Pass only the fields to change; criteria replaces the existing rules.

    Annotations the server declares

    • title: Update Segment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_serviceUpdate an existing booking service.No findings

    Why it is in this group

    • The name "update_service" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing booking service. Pass only the fields you want to change.

    Annotations the server declares

    • title: Update Service
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_service_packageUpdate an existing service package.No findings

    Why it is in this group

    • The name "update_service_package" says "update": a word for a change.
    Description, as the server wrote it
    Update an existing service package. Pass only the fields you want to change.

    Annotations the server declares

    • title: Update Service Package
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_service_scheduleUpdate a service schedule window.No findings

    Why it is in this group

    • The name "update_service_schedule" says "update": a word for a change.
    Description, as the server wrote it
    Update a service schedule window. Pass only fields to change.

    Annotations the server declares

    • title: Update Service Schedule
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_surveyUpdate a survey draft or publishing configuration.No findings

    Why it is in this group

    • The name "update_survey" says "update": a word for a change.
    Description, as the server wrote it
    Update a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.

    Annotations the server declares

    • title: Update Survey
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_tagRename or recolor an existing CRM tag.No findings

    Why it is in this group

    • The name "update_tag" says "update": a word for a change.
    Description, as the server wrote it
    Rename or recolor an existing CRM tag.

    Annotations the server declares

    • title: Update Tag
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_taskUpdate a task (status, priority, assignee, due date, completion).No findings

    Why it is in this group

    • The name "update_task" says "update": a word for a change.
    Description, as the server wrote it
    Update a task (status, priority, assignee, due date, completion).

    Annotations the server declares

    • title: Update Task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_ticket_statusUpdate the status of an existing support ticket.No findings

    Why it is in this group

    • The name "update_ticket_status" says "update": a word for a change.
    Description, as the server wrote it
    Update the status of an existing support ticket.

    Annotations the server declares

    • title: Update Ticket Status
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • upload_post_cover_from_urlDownload an external image URL into R2 and attach it as the post's featuredImage.No findings

    Why it is in this group

    • The name "upload_post_cover_from_url" says "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Upload Post Cover From Url
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • upsert_survey_workflowCreate or update a survey automation workflow, usually triggered by survey_response_submitted.No findings

    Why it is in this group

    • The name "upsert_survey_workflow" says "upsert": a word for a change.
    Description, as the server wrote it
    Create or update a survey automation workflow, usually triggered by survey_response_submitted.

    Annotations the server declares

    • title: Upsert Survey Workflow
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 94Claude Code: allow
  • get_attachment_textRead the text/Markdown content of a file attached to a Workroom thread or sent by a customer (PDF, image, or document).No findings

    Why it is in this group

    • The name "get_attachment_text" says "get": a word for reading.
    Description, as the server wrote it
    Read the text/Markdown content of a file attached to a Workroom thread or sent by a customer (PDF, image, or document). Extracts on first read and caches the result. Returns status "ready" with markdown, or "skipped"/"failed"/"not_found" with a reason. Use when a message references an attachment you need to read.

    Annotations the server declares

    • title: Get Attachment Text
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_audit_logFetch a single audit log entry by ID, including before/after snapshots when available.No findings

    Why it is in this group

    • The name "get_audit_log" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single audit log entry by ID, including before/after snapshots when available.

    Annotations the server declares

    • title: Get Audit Log
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_available_slotsFind available booking slots for a service on a specific date.No findings

    Why it is in this group

    • The name "get_available_slots" says "get": a word for reading.
    Description, as the server wrote it
    Find available booking slots for a service on a specific date.

    Annotations the server declares

    • title: Get Available Slots
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_booking_detailGet full booking details including line items, status history, and participants.No findings

    Why it is in this group

    • The name "get_booking_detail" says "get": a word for reading.
    Description, as the server wrote it
    Get full booking details including line items, status history, and participants.

    Annotations the server declares

    • title: Get Booking Detail
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_booking_settingsGet global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.No findings

    Why it is in this group

    • The name "get_booking_settings" says "get": a word for reading.
    Description, as the server wrote it
    Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.

    Annotations the server declares

    • title: Get Booking Settings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_booking_statsGet booking counts: today, this week, this month, and breakdown by status.No findings

    Why it is in this group

    • The name "get_booking_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get booking counts: today, this week, this month, and breakdown by status.

    Annotations the server declares

    • title: Get Booking Stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_campaignGet a campaign by ID, including its recipient source, audience exclusions, channel configuration, and delivery stats.No findings

    Why it is in this group

    • The name "get_campaign" says "get": a word for reading.
    Description, as the server wrote it
    Get a campaign by ID, including its recipient source, audience exclusions, channel configuration, and delivery stats.

    Annotations the server declares

    • title: Get Campaign
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_contactFetch a single contact by ID.No findings

    Why it is in this group

    • The name "get_contact" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single contact by ID.

    Annotations the server declares

    • title: Get Contact
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_conversation_messagesGet messages from a specific conversation thread.No findings

    Why it is in this group

    • The name "get_conversation_messages" says "get": a word for reading.
    Description, as the server wrote it
    Get messages from a specific conversation thread. Shows the chat history between the merchant and a contact.

    Annotations the server declares

    • title: Get Conversation Messages
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_conversation_summaryRead the cached AI summary of a conversation with freshness information.No findings

    Why it is in this group

    • The name "get_conversation_summary" says "get": a word for reading.
    Description, as the server wrote it
    Read the cached AI summary of a conversation with freshness information. Read-only: never calls the model, never bills, never writes. Returns summary null when no cache exists. Use refresh_conversation_summary to regenerate.

    Annotations the server declares

    • title: Get Conversation Summary
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_crm_taskGet one CRM follow-up task you may see, with its UTC due instant and the company timezone.No findings

    Why it is in this group

    • The name "get_crm_task" says "get": a word for reading.
    Description, as the server wrote it
    Get one CRM follow-up task you may see, with its UTC due instant and the company timezone. Unseen and missing tasks return not found.

    Annotations the server declares

    • title: Get Crm Task
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_custom_fieldGet a custom field definition by ID.No findings

    Why it is in this group

    • The name "get_custom_field" says "get": a word for reading.
    Description, as the server wrote it
    Get a custom field definition by ID.

    Annotations the server declares

    • title: Get Custom Field
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_custom_field_valuesGet custom field values for a CRM entity such as an account, contact, deal, or booking.No findings

    Why it is in this group

    • The name "get_custom_field_values" says "get": a word for reading.
    Description, as the server wrote it
    Get custom field values for a CRM entity such as an account, contact, deal, or booking.

    Annotations the server declares

    • title: Get Custom Field Values
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_customer_briefRead-only customer brief for one account: details, tags, linked conversations with cached summaries, and open CRM tasks.No findings

    Why it is in this group

    • The name "get_customer_brief" says "get": a word for reading.
    Description, as the server wrote it
    Read-only customer brief for one account: details, tags, linked conversations with cached summaries, and open CRM tasks. Only records you may read are included. A section you cannot access is returned as null and listed in availableSections. Does not call the AI model.

    Annotations the server declares

    • title: Get Customer Brief
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_dashboard_statsGet high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.No findings

    Why it is in this group

    • The name "get_dashboard_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.

    Annotations the server declares

    • title: Get Dashboard Stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_dealGet detailed CRM deal information by ID.No findings

    Why it is in this group

    • The name "get_deal" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed CRM deal information by ID.

    Annotations the server declares

    • title: Get Deal
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_campaign_exclusionsResolve pending, confirmed, and paid event registrations into unique CRM account IDs for campaign exclusions.No findings

    Why it is in this group

    • The name "get_event_campaign_exclusions" says "get": a word for reading.
    Description, as the server wrote it
    Resolve pending, confirmed, and paid event registrations into unique CRM account IDs for campaign exclusions. Pass accountIds to audienceExclusions only when ready=true; cancelled registrations are omitted and unmatched guests make the result not ready.

    Annotations the server declares

    • title: Get Event Campaign Exclusions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_invoiceFetch a single invoice with line items, payment history, and customer detail.No findings

    Why it is in this group

    • The name "get_invoice" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single invoice with line items, payment history, and customer detail.

    Annotations the server declares

    • title: Get Invoice
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_invoice_statsOutstanding totals, overdue counts, and revenue this period.No findings

    Why it is in this group

    • The name "get_invoice_stats" says "get": a word for reading.
    Description, as the server wrote it
    Outstanding totals, overdue counts, and revenue this period. Used by the weekly-snapshot playbook.

    Annotations the server declares

    • title: Get Invoice Stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_knowledge_documentFetch a single knowledge document with metadata + extraction/review status.No findings

    Why it is in this group

    • The name "get_knowledge_document" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single knowledge document with metadata + extraction/review status. Reviewed content is served via GET /v6/merchant/ai/knowledge/{id}/content; raw/extracted variants are for audit.

    Annotations the server declares

    • title: Get Knowledge Document
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_loyalty_balanceGet a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier.No findings

    Why it is in this group

    • The name "get_loyalty_balance" says "get": a word for reading.
    Description, as the server wrote it
    Get a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier. Returns null if the member is not enrolled.

    Annotations the server declares

    • title: Get Loyalty Balance
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_member_profileGet detailed profile for a specific member/account by ID.No findings

    Why it is in this group

    • The name "get_member_profile" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed profile for a specific member/account by ID.

    Annotations the server declares

    • title: Get Member Profile
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_membership_tierGet a specific membership tier by ID.No findings

    Why it is in this group

    • The name "get_membership_tier" says "get": a word for reading.
    Description, as the server wrote it
    Get a specific membership tier by ID.

    Annotations the server declares

    • title: Get Membership Tier
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_offer_ruleGet offer rule detail including associated products and discounts.No findings

    Why it is in this group

    • The name "get_offer_rule" says "get": a word for reading.
    Description, as the server wrote it
    Get offer rule detail including associated products and discounts.

    Annotations the server declares

    • title: Get Offer Rule
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_orderGet full order detail including line items.No findings

    Why it is in this group

    • The name "get_order" says "get": a word for reading.
    Description, as the server wrote it
    Get full order detail including line items.

    Annotations the server declares

    • title: Get Order
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_plan_statusShow the current organisation plan, subscription/payment state, enabled modules, and quota usage.No findings

    Why it is in this group

    • The name "get_plan_status" says "get": a word for reading.
    Description, as the server wrote it
    Show the current organisation plan, subscription/payment state, enabled modules, and quota usage. Use before deciding whether an agentic operation is allowed.

    Annotations the server declares

    • title: Get Plan Status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_postGet detailed CMS post including content blocks, categories, and tags.No findings

    Why it is in this group

    • The name "get_post" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed CMS post including content blocks, categories, and tags.

    Annotations the server declares

    • title: Get Post
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_productGet full product detail including images, options, and variations.No findings

    Why it is in this group

    • The name "get_product" says "get": a word for reading.
    Description, as the server wrote it
    Get full product detail including images, options, and variations.

    Annotations the server declares

    • title: Get Product
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_promotionGet details of a specific promotion/coupon code.No findings

    Why it is in this group

    • The name "get_promotion" says "get": a word for reading.
    Description, as the server wrote it
    Get details of a specific promotion/coupon code.

    Annotations the server declares

    • title: Get Promotion
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_segmentGet customer segment details including type, criteria, and live member count.No findings

    Why it is in this group

    • The name "get_segment" says "get": a word for reading.
    Description, as the server wrote it
    Get customer segment details including type, criteria, and live member count.

    Annotations the server declares

    • title: Get Segment
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_segment_membersGet the members that belong to a specific segment.No findings

    Why it is in this group

    • The name "get_segment_members" says "get": a word for reading.
    Description, as the server wrote it
    Get the members that belong to a specific segment.

    Annotations the server declares

    • title: Get Segment Members
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_service_detailGet full service details including addons, staff, resources, and tier pricing.No findings

    Why it is in this group

    • The name "get_service_detail" says "get": a word for reading.
    Description, as the server wrote it
    Get full service details including addons, staff, resources, and tier pricing.

    Annotations the server declares

    • title: Get Service Detail
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_service_packageGet service package detail including applicability and selected booking service/event items.No findings

    Why it is in this group

    • The name "get_service_package" says "get": a word for reading.
    Description, as the server wrote it
    Get service package detail including applicability and selected booking service/event items.

    Annotations the server declares

    • title: Get Service Package
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_service_tier_pricingRead every membership-tier pricing configuration for one booking service.No findings

    Why it is in this group

    • The name "get_service_tier_pricing" says "get": a word for reading.
    Description, as the server wrote it
    Read every membership-tier pricing configuration for one booking service.

    Annotations the server declares

    • title: Get Service Tier Pricing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_subscriptionFetch a single subscription with customer, tier, billing cycle, and renewal info.No findings

    Why it is in this group

    • The name "get_subscription" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single subscription with customer, tier, billing cycle, and renewal info.

    Annotations the server declares

    • title: Get Subscription
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_surveyGet survey detail, including blocks, publishing status, visibility, settings, and response count.No findings

    Why it is in this group

    • The name "get_survey" says "get": a word for reading.
    Description, as the server wrote it
    Get survey detail, including blocks, publishing status, visibility, settings, and response count.

    Annotations the server declares

    • title: Get Survey
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_survey_responsesList responses for a survey.No findings

    Why it is in this group

    • The name "get_survey_responses" says "get": a word for reading.
    Description, as the server wrote it
    List responses for a survey.

    Annotations the server declares

    • title: Get Survey Responses
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_survey_statsGet response and invitation metrics for a survey overview dashboard.No findings

    Why it is in this group

    • The name "get_survey_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get response and invitation metrics for a survey overview dashboard.

    Annotations the server declares

    • title: Get Survey Stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_taskGet detailed task information by ID.No findings

    Why it is in this group

    • The name "get_task" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed task information by ID.

    Annotations the server declares

    • title: Get Task
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_ticket_statsGet ticket counts grouped by status.No findings

    Why it is in this group

    • The name "get_ticket_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get ticket counts grouped by status.

    Annotations the server declares

    • title: Get Ticket Stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_whatsapp_connection_statusCheck whether WhatsApp Business is connected for this company, including WABA/phone metadata and the latest agentic connect session state.No findings

    Why it is in this group

    • The name "get_whatsapp_connection_status" says "get": a word for reading.
    Description, as the server wrote it
    Check whether WhatsApp Business is connected for this company, including WABA/phone metadata and the latest agentic connect session state.

    Annotations the server declares

    • title: Get Whatsapp Connection Status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_audit_logsList recent audit log entries for this company.No findings

    Why it is in this group

    • The name "list_audit_logs" says "list": a word for reading.
    Description, as the server wrote it
    List recent audit log entries for this company. Filter by action, resource, resourceId, user, source, outcome, destructive flag, and created date range.

    Annotations the server declares

    • title: List Audit Logs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_bookingsList bookings with filters for date range, status, service, staff, or member.No findings

    Why it is in this group

    • The name "list_bookings" says "list": a word for reading.
    Description, as the server wrote it
    List bookings with filters for date range, status, service, staff, or member.

    Annotations the server declares

    • title: List Bookings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_campaignsList marketing campaigns (email, SMS, WhatsApp, or push) with delivery stats.No findings

    Why it is in this group

    • The name "list_campaigns" says "list": a word for reading.
    Description, as the server wrote it
    List marketing campaigns (email, SMS, WhatsApp, or push) with delivery stats. Use the returned IDs when excluding recipients of previous campaigns.

    Annotations the server declares

    • title: List Campaigns
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_categoriesList CMS post categories.No findings

    Why it is in this group

    • The name "list_categories" says "list": a word for reading.
    Description, as the server wrote it
    List CMS post categories.

    Annotations the server declares

    • title: List Categories
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_contactsList contacts (people linked to CRM accounts), optionally filtered by account or search.No findings

    Why it is in this group

    • The name "list_contacts" says "list": a word for reading.
    Description, as the server wrote it
    List contacts (people linked to CRM accounts), optionally filtered by account or search.

    Annotations the server declares

    • title: List Contacts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_conversationsList messaging conversations across WhatsApp, Messenger, Instagram, Threads, SMS, email, and other enabled channels.No findings

    Why it is in this group

    • The name "list_conversations" says "list": a word for reading.
    Description, as the server wrote it
    List messaging conversations across WhatsApp, Messenger, Instagram, Threads, SMS, email, and other enabled channels. Threads items are public conversations. Shows unread counts and last message time.

    Annotations the server declares

    • title: List Conversations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_crm_tasksList CRM follow-up tasks you may see (portal tasks, owned by users).No findings

    Why it is in this group

    • The name "list_crm_tasks" says "list": a word for reading.
    Description, as the server wrote it
    List CRM follow-up tasks you may see (portal tasks, owned by users). Filter by status, owner ("mine" or ownerId), linked account, dueWindow overdue or today (company timezone), or exact dueAfter/dueBefore datetimes with a zone. Returns the true total and pages. Unassigned tasks cannot be filtered here.

    Annotations the server declares

    • title: List Crm Tasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_custom_fieldsList custom field definitions for CRM entities such as account, contact, deal, or booking.No findings

    Why it is in this group

    • The name "list_custom_fields" says "list": a word for reading.
    Description, as the server wrote it
    List custom field definitions for CRM entities such as account, contact, deal, or booking.

    Annotations the server declares

    • title: List Custom Fields
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_dealsList CRM deals (sales pipeline) with optional filters.No findings

    Why it is in this group

    • The name "list_deals" says "list": a word for reading.
    Description, as the server wrote it
    List CRM deals (sales pipeline) with optional filters.

    Annotations the server declares

    • title: List Deals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_event_registrationsList registrations for an event in the active company, including CRM account IDs for campaign exclusions.No findings

    Why it is in this group

    • The name "list_event_registrations" says "list": a word for reading.
    Description, as the server wrote it
    List registrations for an event in the active company, including CRM account IDs for campaign exclusions.

    Annotations the server declares

    • title: List Event Registrations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_image_modelsList AI image-generation models exposed to merchants (sanitized — provider/cost details hidden).No findings

    Why it is in this group

    • The name "list_image_models" says "list": a word for reading.
    Description, as the server wrote it
    List AI image-generation models exposed to merchants (sanitized — provider/cost details hidden). Use to pick a `modelCode` for `generate_post_cover`.

    Annotations the server declares

    • title: List Image Models
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_invoicesList invoices with optional filters.No findings

    Why it is in this group

    • The name "list_invoices" says "list": a word for reading.
    Description, as the server wrote it
    List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.

    Annotations the server declares

    • title: List Invoices
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_knowledge_documentsList merchant knowledge base documents (uploads + scraped URLs).No findings

    Why it is in this group

    • The name "list_knowledge_documents" says "list": a word for reading.
    Description, as the server wrote it
    List merchant knowledge base documents (uploads + scraped URLs). Use reviewStatus/syncable to see what is ready for agent retrieval. Pass `updatedAfter` for delta sync. Reviewed content is fetched via GET /v6/merchant/ai/knowledge/{id}/content; source audit text is available with ?variant=extracted.

    Annotations the server declares

    • title: List Knowledge Documents
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_my_companiesList all companies/organisations the current user has access to.No findings

    Why it is in this group

    • The name "list_my_companies" says "list": a word for reading.
    Description, as the server wrote it
    List all companies/organisations the current user has access to. Use this to see available orgs before switching.

    Annotations the server declares

    • title: List My Companies
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_notesList notes attached to a member/account, booking, or ticket.No findings

    Why it is in this group

    • The name "list_notes" says "list": a word for reading.
    Description, as the server wrote it
    List notes attached to a member/account, booking, or ticket.

    Annotations the server declares

    • title: List Notes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_notification_logsList notification delivery logs for the current company.No findings

    Why it is in this group

    • The name "list_notification_logs" says "list": a word for reading.
    Description, as the server wrote it
    List notification delivery logs for the current company. Recipients are masked by default for incident-response safety.

    Annotations the server declares

    • title: List Notification Logs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_offer_rulesList upsell/cross-sell offer rules with optional filters.No findings

    Why it is in this group

    • The name "list_offer_rules" says "list": a word for reading.
    Description, as the server wrote it
    List upsell/cross-sell offer rules with optional filters.

    Annotations the server declares

    • title: List Offer Rules
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_ordersList shop orders with optional status and search filters.No findings

    Why it is in this group

    • The name "list_orders" says "list": a word for reading.
    Description, as the server wrote it
    List shop orders with optional status and search filters.

    Annotations the server declares

    • title: List Orders
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_outletsList shop outlets/locations for the company.No findings

    Why it is in this group

    • The name "list_outlets" says "list": a word for reading.
    Description, as the server wrote it
    List shop outlets/locations for the company.

    Annotations the server declares

    • title: List Outlets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_plan_optionsList active FavCRM plans with prices, quotas, included modules, and whether each is the current plan.No findings

    Why it is in this group

    • The name "list_plan_options" says "list": a word for reading.
    Description, as the server wrote it
    List active FavCRM plans with prices, quotas, included modules, and whether each is the current plan.

    Annotations the server declares

    • title: List Plan Options
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_post_type_fieldsList the custom field schema for a post type.No findings

    Why it is in this group

    • The name "list_post_type_fields" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List Post Type Fields
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_post_typesList all post types defined for this company (built-in: blog_post, page; plus any custom types).No findings

    Why it is in this group

    • The name "list_post_types" says "list": a word for reading.
    Description, as the server wrote it
    List all post types defined for this company (built-in: blog_post, page; plus any custom types).

    Annotations the server declares

    • title: List Post Types
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_postsList CMS posts (blog posts and/or pages) with optional filters.No findings

    Why it is in this group

    • The name "list_posts" says "list": a word for reading.
    Description, as the server wrote it
    List CMS posts (blog posts and/or pages) with optional filters.

    Annotations the server declares

    • title: List Posts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_product_categoriesList all product categories for the shop.No findings

    Why it is in this group

    • The name "list_product_categories" says "list": a word for reading.
    Description, as the server wrote it
    List all product categories for the shop.

    Annotations the server declares

    • title: List Product Categories
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_productsList shop products with optional filters by name, status, or category.No findings

    Why it is in this group

    • The name "list_products" says "list": a word for reading.
    Description, as the server wrote it
    List shop products with optional filters by name, status, or category.

    Annotations the server declares

    • title: List Products
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_promotionsList promotion/coupon codes with optional status filter.No findings

    Why it is in this group

    • The name "list_promotions" says "list": a word for reading.
    Description, as the server wrote it
    List promotion/coupon codes with optional status filter.

    Annotations the server declares

    • title: List Promotions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_resourcesList booking resources (rooms, equipment, etc.).No findings

    Why it is in this group

    • The name "list_resources" says "list": a word for reading.
    Description, as the server wrote it
    List booking resources (rooms, equipment, etc.).

    Annotations the server declares

    • title: List Resources
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_reward_schemesList loyalty reward schemes (points/stamps programs) configured for this business.No findings

    Why it is in this group

    • The name "list_reward_schemes" says "list": a word for reading.
    Description, as the server wrote it
    List loyalty reward schemes (points/stamps programs) configured for this business.

    Annotations the server declares

    • title: List Reward Schemes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_segmentsList customer segments.No findings

    Why it is in this group

    • The name "list_segments" says "list": a word for reading.
    Description, as the server wrote it
    List customer segments. Segments group members by criteria for targeted campaigns.

    Annotations the server declares

    • title: List Segments
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_service_categoriesList service categories (groups for booking services like "Treatments", "Classes").No findings

    Why it is in this group

    • The name "list_service_categories" says "list": a word for reading.
    Description, as the server wrote it
    List service categories (groups for booking services like "Treatments", "Classes").

    Annotations the server declares

    • title: List Service Categories
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_service_packagesList service packages/prepaid session bundles with optional search, status, sorting, and pagination.No findings

    Why it is in this group

    • The name "list_service_packages" says "list": a word for reading.
    Description, as the server wrote it
    List service packages/prepaid session bundles with optional search, status, sorting, and pagination.

    Annotations the server declares

    • title: List Service Packages
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_service_schedulesList schedule windows for booking services.No findings

    Why it is in this group

    • The name "list_service_schedules" says "list": a word for reading.
    Description, as the server wrote it
    List schedule windows for booking services.

    Annotations the server declares

    • title: List Service Schedules
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_servicesList booking services with name, price, duration, and status.No findings

    Why it is in this group

    • The name "list_services" says "list": a word for reading.
    Description, as the server wrote it
    List booking services with name, price, duration, and status.

    Annotations the server declares

    • title: List Services
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_shipping_methodsList all shipping methods configured for the shop.No findings

    Why it is in this group

    • The name "list_shipping_methods" says "list": a word for reading.
    Description, as the server wrote it
    List all shipping methods configured for the shop.

    Annotations the server declares

    • title: List Shipping Methods
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_staffList staff/team members in the business.No findings

    Why it is in this group

    • The name "list_staff" says "list": a word for reading.
    Description, as the server wrote it
    List staff/team members in the business.

    Annotations the server declares

    • title: List Staff
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_subscriptionsList member subscriptions.No findings

    Why it is in this group

    • The name "list_subscriptions" says "list": a word for reading.
    Description, as the server wrote it
    List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.

    Annotations the server declares

    • title: List Subscriptions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_survey_invitationsList survey invitation history without exposing token hashes or old invitation tokens.No findings

    Why it is in this group

    • The name "list_survey_invitations" says "list": a word for reading.
    Description, as the server wrote it
    List survey invitation history without exposing token hashes or old invitation tokens.

    Annotations the server declares

    • title: List Survey Invitations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_survey_workflowsList automation workflows attached to a survey.No findings

    Why it is in this group

    • The name "list_survey_workflows" says "list": a word for reading.
    Description, as the server wrote it
    List automation workflows attached to a survey.

    Annotations the server declares

    • title: List Survey Workflows
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_surveysList surveys with optional status/search filters.No findings

    Why it is in this group

    • The name "list_surveys" says "list": a word for reading.
    Description, as the server wrote it
    List surveys with optional status/search filters.

    Annotations the server declares

    • title: List Surveys
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tagsList all available tags for the merchant.No findings

    Why it is in this group

    • The name "list_tags" says "list": a word for reading.
    Description, as the server wrote it
    List all available tags for the merchant.

    Annotations the server declares

    • title: List Tags
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tasksList tasks with optional status, assignee, and account filters.No findings

    Why it is in this group

    • The name "list_tasks" says "list": a word for reading.
    Description, as the server wrote it
    List tasks with optional status, assignee, and account filters.

    Annotations the server declares

    • title: List Tasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_templatesList the company's WhatsApp message templates with their Meta approval status (PENDING / APPROVED / REJECTED).No findings

    Why it is in this group

    • The name "list_templates" says "list": a word for reading.
    Description, as the server wrote it
    List the company's WhatsApp message templates with their Meta approval status (PENDING / APPROVED / REJECTED). Check this to see which templates are approved before referencing one in a campaign.

    Annotations the server declares

    • title: List Templates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_ticketsList support tickets with optional filters.No findings

    Why it is in this group

    • The name "list_tickets" says "list": a word for reading.
    Description, as the server wrote it
    List support tickets with optional filters.

    Annotations the server declares

    • title: List Tickets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tiersList all membership tiers with member counts and stats.No findings

    Why it is in this group

    • The name "list_tiers" says "list": a word for reading.
    Description, as the server wrote it
    List all membership tiers with member counts and stats.

    Annotations the server declares

    • title: List Tiers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • preview_segment_countPreview how many customers would match dynamic segment criteria before creating or updating a segment.No findings

    Why it is in this group

    • The name "preview_segment_count" says "preview": a word for reading.
    Description, as the server wrote it
    Preview how many customers would match dynamic segment criteria before creating or updating a segment.

    Annotations the server declares

    • title: Preview Segment Count
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • query_company_knowledgeSearch this company's reviewed knowledge base and return grounded snippets with source document IDs.No findings

    Why it is in this group

    • The name "query_company_knowledge" says "query": a word for reading.
    Description, as the server wrote it
    Search this company's reviewed knowledge base and return grounded snippets with source document IDs. Use for merchant policies, FAQs, pricing notes, brand guidance, and other uploaded references.

    Annotations the server declares

    • title: Query Company Knowledge
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • query_favcrm_platformSearch FavCRM MCP tools, enabled skills, and feature areas for how to use the platform.No findings

    Why it is in this group

    • The name "query_favcrm_platform" says "query": a word for reading.
    Description, as the server wrote it
    Search FavCRM MCP tools, enabled skills, and feature areas for how to use the platform. Use before guessing tool names or JSON arguments.

    Annotations the server declares

    • title: Query Favcrm Platform
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_audit_logsSearch audit logs by free text across action, resource, resource ID, changes JSON, and metadata JSON.No findings

    Why it is in this group

    • The name "search_audit_logs" says "search": a word for reading.
    Description, as the server wrote it
    Search audit logs by free text across action, resource, resource ID, changes JSON, and metadata JSON.

    Annotations the server declares

    • title: Search Audit Logs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_crmSearch across CRM accounts and contacts by name, email, or phone.No findings

    Why it is in this group

    • The name "search_crm" says "search": a word for reading.
    Description, as the server wrote it
    Search across CRM accounts and contacts by name, email, or phone.

    Annotations the server declares

    • title: Search Crm
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_membersSearch and filter members/accounts.No findings

    Why it is in this group

    • The name "search_members" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search Members
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_toolsSearch the available FavCRM tool catalog for relevant operations.No findings

    Why it is in this group

    • The name "search_tools" says "search": a word for reading.
    Description, as the server wrote it
    Search the available FavCRM tool catalog for relevant operations. Use this when the curated direct tool list does not contain the operation you need.

    Annotations the server declares

    • title: Search Tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • validate_campaignValidate a campaign before sending.No findings

    Why it is in this group

    • The name "validate_campaign" says "validate": a word for reading.
    Description, as the server wrote it
    Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.

    Annotations the server declares

    • title: Validate Campaign
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • validate_promotionCheck if a promotion code is valid for a given order.No findings

    Why it is in this group

    • The name "validate_promotion" says "validate": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Validate Promotion
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http favcrm https://api.favcrm.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__favcrm__search_members",
      "mcp__favcrm__get_member_profile",
      "mcp__favcrm__list_tags",
      "mcp__favcrm__list_tiers",
      "mcp__favcrm__get_membership_tier",
      "mcp__favcrm__get_loyalty_balance",
      "mcp__favcrm__get_dashboard_stats",
      "mcp__favcrm__list_bookings",
      "mcp__favcrm__get_booking_detail",
      "mcp__favcrm__get_booking_stats",
      "mcp__favcrm__get_available_slots",
      "mcp__favcrm__list_services",
      "mcp__favcrm__get_service_detail",
      "mcp__favcrm__get_service_tier_pricing",
      "mcp__favcrm__list_service_schedules",
      "mcp__favcrm__list_service_categories",
      "mcp__favcrm__get_booking_settings",
      "mcp__favcrm__list_tickets",
      "mcp__favcrm__get_ticket_stats",
      "mcp__favcrm__list_surveys",
      "mcp__favcrm__get_survey",
      "mcp__favcrm__get_survey_stats",
      "mcp__favcrm__get_survey_responses",
      "mcp__favcrm__list_survey_invitations",
      "mcp__favcrm__list_survey_workflows",
      "mcp__favcrm__list_deals",
      "mcp__favcrm__get_deal",
      "mcp__favcrm__list_contacts",
      "mcp__favcrm__get_contact",
      "mcp__favcrm__list_custom_fields",
      "mcp__favcrm__get_custom_field",
      "mcp__favcrm__get_custom_field_values",
      "mcp__favcrm__list_tasks",
      "mcp__favcrm__get_task",
      "mcp__favcrm__search_crm",
      "mcp__favcrm__list_invoices",
      "mcp__favcrm__get_invoice",
      "mcp__favcrm__get_invoice_stats",
      "mcp__favcrm__list_event_registrations",
      "mcp__favcrm__get_event_campaign_exclusions",
      "mcp__favcrm__list_subscriptions",
      "mcp__favcrm__get_subscription",
      "mcp__favcrm__list_campaigns",
      "mcp__favcrm__get_campaign",
      "mcp__favcrm__validate_campaign",
      "mcp__favcrm__list_notification_logs",
      "mcp__favcrm__list_conversations",
      "mcp__favcrm__list_audit_logs",
      "mcp__favcrm__search_audit_logs",
      "mcp__favcrm__get_audit_log",
      "mcp__favcrm__list_notes",
      "mcp__favcrm__list_promotions",
      "mcp__favcrm__get_promotion",
      "mcp__favcrm__validate_promotion",
      "mcp__favcrm__list_reward_schemes",
      "mcp__favcrm__list_staff",
      "mcp__favcrm__list_resources",
      "mcp__favcrm__list_service_packages",
      "mcp__favcrm__get_service_package",
      "mcp__favcrm__get_plan_status",
      "mcp__favcrm__list_plan_options",
      "mcp__favcrm__get_whatsapp_connection_status",
      "mcp__favcrm__list_my_companies",
      "mcp__favcrm__list_posts",
      "mcp__favcrm__get_post",
      "mcp__favcrm__list_image_models",
      "mcp__favcrm__list_categories",
      "mcp__favcrm__list_post_types",
      "mcp__favcrm__list_post_type_fields",
      "mcp__favcrm__get_conversation_messages",
      "mcp__favcrm__get_attachment_text",
      "mcp__favcrm__list_segments",
      "mcp__favcrm__get_segment",
      "mcp__favcrm__get_segment_members",
      "mcp__favcrm__preview_segment_count",
      "mcp__favcrm__list_templates",
      "mcp__favcrm__list_outlets",
      "mcp__favcrm__list_products",
      "mcp__favcrm__get_product",
      "mcp__favcrm__list_product_categories",
      "mcp__favcrm__list_orders",
      "mcp__favcrm__get_order",
      "mcp__favcrm__list_offer_rules",
      "mcp__favcrm__get_offer_rule",
      "mcp__favcrm__query_favcrm_platform",
      "mcp__favcrm__search_tools",
      "mcp__favcrm__query_company_knowledge",
      "mcp__favcrm__list_knowledge_documents",
      "mcp__favcrm__get_knowledge_document",
      "mcp__favcrm__list_shipping_methods",
      "mcp__favcrm__get_customer_brief",
      "mcp__favcrm__get_conversation_summary",
      "mcp__favcrm__list_crm_tasks",
      "mcp__favcrm__get_crm_task"
    ],
    "ask": [
      "mcp__favcrm__preview_customer_import",
      "mcp__favcrm__commit_customer_import",
      "mcp__favcrm__create_account",
      "mcp__favcrm__update_account",
      "mcp__favcrm__create_tag",
      "mcp__favcrm__update_tag",
      "mcp__favcrm__attach_tags",
      "mcp__favcrm__issue_rewards",
      "mcp__favcrm__enrol_membership",
      "mcp__favcrm__earn_loyalty_points",
      "mcp__favcrm__set_service_tier_pricing",
      "mcp__favcrm__copy_service_tier_pricing",
      "mcp__favcrm__create_service",
      "mcp__favcrm__update_service",
      "mcp__favcrm__create_service_schedule",
      "mcp__favcrm__update_service_schedule",
      "mcp__favcrm__assign_staff_to_service",
      "mcp__favcrm__link_resource_to_service",
      "mcp__favcrm__create_service_category",
      "mcp__favcrm__create_resource",
      "mcp__favcrm__set_resource_availability",
      "mcp__favcrm__set_staff_availability",
      "mcp__favcrm__update_booking_settings",
      "mcp__favcrm__create_ticket",
      "mcp__favcrm__update_ticket_status",
      "mcp__favcrm__create_survey",
      "mcp__favcrm__update_survey",
      "mcp__favcrm__create_survey_invitation",
      "mcp__favcrm__upsert_survey_workflow",
      "mcp__favcrm__create_deal",
      "mcp__favcrm__update_deal",
      "mcp__favcrm__update_deal_stage",
      "mcp__favcrm__mark_deal_won",
      "mcp__favcrm__mark_deal_lost",
      "mcp__favcrm__convert_lead",
      "mcp__favcrm__create_contact",
      "mcp__favcrm__update_contact",
      "mcp__favcrm__set_primary_contact",
      "mcp__favcrm__create_custom_field",
      "mcp__favcrm__update_custom_field",
      "mcp__favcrm__set_custom_field_values",
      "mcp__favcrm__create_task",
      "mcp__favcrm__update_task",
      "mcp__favcrm__create_invoice",
      "mcp__favcrm__record_invoice_payment",
      "mcp__favcrm__mark_invoice_sent",
      "mcp__favcrm__restore_invoice",
      "mcp__favcrm__create_subscription",
      "mcp__favcrm__pause_subscription",
      "mcp__favcrm__resume_subscription",
      "mcp__favcrm__create_campaign",
      "mcp__favcrm__update_campaign",
      "mcp__favcrm__restore_campaign",
      "mcp__favcrm__undo_campaign_send",
      "mcp__favcrm__clone",
      "mcp__favcrm__create_note",
      "mcp__favcrm__confirm_booking",
      "mcp__favcrm__complete_booking",
      "mcp__favcrm__mark_no_show",
      "mcp__favcrm__create_promotion",
      "mcp__favcrm__update_promotion",
      "mcp__favcrm__restore_promotion",
      "mcp__favcrm__create_service_package",
      "mcp__favcrm__update_service_package",
      "mcp__favcrm__restore_service_package",
      "mcp__favcrm__check_plan_operation",
      "mcp__favcrm__create_plan_upgrade_link",
      "mcp__favcrm__create_team_member_invite",
      "mcp__favcrm__accept_team_invite_request",
      "mcp__favcrm__accept_team_invite_verify",
      "mcp__favcrm__create_whatsapp_connect_link",
      "mcp__favcrm__switch_company",
      "mcp__favcrm__create_post",
      "mcp__favcrm__update_post",
      "mcp__favcrm__restore_post",
      "mcp__favcrm__generate_image",
      "mcp__favcrm__generate_post_cover",
      "mcp__favcrm__attach_post_cover_from_job",
      "mcp__favcrm__upload_post_cover_from_url",
      "mcp__favcrm__create_category",
      "mcp__favcrm__update_category",
      "mcp__favcrm__restore_category",
      "mcp__favcrm__create_post_type",
      "mcp__favcrm__create_post_type_field",
      "mcp__favcrm__update_post_type",
      "mcp__favcrm__restore_post_type",
      "mcp__favcrm__update_post_type_field",
      "mcp__favcrm__restore_post_type_field",
      "mcp__favcrm__reorder_post_type_fields",
      "mcp__favcrm__append_post_block",
      "mcp__favcrm__replace_post_block",
      "mcp__favcrm__reorder_post_blocks",
      "mcp__favcrm__create_booking",
      "mcp__favcrm__find_or_create_workroom_thread",
      "mcp__favcrm__post_workroom_message",
      "mcp__favcrm__create_inbox_reply_suggestion",
      "mcp__favcrm__request_send_approval",
      "mcp__favcrm__create_segment",
      "mcp__favcrm__update_segment",
      "mcp__favcrm__set_segment_members",
      "mcp__favcrm__create_template",
      "mcp__favcrm__create_outlet",
      "mcp__favcrm__update_outlet",
      "mcp__favcrm__create_product",
      "mcp__favcrm__update_product",
      "mcp__favcrm__create_product_category",
      "mcp__favcrm__create_variation",
      "mcp__favcrm__update_order_status",
      "mcp__favcrm__create_offer_rule",
      "mcp__favcrm__scrape_knowledge_url",
      "mcp__favcrm__add_knowledge_text",
      "mcp__favcrm__restore_knowledge_document",
      "mcp__favcrm__report_agent_issue",
      "mcp__favcrm__register_organisation_request",
      "mcp__favcrm__register_organisation_verify",
      "mcp__favcrm__refresh_conversation_summary",
      "mcp__favcrm__create_crm_task",
      "mcp__favcrm__update_crm_task",
      "mcp__favcrm__backfill_conversation_summaries"
    ],
    "deny": [
      "mcp__favcrm__delete_account",
      "mcp__favcrm__delete_tag",
      "mcp__favcrm__detach_tags",
      "mcp__favcrm__archive_survey",
      "mcp__favcrm__delete_deal",
      "mcp__favcrm__delete_contact",
      "mcp__favcrm__delete_custom_field",
      "mcp__favcrm__delete_task",
      "mcp__favcrm__void_invoice",
      "mcp__favcrm__delete_invoice",
      "mcp__favcrm__cancel_subscription",
      "mcp__favcrm__delete_campaign",
      "mcp__favcrm__revert_audit_action",
      "mcp__favcrm__cancel_booking",
      "mcp__favcrm__delete_promotion",
      "mcp__favcrm__delete_service_package",
      "mcp__favcrm__delete_post",
      "mcp__favcrm__delete_category",
      "mcp__favcrm__delete_post_type",
      "mcp__favcrm__delete_post_type_field",
      "mcp__favcrm__remove_post_block",
      "mcp__favcrm__delete_segment",
      "mcp__favcrm__execute_tool",
      "mcp__favcrm__delete_knowledge_document"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as favcrm. Review it before you use it.