FavCRM
REMOTE · API.FAVCRM.IO · SCANNED SEP 20
Agentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability87
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 19709 tokens (~83/item across 235 items; 230 tools + 5 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 20 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 231 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the FavCRM MCP server?
FavCRM is a hosted endpoint at https://api.favcrm.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.favcrm.io
claude mcp add --transport http io-favcrm-favcrm 'https://api.favcrm.io/mcp'
{
"mcpServers": {
"io-favcrm-favcrm": {
"url": "https://api.favcrm.io/mcp"
}
}
} {
"servers": {
"io-favcrm-favcrm": {
"type": "http",
"url": "https://api.favcrm.io/mcp"
}
}
} [mcp_servers.io-favcrm-favcrm] url = "https://api.favcrm.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-favcrm-favcrm": {
"type": "remote",
"url": "https://api.favcrm.io/mcp",
"enabled": true
}
}
} openclaw mcp add io-favcrm-favcrm --url 'https://api.favcrm.io/mcp' --transport streamable-http
mcp_servers:
io-favcrm-favcrm:
url: "https://api.favcrm.io/mcp" {
"McpServers": {
"io-favcrm-favcrm": {
"Transport": "http",
"Url": "https://api.favcrm.io/mcp"
}
}
} assistant mcp add io-favcrm-favcrm -t streamable-http -u 'https://api.favcrm.io/mcp'
{
"mcpServers": {
"io-favcrm-favcrm": {
"type": "http",
"url": "https://api.favcrm.io/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 12 Sept 26 0
- Stability: fail → pass ▲ security
- 5 Sept 26 0
- “create_broadcast” reworded the description of “recipientFilter” cosmetic
1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.
- 4 Sept 26 0
- Tool “create_campaign” rewrote its description, which is the text the model reads security
- Tool “list_campaigns” rewrote its description, which is the text the model reads security
- Tool “update_campaign” rewrote its description, which is the text the model reads security
- New tool “get_campaign” functional
- New tool “get_event_campaign_exclusions” functional
- New tool “list_event_registrations” functional
- New tool “undo_campaign_send” functional
- “create_campaign” added an optional parameter “audienceExclusions” cosmetic
- “update_campaign” added an optional parameter “audienceExclusions” cosmetic
- “request_send_approval” reworded the description of “payload” cosmetic
- “update_campaign” reworded the description of “recipientIds” cosmetic
- “update_campaign” reworded the description of “recipientSource” cosmetic
- “update_campaign” reworded the description of “status” cosmetic
- 29 Aug 26 0
- Tool “switch_company” rewrote its description, which is the text the model reads security
- New tool “copy_service_tier_pricing” functional
- New tool “get_service_tier_pricing” functional
- New tool “set_service_tier_pricing” functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 96 to 100.
- 19 Aug 26 0
- “update_booking_settings” added an optional parameter “accessPassAfterMinutes” cosmetic
- “update_booking_settings” added an optional parameter “accessPassBeforeMinutes” cosmetic
2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 17 Aug 26 0
- Tool “convert_lead” rewrote its description, which is the text the model reads security
- “convert_lead” reworded the description of “createDeal” cosmetic
- “convert_lead” reworded the description of “dealStage” cosmetic
- “update_deal_stage” reworded the description of “stage” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://api.favcrm.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=favcrm.io | CN=WE1,O=Google Trust Services,C=US | 11 Aug 2026 | 9 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | 1a2258781be3bc150e2b980c2873f303 |
| SANs: favcrm.io, api.favcrm.io, *.api.favcrm.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.favcrm.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| favcrm.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000 |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | no-referrer |
Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.favcrm.io/mcp | Verified | 200 | |
| http (plaintext) | http://api.favcrm.io/mcp | HTTPS enforced | 301 | https://api.favcrm.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
set_custom_field_values ~65
Set or clear custom field values for a CRM entity. Values are stored as strings; pass null to clear a value.
| Name | Type | Req | Description |
|---|---|---|---|
| entityId | string | yes | Entity ID |
| entityType | string | yes | Entity type |
| values | array | yes | Values to upsert |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
set_primary_contact ~43
Set a contact as the primary contact for its CRM account and demote other contacts on that account.
| Name | Type | Req | Description |
|---|---|---|---|
| contactId | string | yes | The contact ID to make primary |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
set_resource_availability ~134
Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | YYYY-MM-DD for a specific date instead of dayOfWeek |
| dayOfWeek | string | – | Day of week (0=Sun..6=Sat) |
| endTime | string | yes | HH:MM (24h) |
| isRecurring | boolean | – | Default true |
| resourceId | string | yes | Resource ID |
| startTime | string | yes | HH:MM (24h) |
| type | string | – | Default available |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
set_segment_members ~57
Replace the members of a STATIC customer segment with the given account IDs. The segment is converted to STATIC.
| Name | Type | Req | Description |
|---|---|---|---|
| accountIds | array | yes | CRM account IDs to set as segment members |
| segmentId | string | yes | The segment ID |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
set_service_tier_pricing ~83
Set the complete pricing and booking-policy configuration for one membership tier on a booking service.
| Name | Type | Req | Description |
|---|---|---|---|
| advanceBookingDays | – | yes | – |
| bookingLimits | – | yes | – |
| discountPercent | – | yes | – |
| priceOverride | – | yes | – |
| serviceId | string | yes | Booking service ID |
| tierId | string | yes | Membership tier ID |
| timeSlotPricing | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
set_staff_availability ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | YYYY-MM-DD for a specific date instead of dayOfWeek |
| dayOfWeek | string | – | Day of week (0=Sun..6=Sat) |
| endTime | string | yes | HH:MM (24h) |
| isRecurring | boolean | – | Default true |
| memberId | string | yes | companyMembers.id of the staff |
| startTime | string | yes | HH:MM (24h) |
| type | string | – | Default available |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
switch_company ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | string | yes | The company ID to switch to (use list_my_companies to find available IDs) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
undo_campaign_send ~52
Undo a campaign send during its one-minute safety buffer. Use immediately when the merchant says to stop or undo a submitted campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | Buffered campaign ID to return to its prior draft state |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_account ~208
Update CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | yes | The account ID to update |
| assignedTo | – | – | Assigned team member user ID, or null to clear |
| dateOfBirth | – | – | YYYY-MM-DD date of birth, or null to clear |
| string | – | Email address | |
| firstName | – | – | First name for individual accounts |
| gender | string | – | Gender |
| lastName | – | – | Last name for individual accounts |
| lifeStage | string | – | CRM life stage |
| memberCode | – | – | Merchant member code, or null to clear |
| name | string | – | Account/customer display name |
| notes | string | – | Internal notes |
| phone | string | – | Phone number |
| referredByAccountId | – | – | Referrer account ID, or null to clear |
| source | string | – | Acquisition source |
| type | string | – | Account type |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_booking_settings ~362
Update global booking settings. Pass only the fields you want to change.
| Name | Type | Req | Description |
|---|---|---|---|
| accessPassAfterMinutes | integer | – | Minutes after booking end when the access QR remains usable |
| accessPassBeforeMinutes | integer | – | Minutes before booking start when the access QR becomes usable |
| allowMemberCancellation | boolean | – | Allow members to cancel bookings from the customer portal |
| blockUntilFinished | boolean | – | Block customers from booking again while they have active bookings |
| bookingReminderEnabled | boolean | – | Send the default pre-booking reminder |
| bookingReminderLeadHours | integer | – | Hours before booking start for the default reminder |
| calendarStyle | string | – | Booking flow calendar presentation |
| cooldownMessage | – | – | Optional message shown when cooldown blocks a booking |
| globalCooldownDays | – | – | Minimum days between customer bookings, or null to disable |
| hideUnavailableTimeslots | boolean | – | Hide unavailable timeslots instead of showing them as full |
| memberCancellationCutoffHours | – | – | Hours before booking start when member cancellation closes, or null for no cutoff |
| memberReschedulingMode | string | – | Choose whether rescheduling is disabled, merchant-only, or available to members |
| minimumAdvanceBookingMinutes | – | – | Minutes before slot start when customer booking closes. null/0 = no cutoff; set > 0 to require advance notice |
| requireBookingConfirmation | boolean | – | Require merchant confirmation before bookings are confirmed |
| sameDayReminderEnabled | boolean | – | Send an additional same-day reminder before booking start |
| sameDayReminderLeadHours | integer | – | Hours before booking start for the same-day reminder |
| showAccessPass | boolean | – | Show access pass/package options in booking flow |
| showCoupon | boolean | – | Show coupon field in booking flow |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_campaign ~179
Update an existing campaign, including audience exclusions. Channel cannot be changed after creation. Pass only fields to change.
| Name | Type | Req | Description |
|---|---|---|---|
| audienceExclusions | object | – | Optional exclusions: accountIds contains specific customer account IDs; campaignIds contains previous campaign IDs whose accepted recipients must be omitted. Pass empty arrays to clear exclusions. |
| campaignId | string | yes | Campaign ID |
| channelConfig | object | – | For email, use subject + htmlBody + optional plainTextBody. Legacy html is normalized to htmlBody. |
| name | string | – | Name |
| recipientIds | array | – | Explicit customer account IDs |
| recipientSource | string | – | Recipient source: all | segment | individual | csv | list |
| scheduledAt | – | – | Scheduled timestamp (ISO 8601) |
| segmentId | – | – | Segment ID |
| status | string | – | New campaign status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_category ~61
Update a CMS post category.
| Name | Type | Req | Description |
|---|---|---|---|
| categoryId | string | yes | Category ID |
| description | – | – | Description |
| name | string | – | Name |
| slug | string | – | URL slug |
| sortOrder | number | – | Sort order (lower = earlier) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_contact ~75
Update fields on an existing contact.
| Name | Type | Req | Description |
|---|---|---|---|
| contactId | string | yes | The contact ID |
| string | – | Email address | |
| isPrimary | boolean | – | Mark as the primary contact |
| jobTitle | string | – | Job title |
| name | string | – | Name |
| phone | string | – | Phone number |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_custom_field ~98
Update a custom field definition label, type, options, required flag, or sort order.
| Name | Type | Req | Description |
|---|---|---|---|
| definitionId | string | yes | Custom field definition ID |
| fieldLabel | string | – | Human-readable label |
| fieldType | string | – | Field type |
| isRequired | boolean | – | Whether this field is required |
| options | array | – | Allowed values for select/multiselect fields |
| sortOrder | number | – | Display order |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_deal ~174
Update a CRM deal. Pass only fields to change; use null for nullable links/fields to clear them.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | – | – | Linked CRM account ID, or null to clear |
| amount | – | – | Deal amount, or null to clear |
| closingDate | – | – | Expected closing date, or null to clear |
| contactId | – | – | Linked contact ID, or null to clear |
| dealId | string | yes | The deal ID |
| dealType | – | – | Deal type/category, or null to clear |
| description | – | – | Deal notes or description, or null to clear |
| name | string | – | Deal name |
| ownerId | – | – | Owner user/team member ID, or null to clear |
| probability | – | – | Win probability, or null to clear |
| stage | – | – | Pipeline stage, or null to clear |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_deal_stage ~84
Move a deal to a different pipeline stage.
| Name | Type | Req | Description |
|---|---|---|---|
| dealId | string | yes | The deal ID |
| lostReason | string | – | Required when moving to lost |
| probability | string | – | Optional win probability (percent string) |
| stage | string | yes | New pipeline stage. "lead", "new" and "open" are accepted aliases of "discovery". |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_order_status ~47
Update the status of a shop order (e.g. confirm, ship, cancel).
| Name | Type | Req | Description |
|---|---|---|---|
| orderId | string | yes | The order UUID |
| status | string | yes | New order status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_outlet ~108
Update an existing shop outlet/location by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptsOrders | boolean | – | Whether outlet accepts online orders |
| address | – | – | Street address |
| id | string | yes | Outlet ID (UUID) |
| isActive | boolean | – | Whether outlet is active |
| latitude | – | – | Latitude |
| logoUrl | – | – | Logo URL |
| longitude | – | – | Longitude |
| name | string | – | Outlet name |
| phone | – | – | Contact phone |
| sortOrder | integer | – | Display sort order |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_post ~343
Update an existing CMS post (any post type). Only provided fields are changed.
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | Replaces the entire ordered block array. Use append_post_block / replace_post_block / remove_post_block / reorder_post_blocks for per-block edits. Each block: { id, version, type, data }. Types: para… |
| categoryIds | array | – | Category IDs |
| excerpt | string | – | Plain-text summary only — never JSON. Omit to leave unchanged. |
| featuredImage | string | – | Cover image URL |
| meta | object | – | Custom field values; merged shallowly with existing meta. Use this for structured data, not excerpt. |
| parentId | – | – | Parent post ID for nested types. |
| postId | string | yes | The post ID |
| publishedAt | – | – | Publish timestamp (ISO 8601) |
| seoDescription | string | – | SEO description override |
| seoTitle | string | – | SEO title override |
| slug | string | – | URL slug (must be unique per company+type). |
| sortOrder | number | – | Sort order (lower = earlier) |
| status | string | – | Post status |
| tagIds | array | – | Tag IDs to sync (replaces existing tags) |
| title | string | – | Post title |
| type | string | – | Change post type (e.g. blog_post → treatment). Slug is re-checked for uniqueness under the new type. |
| visibility | string | – | Visibility |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_post_type ~151
Update a custom post type. Built-in types (blog_post, page) cannot be modified.
| Name | Type | Req | Description |
|---|---|---|---|
| icon | – | – | Icon name or URL |
| label | string | – | Display label |
| labelPlural | string | – | Plural display label |
| postTypeId | string | yes | Post type ID |
| sortOrder | number | – | Sort order (lower = earlier) |
| supportsBlocks | boolean | – | Allow content blocks (rich body) |
| supportsCategories | boolean | – | Allow categories on this post type |
| supportsExcerpt | boolean | – | Allow an excerpt field |
| supportsFeaturedImage | boolean | – | Allow a featured image |
| supportsNesting | boolean | – | Allow parent/child nesting |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_post_type_field ~187
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.
| Name | Type | Req | Description |
|---|---|---|---|
| fieldId | string | yes | Field ID |
| fieldType | string | – | Field type |
| fields | – | – | Child fields for fieldType="repeater". |
| force | boolean | – | Override safety guards. Required to change fieldType or flip required=true on a field that already has data in posts. |
| helpText | – | – | Help text shown next to the input |
| label | string | – | Display label |
| options | – | – | For URL fields, { uploadable: true } enables file upload while preserving a URL string in meta. |
| postTypeId | string | yes | Post type ID |
| required | boolean | – | Whether the field is required |
| sortOrder | number | – | Sort order (lower = earlier) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_product ~119
Update an existing product. Only provided fields are changed.
| Name | Type | Req | Description |
|---|---|---|---|
| categoryIds | array | – | Category IDs (first is primary). Replaces all existing categories. |
| description | string | – | Product description |
| discountPrice | string | – | Discounted price |
| memberPrice | string | – | Members-only price |
| name | string | – | Product name |
| price | string | – | Price as decimal string |
| productId | number | yes | The product ID |
| sku | string | – | SKU code |
| status | string | – | Product status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_promotion ~132
Update an existing promotion. Pass only the fields you want to change.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | Promotion code |
| endsAt | – | – | End timestamp (ISO 8601) |
| name | string | – | Name |
| promotionId | string | yes | Promotion ID |
| startsAt | – | – | Start timestamp (ISO 8601) |
| status | string | – | Status filter |
| type | string | – | Type |
| usageLimitPerCustomer | – | – | Usage limit per customer |
| usageLimitTotal | – | – | Total usage limit across all customers |
| value | string | – | Discount value (numeric or decimal string) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_segment ~87
Update an existing customer segment by id. Pass only the fields to change; criteria replaces the existing rules.
| Name | Type | Req | Description |
|---|---|---|---|
| criteria | – | – | Replace dynamic criteria, or null to clear criteria |
| description | string | – | New segment description |
| name | string | – | New segment name |
| segmentId | string | yes | The segment ID to update |
| segmentType | string | – | Change segment type |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_service ~241
Update an existing booking service. Pass only the fields you want to change.
| Name | Type | Req | Description |
|---|---|---|---|
| capacity | number | – | Participants per slot |
| categoryId | – | – | Category ID |
| commissionCurrency | – | – | Commission currency (ISO code) |
| commissionType | – | – | Commission type: "fixed" or "percentage" |
| commissionValue | – | – | Commission amount as decimal string |
| cooldownMinutes | number | – | Cooldown minutes between bookings |
| description | string | – | Description |
| durationMinutes | number | – | Duration of one booking in minutes |
| name | string | – | Name |
| price | string | – | Decimal string, e.g. "80.00" |
| requireLogin | boolean | – | If true, guests cannot book without an account |
| requiresConfirmation | boolean | – | If true, bookings start pending and need explicit confirmation |
| requiresResource | boolean | – | Whether the service requires a resource (room/equipment) |
| requiresStaff | boolean | – | Whether the service requires staff assignment |
| serviceId | string | yes | Service ID to update |
| status | string | – | Status filter |
| visibility | string | – | Visibility: public | members_only | hidden |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_service_package ~139
Update an existing service package. Pass only the fields you want to change.
| Name | Type | Req | Description |
|---|---|---|---|
| applicableItems | array | – | Item IDs the package can be redeemed against |
| applicableType | string | – | What this package applies to: services | products | both |
| description | – | – | Description |
| name | string | – | Name |
| packageId | string | yes | Service package ID to update |
| price | number | – | Decimal string, e.g. "80.00" |
| sessionCount | integer | – | Number of sessions in the package |
| status | string | – | Status filter |
| validDays | integer | – | Validity period in days |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_service_schedule ~183
Update a service schedule window. Pass only fields to change.
| Name | Type | Req | Description |
|---|---|---|---|
| byWeekday | – | – | Weekdays (0=Mon..6=Sun) for weekly recurrence |
| date | string | – | Date (YYYY-MM-DD) |
| endTime | string | – | End time (HH:mm) |
| maxCapacity | number | – | Maximum capacity for this slot |
| notes | – | – | Free-form notes |
| recurrence | string | – | Recurrence rule: none | daily | weekly | monthly |
| recurrenceEndDate | – | – | Recurrence end date (YYYY-MM-DD) |
| recurrenceInterval | number | – | Recurrence interval (e.g. every N weeks) |
| resourceId | – | – | Resource ID (room/equipment) |
| scheduleId | string | yes | Schedule ID |
| staffId | – | – | Staff member ID |
| startTime | string | – | Start time (HH:mm) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_survey ~150
Update a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.
| Name | Type | Req | Description |
|---|---|---|---|
| closeAt | – | – | Optional ISO datetime when the survey closes |
| description | – | – | Survey description |
| openAt | – | – | Optional ISO datetime when the survey opens |
| questionBlocks | array | – | Ordered survey question blocks |
| settings | object | – | Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage |
| slug | string | – | URL slug |
| status | string | – | Survey status |
| surveyId | string | yes | Survey ID |
| title | string | – | Survey title |
| visibility | string | – | Survey access mode |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_tag ~52
Rename or recolor an existing CRM tag.
| Name | Type | Req | Description |
|---|---|---|---|
| color | – | – | New color, or null to clear |
| name | string | – | New tag name |
| tagId | string | yes | The tag ID to update |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_task ~96
Update a task (status, priority, assignee, due date, completion).
| Name | Type | Req | Description |
|---|---|---|---|
| assigneeId | string | – | Assignee user ID |
| description | string | – | Description |
| dueDate | string | – | Due date (ISO 8601) |
| priority | string | – | Priority |
| status | string | – | Status filter |
| taskId | string | yes | The task ID |
| title | string | – | Title |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
update_ticket_status ~40
Update the status of an existing support ticket.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | New status |
| ticketId | string | yes | The ticket ID to update |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
upload_post_cover_from_url ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | yes | The post ID |
| sourceUrl | string | yes | Public http(s) URL to fetch the image from. Must respond with an image/* content-type. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
upsert_survey_workflow ~93
Create or update a survey automation workflow, usually triggered by survey_response_submitted.
| Name | Type | Req | Description |
|---|---|---|---|
| graph | object | yes | Workflow graph definition |
| name | string | yes | Workflow name |
| status | string | – | Workflow status |
| surveyId | string | yes | Survey ID |
| trigger | string | – | Trigger name, default from graph.trigger |
| workflowId | string | – | Existing workflow ID when updating |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
validate_campaign ~42
Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | string | yes | Campaign ID to validate |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
validate_promotion ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | Customer account ID — used for per-customer usage limits |
| amount | number | yes | Order subtotal in major units (dollars, not cents) |
| channel | string | yes | Where the promo is being applied |
| promotionCode | string | yes | The code customer entered |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
void_invoice ~55
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.
| Name | Type | Req | Description |
|---|---|---|---|
| invoiceId | string | yes | Invoice ID to void |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | Tool result payload — shape varies per tool, see the tool description |
| renderType | string | yes | UI rendering hint for the result |
| summary | string | yes | One-line human-readable summary of the action |
No examples provided.
What is the FavCRM MCP server?
FavCRM is an MCP server listed in the public MCP registry as io.favcrm/favcrm. Agentic CRM for service businesses, bookings, customers, WhatsApp, loyalty, invoicing. This page covers its hosted endpoint (https://api.favcrm.io/mcp).
Is the FavCRM MCP server safe to use?
FavCRM scores 93 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the FavCRM MCP server expose?
FavCRM exposes 230 tools: search_members, get_member_profile, preview_customer_import, commit_customer_import, create_account, and 225 more. Their descriptions and schemas cost roughly 19,599 tokens of context every time the server is loaded.
Does the FavCRM MCP server require authentication?
Yes. FavCRM asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the FavCRM MCP server still maintained?
FavCRM is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.