MCP 서버

FavCRM

io.favcrm/favcrm
커뮤니케이션 영업 및 CRM 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Provides CRM operations for customers, leads, deals, bookings, memberships, campaigns, WhatsApp and SMS messaging, invoices, loyalty, and business knowledge.

accept_team_invite_request
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.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'Invite token returned by create_team_member_invite or from the invite link'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
accept_team_invite_verify
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 6, 'minLength': 6, 'description': '6-digit code from the invite email'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional display name when creating a new user'}, 'token': {'type': 'string', 'description': 'Invite token returned by create_team_member_invite or from the invite link'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
add_knowledge_text
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'content'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Friendly title for the document'}, 'content': {'type': 'string', 'minLength': 1, 'description': 'Document body text'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
append_post_block
Append one or more blocks to the end of a post. Each block must be a valid block object: { id, version, type, data }. Types: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'blocks'], 'properties': {'blocks': {'type': 'array', 'items': {'$ref': '#/definitions/__schema0'}, 'minItems': 1, 'description': 'Block(s) to append'}, 'postId': {'type': 'string', 'description': 'The post ID'}}, 'definitions': {'__schema0': {'oneOf': [{'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'paragraph'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['level', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'level': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 2}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 4}]}, 'anchor': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'heading'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'caption': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'image'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['ordered', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'ordered': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'list'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['text'], 'properties': {'cite': {'type': 'string'}, 'text': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'quote'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['lang', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1}, 'lang': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'code'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'type': {'type': 'string', 'const': 'divider'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['size'], 'properties': {'size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'spacer'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['provider', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'provider': {'enum': ['youtube', 'vimeo', 'iframe'], 'type': 'string'}, 'aspectRatio': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'embed'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'html'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['videoId'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'videoId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'aspectRatio': {'type': 'string'}, 'startSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, 'type': {'type': 'string', 'const': 'youtube'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'mimeType', 'sizeBytes', 'originalName'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'icon': {'enum': ['pdf', 'doc', 'image', 'video', 'audio', 'generic'], 'type': 'string'}, 'mimeType': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'displayName': {'type': 'string'}, 'originalName': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'file'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'answer': {'type': 'string'}, 'question': {'type': 'string', 'minLength': 1}}}}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'faq'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['tone', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'tone': {'enum': ['info', 'success', 'warning', 'danger', 'note'], 'type': 'string'}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'callout'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['layout', 'images'], 'properties': {'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'caption': {'type': 'string'}}}}, 'layout': {'enum': ['grid', 'masonry', 'carousel'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'gallery'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['label', 'href'], 'properties': {'href': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'style': {'enum': ['primary', 'secondary', 'ghost'], 'type': 'string'}, 'openInNewTab': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'cta'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'body': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}}}}, 'semantic': {'enum': ['faq', 'plain'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'accordion'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}, 'layout': {'enum': ['card', 'inline'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'product'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['columns'], 'properties': {'align': {'enum': ['start', 'center', 'stretch'], 'type': 'string'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['blocks'], 'properties': {'span': {'type': 'number', 'exclusiveMinimum': 0}, 'blocks': {'type': 'array', 'items': {'allOf': [{'$ref': '#/definitions/__schema0'}]}}}}, 'maxItems': 4, 'minItems': 2}, 'stackBelow': {'type': 'string', 'pattern': '^(0|[0-9]+(\\.[0-9]+)?(px|rem|em|vw|vh|%))$'}}}, 'type': {'type': 'string', 'const': 'columns'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}]}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
archive_survey
Archive a survey and remove it from active survey lists.
파괴적 작업 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'surveyId': {'type': 'string', 'description': 'Survey ID to archive'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
assign_staff_to_service
Assign a staff member to a booking service. Pass users.id from list_staff.userId.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'userId'], 'properties': {'userId': {'type': 'string', 'description': 'users.id from list_staff.userId'}, 'serviceId': {'type': 'string', 'description': 'Service ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
attach_post_cover_from_job
Attach a previously generated ai-media job's output as the post's featuredImage. Use when generate_post_cover timed out (job kept running) or when reusing the same generation across multiple posts. Verifies the job belongs to your company and succeeded. Does NOT charge credits — credits were charged at submit time.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'The ai-media job ID (from generate_image, generate_post_cover, or POST /v6/merchant/ai-media/generate)'}, 'postId': {'type': 'string', 'description': 'The post ID'}, 'assetIndex': {'type': 'integer', 'maximum': 20, 'minimum': 0, 'description': 'Which asset to use when the job produced multiple outputs. Default 0.'}, 'pollIfRunning': {'type': 'boolean', 'description': 'When true, advance polling once if the job is still running. Default true.'}, 'pollTimeoutMs': {'type': 'integer', 'maximum': 120000, 'minimum': 0, 'description': 'When pollIfRunning is true, wait up to this long for terminal state. Default 30000.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
attach_tags
Attach one or more tags to a member/account. Useful for segmenting members after filtering.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountIds', 'tagId'], 'properties': {'tagId': {'type': 'string', 'description': 'Tag ID to attach'}, 'accountIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Member/account IDs to tag (max 100)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
cancel_booking
Cancel a booking and create a durable refund receipt. Uses the merchant refund setting unless refundMethod is provided.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId', 'idempotencyKey'], 'properties': {'reason': {'type': 'string', 'description': 'Cancellation reason'}, 'bookingId': {'type': 'string', 'description': 'The booking ID to cancel'}, 'refundMethod': {'enum': ['manual', 'account_credit'], 'type': 'string', 'description': 'Refund cash manually or convert refundable cash to member credit'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Unique key for this cancellation attempt; reuse it only when retrying the same request'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
cancel_subscription
Cancel a subscription. Destructive — turns off auto-renew and prevents further billing cycles. Existing paid periods stay valid until end.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscriptionId'], 'properties': {'subscriptionId': {'type': 'string', 'description': 'Subscription ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
check_plan_operation
Preflight whether an intended operation is allowed by token scopes, enabled modules, subscription state, and quota. Provide toolName, quotaCode, or moduleCode.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'delta': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Planned usage increment. Currently quota checks are single-resource preflights.'}, 'toolName': {'type': 'string', 'description': 'MCP tool name to preflight, e.g. create_account'}, 'quotaCode': {'type': 'string', 'description': 'Quota code to check, e.g. contacts or mcp_calls_per_minute'}, 'moduleCode': {'type': 'string', 'description': 'Module code to check, e.g. whatsapp or crm'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
clone
Duplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer). Creates a copy in DRAFT status with "(Copy)" appended to the name.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'entityId'], 'properties': {'name': {'type': 'string', 'description': 'Override the name of the cloned entity (defaults to "Original Name (Copy)")'}, 'entityId': {'type': 'string', 'description': 'ID of the entity to clone'}, 'entityType': {'enum': ['product', 'tier', 'campaign', 'post', 'service_package', 'promotion', 'gift_offer'], 'type': 'string', 'description': 'Type of entity to clone'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
commit_customer_import
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rowNumber'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Display name'}, 'tags': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Comma-separated tag names'}, 'type': {'anyOf': [{'enum': ['individual', 'business', 'household'], 'type': 'string'}, {'type': 'null'}]}, 'email': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Internal notes'}, 'phone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'credit': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Target wallet stored value / 儲值 (HKD)'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'points': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Target loyalty points (分數)'}, 'source': {'anyOf': [{'enum': ['walk_in', 'online', 'pos', 'whatsapp', 'referral', 'import', 'api', 'shopify', 'woocommerce', 'email'], 'type': 'string'}, {'type': 'null'}]}, 'stamps': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lastName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'firstName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'lifeStage': {'anyOf': [{'enum': ['lead', 'active', 'churned', 'vip'], 'type': 'string'}, {'type': 'null'}]}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': '1-based row number from the source file (for error reporting)', 'exclusiveMinimum': 0}, 'expiryDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Membership expiry YYYY-MM-DD'}, 'memberCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Merchant member code (e.g. LIZLAB-00144)'}, 'referredBy': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Referrer account UUID, member code, phone, or email'}, 'dateOfBirth': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'YYYY-MM-DD'}, 'customFields': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, {'type': 'null'}], 'description': 'Account custom fields keyed by fieldName'}, 'membershipTier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Tier name or ID'}}}, 'maxItems': 2000, 'minItems': 1}, 'sessionId': {'type': 'string', 'minLength': 1, 'description': 'sessionId from preview_customer_import'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
complete_booking
Mark a booking as completed. Triggers commission calculation if configured.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'bookingId': {'type': 'string', 'description': 'The booking ID to complete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
confirm_booking
Confirm a pending booking.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'bookingId': {'type': 'string', 'description': 'The booking ID to confirm'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
convert_lead
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'dealName': {'type': 'string', 'description': 'Optional deal name'}, 'accountId': {'type': 'string', 'description': 'Lead account ID'}, 'dealStage': {'enum': ['discovery', 'qualified', 'proposal', 'negotiation', 'won', 'lost', 'lead', 'new', 'open'], 'type': 'string', 'description': 'Optional initial deal stage ("lead" is an alias of "discovery")'}, 'lifeStage': {'enum': ['active', 'vip'], 'type': 'string', 'description': 'Lifecycle after convert (default active)'}, 'createDeal': {'type': 'boolean', 'description': 'Deprecated and ignored — a convert always links a deal'}, 'dealAmount': {'type': 'number', 'description': 'Optional deal amount'}, 'dealClosingDate': {'type': 'string', 'description': 'Optional deal close date'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
copy_service_tier_pricing
Copy the complete pricing and booking-policy configuration from one membership tier to another on the same booking service.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'sourceTierId', 'targetTierId'], 'properties': {'serviceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Booking service ID'}, 'sourceTierId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Membership tier to copy from'}, 'targetTierId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Membership tier to replace'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_account
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Account/customer display name'}, 'type': {'enum': ['individual', 'business', 'household'], 'type': 'string', 'description': 'Account type. Defaults to individual.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address'}, 'notes': {'type': 'string', 'description': 'Internal notes'}, 'phone': {'type': 'string', 'description': 'Phone number'}, 'source': {'enum': ['walk_in', 'online', 'pos', 'whatsapp', 'referral', 'import', 'api', 'shopify', 'woocommerce', 'email'], 'type': 'string', 'description': 'Acquisition source. Defaults to api.'}, 'tierId': {'type': 'string', 'description': 'Membership tier ID to enroll into. If omitted, the company default tier may apply.'}, 'address': {'type': 'object', 'properties': {'city': {'type': 'string'}, 'line1': {'type': 'string'}, 'line2': {'type': 'string'}, 'state': {'type': 'string'}, 'country': {'type': 'string'}, 'postalCode': {'type': 'string'}}, 'description': 'Postal address'}, 'lastName': {'type': 'string', 'description': 'Last name for individual accounts'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO expiry for the membership'}, 'firstName': {'type': 'string', 'description': 'First name for individual accounts'}, 'lifeStage': {'enum': ['lead', 'active', 'churned', 'vip'], 'type': 'string', 'description': 'CRM life stage. Defaults to active.'}, 'enrollMembership': {'type': 'boolean', 'description': 'Whether to create an active membership immediately'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_booking
Create a new booking for a member. Use get_available_slots first to find valid times, then create the booking with the service, member, date, and time.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'accountId', 'bookingDate', 'startTime', 'endTime'], 'properties': {'notes': {'type': 'string', 'description': 'Booking notes'}, 'endTime': {'type': 'string', 'description': 'End time in HH:MM format'}, 'staffId': {'type': 'string', 'description': 'Staff member ID'}, 'accountId': {'type': 'string', 'description': 'The member/account ID'}, 'serviceId': {'type': 'string', 'description': 'The service ID'}, 'startTime': {'type': 'string', 'description': 'Start time in HH:MM format'}, 'resourceId': {'type': 'string', 'description': 'Resource ID'}, 'bookingDate': {'type': 'string', 'description': 'Date in YYYY-MM-DD format'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_broadcast
Create a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the Broadcasts page.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Campaign name'}, 'channel': {'enum': ['whatsapp', 'sms'], 'type': 'string', 'description': 'Channel (default whatsapp)'}, 'templateId': {'type': 'string', 'description': 'Message template ID to use'}, 'scheduledAt': {'type': 'string', 'description': 'ISO date to schedule the broadcast'}, 'recipientFilter': {'anyOf': [{'type': 'object', 'required': ['recipientType'], 'properties': {'tagIds': {'type': 'array', 'items': {'type': 'string'}}, 'recipientType': {'type': 'string', 'const': 'all'}}}, {'type': 'object', 'required': ['recipientType', 'recipientIds'], 'properties': {'recipientIds': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'recipientType': {'type': 'string', 'const': 'individual'}}}, {'type': 'object', 'required': ['recipientType', 'segmentId'], 'properties': {'segmentId': {'type': 'string', 'minLength': 1}, 'recipientType': {'type': 'string', 'const': 'segment'}}}, {'type': 'object', 'required': ['recipientType', 'tierId'], 'properties': {'tierId': {'type': 'string', 'minLength': 1}, 'recipientType': {'type': 'string', 'const': 'tier'}}}, {'type': 'object', 'required': ['tagIds'], 'properties': {'tagIds': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}}}], 'description': 'Audience for this draft. Omit for all customers, use { tagIds: ["..."] } for the legacy tag filter, or provide recipientType with the required recipientIds, segmentId, or tierId.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_campaign
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".
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'channel'], 'properties': {'name': {'type': 'string', 'description': 'Campaign name (internal)'}, 'status': {'enum': ['DRAFT', 'SCHEDULED'], 'type': 'string', 'description': 'Default DRAFT'}, 'channel': {'enum': ['sms', 'email', 'whatsapp', 'push'], 'type': 'string', 'description': 'email | sms | whatsapp | push'}, 'segmentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Required if recipientSource="segment"'}, 'scheduledAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'ISO datetime for scheduled send (status must be SCHEDULED)'}, 'recipientIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required if recipientSource="individual", "list", or "csv"; values are account IDs'}, 'channelConfig': {'type': 'object', 'description': 'Channel-specific config: subject + htmlBody for email, body for sms/whatsapp, templateId, etc. Legacy email html is normalized to htmlBody.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'recipientSource': {'enum': ['all', 'segment', 'individual', 'csv', 'list'], 'type': 'string', 'description': 'Where to source recipients from. "list" is normalized to "individual".'}, 'audienceExclusions': {'type': 'object', 'properties': {'accountIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'default': [], 'maxItems': 1000}, 'campaignIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'default': [], 'maxItems': 50}}, 'description': 'Optional exclusions: accountIds contains specific customer account IDs; campaignIds contains previous campaign IDs whose accepted recipients must be omitted. A recipient matching any rule is excluded.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_category
Create a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the table is flat.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Category name'}, 'slug': {'type': 'string', 'description': 'Auto-generated from name if omitted.'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'description': {'type': 'string', 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_contact
Create a contact on an existing CRM account.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Contact name'}, 'email': {'type': 'string', 'description': 'Email'}, 'phone': {'type': 'string', 'description': 'Phone'}, 'jobTitle': {'type': 'string', 'description': 'Job title'}, 'accountId': {'type': 'string', 'description': 'Owning account ID'}, 'isPrimary': {'type': 'boolean', 'description': 'Mark as primary contact'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_custom_field
Create a custom field definition for CRM entities. Use options for select or multiselect fields.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'fieldName', 'fieldLabel', 'fieldType'], 'properties': {'options': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Allowed values for select/multiselect fields'}, 'fieldName': {'type': 'string', 'minLength': 1, 'description': 'Stable machine name, e.g. preferred_branch'}, 'fieldType': {'enum': ['text', 'number', 'date', 'select', 'multiselect', 'boolean', 'url', 'email', 'phone'], 'type': 'string', 'description': 'Field type'}, 'sortOrder': {'type': 'number', 'description': 'Display order'}, 'entityType': {'enum': ['account', 'contact', 'deal', 'booking', 'ticket', 'product', 'post'], 'type': 'string', 'description': 'Entity type, e.g. account, contact, deal, booking'}, 'fieldLabel': {'type': 'string', 'minLength': 1, 'description': 'Human-readable label, e.g. Preferred branch'}, 'isRequired': {'type': 'boolean', 'description': 'Whether this field is required'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_deal
Create a CRM sales pipeline deal, optionally linked to a customer account and contact.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Deal name'}, 'stage': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Pipeline stage'}, 'amount': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Deal amount'}, 'ownerId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Owner user/team member ID'}, 'dealType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Deal type/category'}, 'accountId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Linked CRM account ID'}, 'contactId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Linked contact ID'}, 'closingDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Expected closing date'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Deal notes or description'}, 'probability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Win probability, e.g. 25'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_inbox_reply_suggestion
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['conversationId', 'agentId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 8000, 'minLength': 1, 'description': 'Draft reply text for the merchant to review'}, 'agentId': {'type': 'string', 'minLength': 1, 'description': 'AI colleague ID creating the suggestion'}, 'subject': {'type': 'string', 'maxLength': 500, 'description': 'Optional email subject suggestion'}, 'metadata': {'type': 'object', 'description': 'Optional metadata such as rationale, confidence, or source refs', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'conversationId': {'type': 'string', 'minLength': 1, 'description': 'Inbox conversation ID'}, 'sourceMessageId': {'type': 'string', 'description': 'Inbound message ID this draft responds to'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_invoice
Create a new invoice for a customer. Optionally include line items inline. Returns the new invoiceId.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'notes': {'type': 'string', 'description': 'Free-form notes shown on the invoice'}, 'dueDate': {'type': 'string', 'description': 'Due date (ISO 8601 date)'}, 'currency': {'type': 'string', 'description': 'ISO currency code (defaults to company default)'}, 'accountId': {'type': 'string', 'description': 'Customer accountId (CRM account)'}, 'lineItems': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'unitPrice'], 'properties': {'quantity': {'type': 'number', 'description': 'Quantity (default 1)'}, 'unitPrice': {'type': 'string', 'description': 'Unit price as decimal string, e.g. "100.00"'}, 'description': {'type': 'string', 'description': 'Line item description'}}}, 'description': 'Line items to bill — totals are computed server-side'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_note
Add a note to a member/account, booking, ticket, or invoice.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'entityId', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Note content'}, 'entityId': {'type': 'string', 'description': 'The entity ID'}, 'isPinned': {'type': 'boolean', 'description': 'Pin this note to the top'}, 'entityType': {'enum': ['account', 'booking', 'ticket', 'invoice'], 'type': 'string', 'description': 'Type of entity'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_offer_rule
Create an upsell/cross-sell offer rule as draft. Specify trigger type, conditions, and suggested products with optional discounts.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'type', 'triggerType'], 'properties': {'name': {'type': 'string', 'description': 'Rule name'}, 'type': {'enum': ['upsell', 'cross_sell', 'bundle', 'post_purchase'], 'type': 'string', 'description': 'Rule type: upsell, cross_sell, bundle, or post_purchase'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['productId'], 'properties': {'productId': {'type': 'number', 'description': 'Product ID to suggest'}, 'discountType': {'enum': ['percentage', 'fixed_amount'], 'type': 'string', 'description': 'Discount type'}, 'discountValue': {'type': 'string', 'description': 'Discount value'}}}, 'description': 'Products to suggest with optional discounts'}, 'description': {'type': 'string', 'description': 'Rule description'}, 'triggerType': {'enum': ['product_view', 'cart_contains', 'cart_threshold', 'post_order', 'category_view'], 'type': 'string', 'description': 'When the offer triggers'}, 'triggerConfig': {'type': 'object', 'description': 'Trigger-specific configuration', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_outlet
Create a shop outlet/location. Optionally pass id to preserve a legacy UUID during migration.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'id': {'type': 'string', 'description': 'Optional outlet UUID (for legacy migration; non-standard formats accepted)'}, 'name': {'type': 'string', 'description': 'Outlet name'}, 'phone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Contact phone'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Street address'}, 'logoUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Logo URL'}, 'isActive': {'type': 'boolean', 'description': 'Whether outlet is active (default true)'}, 'latitude': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}]}, {'type': 'null'}], 'description': 'Latitude'}, 'longitude': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}]}, {'type': 'null'}], 'description': 'Longitude'}, 'sortOrder': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Display sort order (default 0)'}, 'acceptsOrders': {'type': 'boolean', 'description': 'Whether outlet accepts online orders (default true)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_plan_upgrade_link
Create a Stripe Checkout link for a new paid subscription, or a Stripe Billing Portal link for an existing Stripe subscription. Use only after the user explicitly asks to upgrade or fix billing.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'planId': {'type': 'string', 'description': 'Target plan ID. Use list_plan_options first if unknown.'}, 'confirm': {'type': 'boolean', 'default': False, 'description': 'Required true to create a Stripe-hosted payment or billing link.'}, 'planCode': {'type': 'string', 'description': 'Target plan code, e.g. favcrm-lite. Either planId or planCode is required.'}, 'returnUrl': {'type': 'string', 'format': 'uri', 'description': 'Where Stripe should return after checkout/portal. Defaults to merchant billing settings.'}, 'billingCycle': {'enum': ['monthly', 'yearly'], 'type': 'string', 'default': 'monthly'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_post
Create a new CMS post (blog_post, page, or any custom post type). The post type must already exist — use list_post_types to discover, create_post_type to add a new one. excerpt = plain-text summary only (auto-derived from blocks if omitted). Structured custom fields go in meta, keyed by the field schema defined with create_post_type_field.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'title'], 'properties': {'meta': {'type': 'object', 'description': 'Structured custom field values, keyed by field key (see list_post_type_fields). Validated against the post type field schema. Use this for all machine-readable data — never put JSON in excerpt.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'slug': {'type': 'string', 'description': 'URL slug. Auto-generated from title if omitted; collisions get -2, -3 suffix.'}, 'type': {'type': 'string', 'description': 'Post type slug (e.g. blog_post, page, treatment). Must exist in post_types for this company.'}, 'title': {'type': 'string', 'description': 'Post title'}, 'blocks': {'type': 'array', 'items': {'$ref': '#/definitions/__schema0'}, 'description': 'Ordered array of content blocks. Each block has { id, version, type, data } where type is one of: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product, columns. Unknown types are rejected.'}, 'status': {'enum': ['draft', 'scheduled', 'published', 'archived'], 'type': 'string', 'description': 'Status (default draft)'}, 'tagIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag IDs to attach to the post'}, 'excerpt': {'type': 'string', 'description': 'Plain-text summary only — never JSON. Auto-derived from the first paragraph/heading block if omitted and the post type supports excerpts.'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Parent post ID for nested types (e.g. pages).'}, 'seoTitle': {'type': 'string', 'description': 'SEO title override'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'visibility': {'enum': ['public', 'private', 'members_only'], 'type': 'string', 'description': 'Visibility (default public)'}, 'categoryIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Category IDs (post types with supportsCategories only)'}, 'publishedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'ISO timestamp; required when status=scheduled.'}, 'featuredImage': {'type': 'string', 'description': 'Cover image URL'}, 'seoDescription': {'type': 'string', 'description': 'SEO meta description'}}, 'definitions': {'__schema0': {'oneOf': [{'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'paragraph'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['level', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'level': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 2}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 4}]}, 'anchor': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'heading'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'caption': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'image'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['ordered', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'ordered': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'list'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['text'], 'properties': {'cite': {'type': 'string'}, 'text': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'quote'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['lang', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1}, 'lang': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'code'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'type': {'type': 'string', 'const': 'divider'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['size'], 'properties': {'size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'spacer'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['provider', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'provider': {'enum': ['youtube', 'vimeo', 'iframe'], 'type': 'string'}, 'aspectRatio': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'embed'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'html'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['videoId'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'videoId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'aspectRatio': {'type': 'string'}, 'startSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, 'type': {'type': 'string', 'const': 'youtube'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'mimeType', 'sizeBytes', 'originalName'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'icon': {'enum': ['pdf', 'doc', 'image', 'video', 'audio', 'generic'], 'type': 'string'}, 'mimeType': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'displayName': {'type': 'string'}, 'originalName': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'file'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'answer': {'type': 'string'}, 'question': {'type': 'string', 'minLength': 1}}}}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'faq'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['tone', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'tone': {'enum': ['info', 'success', 'warning', 'danger', 'note'], 'type': 'string'}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'callout'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['layout', 'images'], 'properties': {'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'caption': {'type': 'string'}}}}, 'layout': {'enum': ['grid', 'masonry', 'carousel'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'gallery'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['label', 'href'], 'properties': {'href': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'style': {'enum': ['primary', 'secondary', 'ghost'], 'type': 'string'}, 'openInNewTab': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'cta'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'body': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}}}}, 'semantic': {'enum': ['faq', 'plain'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'accordion'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}, 'layout': {'enum': ['card', 'inline'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'product'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['columns'], 'properties': {'align': {'enum': ['start', 'center', 'stretch'], 'type': 'string'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['blocks'], 'properties': {'span': {'type': 'number', 'exclusiveMinimum': 0}, 'blocks': {'type': 'array', 'items': {'allOf': [{'$ref': '#/definitions/__schema0'}]}}}}, 'maxItems': 4, 'minItems': 2}, 'stackBelow': {'type': 'string', 'pattern': '^(0|[0-9]+(\\.[0-9]+)?(px|rem|em|vw|vh|%))$'}}}, 'type': {'type': 'string', 'const': 'columns'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}]}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_post_type
Define a new custom post type (e.g. "treatment", "service"). Required before creating posts of that type. After creating a post type, use create_post_type_field to define its structured field schema. Those fields are stored in meta on each post — do not use excerpt for structured data.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'label', 'labelPlural'], 'properties': {'icon': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Icon name or URL'}, 'slug': {'type': 'string', 'description': 'Lowercase identifier, e.g. "treatment". Auto-derived from label if omitted.'}, 'label': {'type': 'string', 'description': 'Singular UI label, e.g. "Treatment"'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'labelPlural': {'type': 'string', 'description': 'Plural UI label, e.g. "Treatments"'}, 'supportsBlocks': {'type': 'boolean', 'description': 'Default true'}, 'supportsExcerpt': {'type': 'boolean', 'description': 'Default true'}, 'supportsNesting': {'type': 'boolean', 'description': 'Default false'}, 'supportsCategories': {'type': 'boolean', 'description': 'Default true'}, 'supportsFeaturedImage': {'type': 'boolean', 'description': 'Default true'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_post_type_field
Add a custom field to a post type schema. The field key becomes the key in meta when creating/updating posts. Use fieldType="repeater" with fields=[...] for repeatable structured rows. Use this instead of storing structured data in excerpt.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId', 'label', 'fieldType'], 'properties': {'key': {'type': 'string', 'description': 'snake_case key used in meta. Auto-derived from label if omitted.'}, 'label': {'type': 'string', 'description': 'Human-readable field label, e.g. "Tagline"'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'fieldType'], 'properties': {'key': {'type': 'string', 'description': 'snake_case key for this repeater child field. Auto-derived from label if omitted.'}, 'label': {'type': 'string', 'description': 'Human-readable child field label'}, 'options': {'type': 'object', 'description': 'For select/multiselect child fields: { choices: ["a","b"] }.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'helpText': {'type': 'string', 'description': 'Optional hint shown in the UI'}, 'required': {'type': 'boolean', 'description': 'Whether this child field is required on every repeater row'}, 'fieldType': {'enum': ['text', 'textarea', 'richtext', 'number', 'boolean', 'date', 'datetime', 'select', 'multiselect', 'url', 'email', 'image', 'file', 'gallery', 'attachments', 'repeater'], 'type': 'string', 'description': 'Child field type. Repeaters support scalar/select types plus singular upload fields: text, textarea, richtext, number, boolean, date, datetime, select, multiselect, url, email, image, file. Nested repeaters and array upload fields are not supported.'}, 'sortOrder': {'type': 'number'}}}, 'description': 'Required for fieldType="repeater". Defines the child fields stored in each row object.'}, 'options': {'type': 'object', 'description': 'For select/multiselect: { choices: [{ label, value }] }. For URL fields that should accept merchant uploads, use { uploadable: true } so the UI stores the uploaded file URL instead of asking the merchant to paste a raw URL.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'helpText': {'type': 'string', 'description': 'Optional hint shown in the UI'}, 'required': {'type': 'boolean', 'description': 'Whether the field is required on post creation (default false)'}, 'fieldType': {'enum': ['text', 'textarea', 'richtext', 'number', 'boolean', 'date', 'datetime', 'select', 'multiselect', 'url', 'email', 'image', 'file', 'gallery', 'attachments', 'repeater'], 'type': 'string', 'description': 'Field type: text | textarea | richtext | number | boolean | date | datetime | select | multiselect | url | email | image | file | gallery | attachments | repeater'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'postTypeId': {'type': 'string', 'description': 'Post type ID (from list_post_types)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_product
Create a new shop product as DRAFT. Merchant can review and activate from the portal.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'price'], 'properties': {'sku': {'type': 'string', 'description': 'SKU code'}, 'name': {'type': 'string', 'description': 'Product name'}, 'price': {'type': 'string', 'description': 'Price as decimal string (e.g. "29.99")'}, 'categoryIds': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Category IDs (first is primary)'}, 'description': {'type': 'string', 'description': 'Product description'}, 'memberPrice': {'type': 'string', 'description': 'Members-only price'}, 'productType': {'enum': ['one_time', 'recurring'], 'type': 'string', 'description': 'Product type (default one_time)'}, 'discountPrice': {'type': 'string', 'description': 'Discounted price'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_product_category
Create a product category. Use parentId to create subcategories under an existing category.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Category name'}, 'parentId': {'type': 'number', 'description': 'Parent category ID for subcategories'}, 'sortOrder': {'type': 'number', 'description': 'Display sort order'}, 'description': {'type': 'string', 'description': 'Category description'}, 'onlineEnabled': {'type': 'boolean', 'description': 'Show in online store (default true)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_promotion
Create a promotion / discount code. type=percentage or fixed_amount; value is the discount as a string ("10" = 10% or 10 currency units). Codes are uppercased server-side.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'code', 'value'], 'properties': {'code': {'type': 'string', 'description': 'Coupon code customers enter at checkout (auto-uppercased)'}, 'name': {'type': 'string', 'description': 'Promotion name (internal)'}, 'type': {'enum': ['percentage', 'fixed_amount'], 'type': 'string', 'description': 'Default percentage'}, 'value': {'type': 'string', 'description': 'Discount value as decimal string'}, 'endsAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'ISO datetime — when the promo expires'}, 'status': {'enum': ['active', 'inactive', 'expired'], 'type': 'string', 'description': 'Default active'}, 'startsAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'ISO datetime — when the promo becomes valid'}, 'posEnabled': {'type': 'boolean', 'description': 'Allow at POS'}, 'description': {'type': 'string', 'description': 'Description'}, 'eventEnabled': {'type': 'boolean', 'description': 'Allow on event registrations'}, 'minimumAmount': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Minimum order amount required, decimal string'}, 'onlineEnabled': {'type': 'boolean', 'description': 'Allow on online shop orders'}, 'bookingEnabled': {'type': 'boolean', 'description': 'Allow on bookings'}, 'maximumDiscount': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Cap on percentage discounts, decimal string'}, 'minimumQuantity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Minimum item count required'}, 'usageLimitTotal': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Max total uses across all customers'}, 'usageLimitPerCustomer': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Max uses per single customer'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_resource
Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Resource name (e.g. "Treatment Room A")'}, 'type': {'type': 'string', 'description': 'Free-form type label, e.g. "room", "equipment"'}, 'status': {'enum': ['active', 'inactive'], 'type': 'string', 'description': 'Default active'}, 'capacity': {'type': 'number', 'description': 'How many concurrent bookings (default 1)'}, 'description': {'type': 'string', 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_segment
Create a new customer segment. Use STATIC for manual member lists, DYNAMIC for criteria-based auto-filtering.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Segment name'}, 'criteria': {'type': 'object', 'required': ['operator', 'conditions'], 'properties': {'operator': {'enum': ['AND', 'OR'], 'type': 'string', 'description': 'How to combine conditions'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'operator'], 'properties': {'days': {'type': 'number', 'description': 'Days window for time-based conditions'}, 'type': {'type': 'string', 'description': 'Condition type, e.g. TOTAL_SPENDINGS, DAYS_SINCE_JOINED, PASS_STATUS, CUSTOM_FIELD'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'description': 'Single value for text/date/selection/custom-field conditions'}, 'values': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'description': 'Multiple values for IN/NOT_IN conditions'}, 'operator': {'type': 'string', 'description': 'Comparison operator, e.g. GT, GTE, LT, LTE, EQ, NEQ, IN, NOT_IN, CONTAINS, BEFORE, AFTER, IS_EMPTY'}, 'fieldName': {'type': 'string', 'description': 'Custom field name for custom-field segment conditions'}, 'fieldType': {'type': 'string', 'description': 'Custom field type for custom-field segment conditions'}, 'threshold': {'type': 'number', 'description': 'Numeric threshold for numeric conditions'}, 'definitionId': {'type': 'string', 'description': 'Custom field definition ID for custom-field segment conditions'}}}, 'description': 'Filter conditions'}}, 'description': 'Dynamic segment criteria'}, 'description': {'type': 'string', 'description': 'Segment description'}, 'segmentType': {'enum': ['STATIC', 'DYNAMIC'], 'type': 'string', 'description': 'Segment type (default DYNAMIC)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_service
Create a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'durationMinutes'], 'properties': {'name': {'type': 'string', 'description': 'Service name'}, 'type': {'enum': ['one_on_one', 'group', 'class'], 'type': 'string', 'description': 'Default one_on_one'}, 'price': {'type': 'string', 'description': 'Decimal string, e.g. "80.00". Defaults to "0".'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'type': 'string', 'description': 'Default active'}, 'capacity': {'type': 'number', 'description': 'How many participants per slot (default 1)'}, 'currency': {'type': 'string', 'description': 'ISO currency code, default HKD'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'categoryId': {'type': 'string', 'description': 'Existing service category ID'}, 'visibility': {'enum': ['public', 'members_only', 'hidden'], 'type': 'string', 'description': 'Visibility: public | members_only | hidden'}, 'description': {'type': 'string', 'description': 'Description'}, 'requireLogin': {'type': 'boolean', 'description': 'Default true — guests cannot book'}, 'requiresStaff': {'type': 'boolean', 'description': 'Whether the service requires staff assignment'}, 'allowedTierIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required when visibility=members_only'}, 'commissionType': {'anyOf': [{'enum': ['fixed', 'percentage'], 'type': 'string'}, {'type': 'null'}], 'description': 'Commission type: "fixed" or "percentage"'}, 'commissionValue': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Commission amount as decimal string'}, 'cooldownMinutes': {'type': 'number', 'description': 'Minimum gap before bookings can be cancelled (default 0)'}, 'durationMinutes': {'type': 'number', 'description': 'Duration of one booking in minutes'}, 'requiresResource': {'type': 'boolean', 'description': 'Whether the service requires a resource (room/equipment)'}, 'commissionCurrency': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Commission currency (ISO code)'}, 'requiresConfirmation': {'type': 'boolean', 'description': 'If true, bookings start as pending and need confirm_booking'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_service_category
Create a service category (e.g. "Treatments", "Classes") to group bookable services.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Category name'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'description': {'type': 'string', 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_service_package
Create a service package/prepaid session bundle. Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'sessionCount', 'price', 'validDays'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Package name'}, 'price': {'type': 'number', 'minimum': 0, 'description': 'Package price'}, 'status': {'enum': ['ACTIVE', 'INACTIVE'], 'type': 'string', 'description': 'Default ACTIVE'}, 'validDays': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'Validity window after purchase, in days'}, 'description': {'type': 'string', 'description': 'Description'}, 'sessionCount': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Number of included sessions'}, 'applicableType': {'enum': ['ALL', 'ALL_BOOKINGS', 'ALL_EVENTS', 'SELECTED'], 'type': 'string', 'description': 'Default ALL'}, 'applicableItems': {'type': 'array', 'items': {'type': 'object', 'required': ['itemType', 'itemId'], 'properties': {'itemId': {'type': 'string'}, 'itemType': {'enum': ['booking_service', 'event'], 'type': 'string'}}}, 'description': 'Items used when applicableType=SELECTED'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_service_schedule
Create a bookable schedule window for a service, including recurring weekly/daily availability.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'date', 'startTime', 'endTime'], 'properties': {'date': {'type': 'string', 'description': 'Start date or one-off date (YYYY-MM-DD)'}, 'notes': {'type': 'string', 'description': 'Free-form notes'}, 'endTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'staffId': {'type': 'string', 'description': 'Optional companyMembers.id to bind this schedule to staff'}, 'byWeekday': {'type': 'array', 'items': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'description': 'Weekdays for weekly recurrence: 0=Mon, 1=Tue, ... 6=Sun'}, 'serviceId': {'type': 'string', 'description': 'Service ID'}, 'startTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'recurrence': {'enum': ['none', 'daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'Default none'}, 'resourceId': {'type': 'string', 'description': 'Optional resource ID to bind this schedule to a room/resource'}, 'maxCapacity': {'type': 'number', 'description': 'Max bookings per generated slot'}, 'recurrenceEndDate': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'recurrenceInterval': {'type': 'number', 'description': 'Default 1'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_subscription
Create a manual, non-renewing subscription record for a member. Use a subscription action link for provider-backed recurring billing.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'amount': {'type': 'number', 'description': 'Override amount per cycle (otherwise derived from tier)'}, 'tierId': {'type': 'string', 'description': 'Membership tier ID — if set, amount/currency default from the tier'}, 'currency': {'type': 'string', 'description': 'ISO currency code (otherwise derived from tier or company default)'}, 'accountId': {'type': 'string', 'description': 'Customer accountId'}, 'autoRenew': {'type': 'boolean', 'const': False, 'description': 'Manual records cannot auto-renew'}, 'billingCycle': {'enum': ['monthly', 'quarterly', 'yearly', 'one_off'], 'type': 'string', 'description': 'Billing cycle (default monthly)'}, 'currentPeriodEnd': {'type': 'string', 'description': 'Period end (ISO 8601). Defaults to start + cycle.'}, 'currentPeriodStart': {'type': 'string', 'description': 'Period start (ISO 8601). Defaults to now.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_survey
Create a survey with custom question blocks. Publish it later or set status to published for immediate portal access.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'questionBlocks'], 'properties': {'slug': {'type': 'string', 'description': 'Optional URL slug; generated from title when omitted'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Survey title'}, 'openAt': {'type': 'string', 'description': 'Optional ISO datetime when the survey opens'}, 'status': {'enum': ['draft', 'published', 'closed', 'archived'], 'type': 'string', 'description': 'Initial status'}, 'closeAt': {'type': 'string', 'description': 'Optional ISO datetime when the survey closes'}, 'settings': {'type': 'object', 'description': 'Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'visibility': {'enum': ['public', 'members_only', 'token_only', 'private'], 'type': 'string', 'description': 'Who can access the survey'}, 'description': {'type': 'string', 'description': 'Optional survey description'}, 'questionBlocks': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Ordered survey question blocks'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_survey_invitation
Create a token-auth survey invitation for a specific member/account or contact.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'channel': {'type': 'string', 'description': 'Intended channel, e.g. email, sms, whatsapp, link'}, 'metadata': {'type': 'object', 'description': 'Optional invitation metadata', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'surveyId': {'type': 'string', 'description': 'Survey ID'}, 'accountId': {'type': 'string', 'description': 'CRM account ID to invite'}, 'contactId': {'type': 'string', 'description': 'Contact ID to invite'}, 'expiresAt': {'type': 'string', 'description': 'Optional invitation expiry ISO datetime'}, 'recipientName': {'type': 'string', 'description': 'Recipient display name for link tracking'}, 'recipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Recipient email for link tracking'}, 'recipientPhone': {'type': 'string', 'description': 'Recipient phone for link tracking'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_tag
Create a CRM tag for customer segmentation and organization.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Tag name'}, 'color': {'type': 'string', 'description': 'Optional display color, e.g. #2563eb'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_task
Create a task. Optionally link to a CRM account or assign to a team member.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Task title'}, 'status': {'enum': ['todo', 'in_progress', 'blocked', 'done'], 'type': 'string', 'description': 'Status filter'}, 'dueDate': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD)'}, 'priority': {'enum': ['low', 'medium', 'high', 'urgent'], 'type': 'string', 'description': 'Priority'}, 'accountId': {'type': 'string', 'description': 'Linked CRM account'}, 'assigneeId': {'type': 'string', 'description': 'company_members.id'}, 'description': {'type': 'string', 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_team_member_invite
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.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['email'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional display name for a new user'}, 'role': {'enum': ['manager', 'staff'], 'type': 'string', 'default': 'staff', 'description': 'Team member role to grant on acceptance'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Invitee email address'}, 'modules': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional legacy module list to attach to the company member'}, 'permissions': {'type': 'array', 'items': {'type': 'object', 'required': ['actions'], 'properties': {'module': {'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'resource': {'type': 'string'}}}, 'description': 'Optional structured module permissions to attach to the company member'}, 'expiresInHours': {'type': 'integer', 'maximum': 336, 'minimum': 1, 'description': 'Invite lifetime in hours. Defaults to 72, max 336.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_template
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'category', 'message'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Friendly template name (a Meta-safe id is derived from it).'}, 'footer': {'type': 'string', 'description': 'Optional small footer text.'}, 'message': {'type': 'string', 'minLength': 1, 'description': 'Body text. Use {{1}}, {{2}} for personalised values.'}, 'category': {'enum': ['MARKETING', 'UTILITY', 'AUTHENTICATION'], 'type': 'string', 'description': 'UTILITY = transactional (order/shipping), MARKETING = promos, AUTHENTICATION = codes.'}, 'language': {'type': 'string', 'description': 'Language code, default en_US.'}, 'headerText': {'type': 'string', 'description': 'Optional short bold header above the body.'}, 'variableSamples': {'type': 'object', 'description': 'Example values per variable number, e.g. {"1":"Sara"} — Meta reviews with these.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_ticket
Create a support ticket for a member issue.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subject'], 'properties': {'source': {'enum': ['portal', 'email', 'phone', 'walk_in', 'api', 'mobile_app'], 'type': 'string', 'description': 'Where the ticket originated'}, 'subject': {'type': 'string', 'description': 'Ticket subject/title'}, 'category': {'enum': ['bug', 'feature_request', 'account', 'billing', 'general', 'other'], 'type': 'string', 'description': 'Ticket category'}, 'priority': {'enum': ['critical', 'high', 'medium', 'low'], 'type': 'string', 'description': 'Ticket priority'}, 'accountId': {'type': 'string', 'description': 'Member/account ID this ticket is about'}, 'contactName': {'type': 'string', 'description': 'Contact name if no account ID'}, 'description': {'type': 'string', 'description': 'Detailed description of the issue'}, 'contactEmail': {'type': 'string', 'description': 'Contact email if no account ID'}, 'contactPhone': {'type': 'string', 'description': 'Contact phone if no account ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_variation
Add a variation (size, color, etc.) to an existing product.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['productId', 'price'], 'properties': {'sku': {'type': 'string', 'description': 'Variation SKU'}, 'name': {'type': 'string', 'description': 'Variation name'}, 'price': {'type': 'string', 'description': 'Price as decimal string (e.g. "29.99")'}, 'productId': {'type': 'number', 'description': 'The product ID'}, 'memberPrice': {'type': 'string', 'description': 'Members-only price'}, 'stockStatus': {'enum': ['in_stock', 'out_of_stock', 'low_stock'], 'type': 'string', 'description': 'Stock status'}, 'discountPrice': {'type': 'string', 'description': 'Discounted price'}, 'stockQuantity': {'type': 'number', 'description': 'Stock quantity'}, 'selectedOptions': {'type': 'object', 'description': 'Option selections e.g. {"Size": "Large"}', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
create_whatsapp_connect_link
Create a short-lived browser link for WhatsApp Business Embedded Signup. The user must open the link because Meta requires a browser popup to authorize and choose the WABA/phone number.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'ttlMinutes': {'type': 'integer', 'maximum': 1440, 'minimum': 5, 'description': 'Connect link lifetime in minutes. Defaults to 30.'}, 'onboardingMode': {'enum': ['cloud_api', 'coexistence'], 'type': 'string', 'default': 'cloud_api', 'description': 'Use cloud_api for a new WhatsApp Cloud API connection, or coexistence when connecting a WhatsApp Business App number.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_account
Soft-delete a CRM account/customer. This releases the primary phone for future reuse while keeping account history for audit.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'accountId': {'type': 'string', 'description': 'The account ID to soft-delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_campaign
Delete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'campaignId': {'type': 'string', 'description': 'Campaign ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_category
Delete a CMS post category. Posts in the category are not deleted; they are simply unlinked.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['categoryId'], 'properties': {'categoryId': {'type': 'string', 'description': 'Category ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_contact
Delete a secondary contact. Primary contacts are protected; set another primary contact or delete the account instead.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contactId'], 'properties': {'contactId': {'type': 'string', 'description': 'The contact ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_custom_field
Delete a custom field definition and its stored values.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['definitionId'], 'properties': {'definitionId': {'type': 'string', 'description': 'Custom field definition ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_deal
Soft-delete a CRM deal from the sales pipeline.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId'], 'properties': {'dealId': {'type': 'string', 'description': 'The deal ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_invoice
Delete a DRAFT invoice. Only invoices that have never been sent can be deleted; otherwise use void_invoice.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'description': 'Invoice ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_knowledge_document
Soft-delete a knowledge document. The agent loses access immediately, but the document can be restored with restore_knowledge_document.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'documentId': {'type': 'string', 'description': 'Knowledge document ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_post
Delete a CMS post by ID. Soft-deleted posts can be restored with restore_post.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_post_type
Delete a custom post type. Built-in types cannot be deleted. Fails if any posts of this type still exist — delete those first.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId'], 'properties': {'postTypeId': {'type': 'string', 'description': 'Post type ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_post_type_field
Remove a field from a post type schema. Blocked when posts of this type still have data in the field unless force=true is passed (orphans the data).
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId', 'fieldId'], 'properties': {'force': {'type': 'boolean', 'description': 'Delete even if posts have data in this field. Existing meta values become orphaned.'}, 'fieldId': {'type': 'string', 'description': 'Field ID'}, 'postTypeId': {'type': 'string', 'description': 'Post type ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_promotion
Delete a promotion. Past usage records are preserved.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['promotionId'], 'properties': {'promotionId': {'type': 'string', 'description': 'Promotion ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_segment
Delete a customer segment.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['segmentId'], 'properties': {'segmentId': {'type': 'string', 'description': 'The segment ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_service_package
Delete a service package by ID.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packageId'], 'properties': {'packageId': {'type': 'string', 'description': 'Service package ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_tag
Delete a CRM tag and remove it from all tagged entities.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tagId'], 'properties': {'tagId': {'type': 'string', 'description': 'The tag ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
delete_task
Soft-delete a CRM task.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'The task ID to delete'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
detach_tags
Detach one tag from one or more member/account records.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountIds', 'tagId'], 'properties': {'tagId': {'type': 'string', 'description': 'Tag ID to detach'}, 'accountIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Member/account IDs to untag (max 100)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
earn_loyalty_points
Credit loyalty points or stamps to a member. Use field="points" for points, "stamps" for stamps. Server records a transaction with the reason as audit context.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId', 'field', 'amount'], 'properties': {'field': {'enum': ['points', 'stamps'], 'type': 'string', 'description': 'Which loyalty unit to credit'}, 'amount': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Positive integer amount to credit', 'exclusiveMinimum': 0}, 'reason': {'type': 'string', 'description': 'Audit-trail reason (e.g. "Booking completed", "Manual adjustment")'}, 'accountId': {'type': 'string', 'description': 'The member/account ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
enrol_membership
Enrol a member into a membership tier. Free tiers enrol immediately; paid tiers return PAYMENT_REQUIRED unless skipPriceCheck is set. Use list_tiers first to find the target tier.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'tierId': {'type': 'string', 'description': 'The membership tier ID. Omit to enrol on the default no-tier membership.'}, 'accountId': {'type': 'string', 'description': 'The member/account ID to enrol'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO date to override the tier-computed expiry.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
execute_tool
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.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['toolName'], 'properties': {'toolName': {'type': 'string', 'minLength': 1, 'description': 'Exact target tool name returned by search_tools'}, 'arguments': {'type': 'object', 'description': 'Arguments object for the target tool. Must match the target input schema.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
find_or_create_workroom_thread
Find or create a Workroom DM thread between a merchant user and an AI colleague. Use this when an inbound event deserves owner attention but no threadId was provided. This only prepares an internal Workroom channel.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'title': {'type': 'string', 'maxLength': 120, 'description': 'Optional title if a new thread is created'}, 'userId': {'type': 'string', 'description': 'Merchant user ID to notify. Defaults to the current MCP user when omitted.'}, 'agentId': {'type': 'string', 'description': 'AI colleague ID for the Workroom DM'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
generate_image
Generate an AI image via kie.ai and return its public R2 URL. Use to mint reusable URLs for content blocks (image, gallery), product photos, or any field that takes an image URL — does NOT attach to a post by itself. Costs credits (see list_image_models). On poll timeout the job continues running; pass `jobId` from the response to merchant ai-media APIs to retrieve it later.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['prompt', 'modelCode'], 'properties': {'seed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Random seed for reproducible output'}, 'prompt': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'Generation prompt'}, 'modelCode': {'type': 'string', 'description': 'Image model code from list_image_models'}, 'aspectRatio': {'type': 'string', 'maxLength': 20, 'description': 'Output aspect ratio (e.g. 16:9, 1:1)'}, 'pollTimeoutMs': {'type': 'integer', 'maximum': 120000, 'minimum': 5000, 'description': 'Default 60000.'}, 'negativePrompt': {'type': 'string', 'maxLength': 2000, 'description': 'Things to exclude from generation'}, 'pollIntervalMs': {'type': 'integer', 'maximum': 15000, 'minimum': 1000, 'description': 'Default 3000.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
generate_post_cover
Generate an AI image and attach it as a post's featuredImage. Submits a kie.ai job, polls until complete, copies the result into the canonical post-asset R2 folder, and writes the public URL onto the post. Costs credits (see list_image_models). On poll timeout, the job continues — call attach_post_cover_from_job(postId, jobId) once it finishes to attach without paying again.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'prompt', 'modelCode'], 'properties': {'seed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Random seed for reproducible output'}, 'postId': {'type': 'string', 'description': 'The post ID'}, 'prompt': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'Image generation prompt'}, 'modelCode': {'type': 'string', 'description': 'Image model code from list_image_models (e.g. nano-banana-2)'}, 'aspectRatio': {'type': 'string', 'maxLength': 20, 'description': 'Aspect ratio passed to the model, e.g. "16:9", "1:1"'}, 'pollTimeoutMs': {'type': 'integer', 'maximum': 120000, 'minimum': 5000, 'description': 'Default 60000.'}, 'negativePrompt': {'type': 'string', 'maxLength': 2000, 'description': 'Things to exclude from generation'}, 'pollIntervalMs': {'type': 'integer', 'maximum': 15000, 'minimum': 1000, 'description': 'Default 3000.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_attachment_text
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['attachmentId'], 'properties': {'attachmentId': {'type': 'string', 'description': 'The attachment ID from the message attachments list'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_audit_log
Fetch a single audit log entry by ID, including before/after snapshots when available.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['auditLogId'], 'properties': {'auditLogId': {'type': 'string', 'description': 'Audit log ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_available_slots
Find available booking slots for a service on a specific date.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'date'], 'properties': {'date': {'type': 'string', 'description': 'ISO date to check (YYYY-MM-DD)'}, 'staffId': {'type': 'string', 'description': 'Optional: filter by specific staff member'}, 'serviceId': {'type': 'string', 'description': 'The service to check availability for'}, 'resourceId': {'type': 'string', 'description': 'Optional: filter by specific resource'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_booking_detail
Get full booking details including line items, status history, and participants.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'bookingId': {'type': 'string', 'description': 'The booking ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_booking_settings
Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_booking_stats
Get booking counts: today, this week, this month, and breakdown by status.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_campaign
Get a campaign by ID, including its recipient source, audience exclusions, channel configuration, and delivery stats.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'campaignId': {'type': 'string', 'description': 'Campaign ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_contact
Fetch a single contact by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contactId'], 'properties': {'contactId': {'type': 'string', 'description': 'The contact ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_conversation_messages
Get messages from a specific conversation thread. Shows the chat history between the merchant and a contact.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['conversationId'], 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search within messages'}, 'conversationId': {'type': 'string', 'description': 'The conversation ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_custom_field
Get a custom field definition by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['definitionId'], 'properties': {'definitionId': {'type': 'string', 'description': 'Custom field definition ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_custom_field_values
Get custom field values for a CRM entity such as an account, contact, deal, or booking.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'entityId'], 'properties': {'entityId': {'type': 'string', 'description': 'Entity ID'}, 'entityType': {'enum': ['account', 'contact', 'deal', 'booking', 'ticket', 'product', 'post'], 'type': 'string', 'description': 'Entity type'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_dashboard_stats
Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_deal
Get detailed CRM deal information by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId'], 'properties': {'dealId': {'type': 'string', 'description': 'The deal ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_event_campaign_exclusions
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['eventId'], 'properties': {'eventId': {'type': 'string', 'description': 'Event ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_invoice
Fetch a single invoice with line items, payment history, and customer detail.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'description': 'Invoice ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_invoice_stats
Outstanding totals, overdue counts, and revenue this period. Used by the weekly-snapshot playbook.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_knowledge_document
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'documentId': {'type': 'string', 'description': 'Knowledge document ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_loyalty_balance
Get a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier. Returns null if the member is not enrolled.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'accountId': {'type': 'string', 'description': 'The member/account ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_member_profile
Get detailed profile for a specific member/account by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'accountId': {'type': 'string', 'description': 'The account ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_membership_tier
Get a specific membership tier by ID.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tierId'], 'properties': {'tierId': {'type': 'string', 'description': 'The tier ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_offer_rule
Get offer rule detail including associated products and discounts.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ruleId'], 'properties': {'ruleId': {'type': 'string', 'description': 'The offer rule ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_order
Get full order detail including line items.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orderId'], 'properties': {'orderId': {'type': 'string', 'description': 'The order UUID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_plan_status
Show the current organisation plan, subscription/payment state, enabled modules, and quota usage. Use before deciding whether an agentic operation is allowed.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_post
Get detailed CMS post including content blocks, categories, and tags.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_product
Get full product detail including images, options, and variations.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['productId'], 'properties': {'productId': {'type': 'number', 'description': 'The product ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_promotion
Get details of a specific promotion/coupon code.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['promotionId'], 'properties': {'promotionId': {'type': 'string', 'description': 'The promotion ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_segment
Get customer segment details including type, criteria, and live member count.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['segmentId'], 'properties': {'segmentId': {'type': 'string', 'description': 'The segment ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_segment_members
Get the members that belong to a specific segment.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['segmentId'], 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'segmentId': {'type': 'string', 'description': 'The segment ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_service_detail
Get full service details including addons, staff, resources, and tier pricing.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId'], 'properties': {'serviceId': {'type': 'string', 'description': 'The service ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_service_package
Get service package detail including applicability and selected booking service/event items.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packageId'], 'properties': {'packageId': {'type': 'string', 'description': 'Service package ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_service_tier_pricing
Read every membership-tier pricing configuration for one booking service.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId'], 'properties': {'serviceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Booking service ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_subscription
Fetch a single subscription with customer, tier, billing cycle, and renewal info.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscriptionId'], 'properties': {'subscriptionId': {'type': 'string', 'description': 'Subscription ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_survey
Get survey detail, including blocks, publishing status, visibility, settings, and response count.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'surveyId': {'type': 'string', 'description': 'Survey ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_survey_responses
List responses for a survey.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'limit': {'type': 'number', 'description': 'Max responses (default 50)'}, 'surveyId': {'type': 'string', 'description': 'Survey ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_survey_stats
Get response and invitation metrics for a survey overview dashboard.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'surveyId': {'type': 'string', 'description': 'Survey ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_task
Get detailed task information by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'The task ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_ticket_stats
Get ticket counts grouped by status.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
get_whatsapp_connection_status
Check whether WhatsApp Business is connected for this company, including WABA/phone metadata and the latest agentic connect session state.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
issue_rewards
Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['giftOfferId', 'memberIds'], 'properties': {'expiresAt': {'type': 'string', 'description': 'Optional ISO date when the reward expires'}, 'memberIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Member/account IDs to receive the reward (max 50)'}, 'giftOfferId': {'type': 'string', 'description': 'The gift offer/reward scheme ID to issue'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
link_resource_to_service
Link a room/resource to a booking service.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'resourceId'], 'properties': {'serviceId': {'type': 'string', 'description': 'Service ID'}, 'resourceId': {'type': 'string', 'description': 'Resource ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_audit_logs
List recent audit log entries for this company. Filter by action, resource, resourceId, user, source, outcome, destructive flag, and created date range.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Maximum rows to return'}, 'action': {'type': 'string', 'description': 'Exact tool/action name, e.g. delete_campaign'}, 'source': {'enum': ['mcp', 'ai_agent', 'merchant_api', 'payment_webhook', 'manual_refresh', 'qfpay_reconciliation', 'hold_expiry_sweeper'], 'type': 'string', 'description': 'Audit source, e.g. mcp, ai_agent, payment_webhook, merchant_api'}, 'userId': {'type': 'string', 'description': 'Actor user ID'}, 'outcome': {'enum': ['success', 'failed', 'blocked'], 'type': 'string', 'description': 'Execution outcome'}, 'resource': {'type': 'string', 'description': 'Resource name, e.g. campaigns'}, 'resourceId': {'type': 'string', 'description': 'Resource ID'}, 'destructive': {'type': 'boolean', 'description': 'Whether the audited tool was destructive'}, 'createdAfter': {'type': 'string', 'description': 'ISO timestamp lower bound'}, 'createdBefore': {'type': 'string', 'description': 'ISO timestamp upper bound'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_bookings
List bookings with filters for date range, status, service, staff, or member.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'dateTo': {'type': 'string', 'description': 'ISO date — bookings up to this date'}, 'status': {'enum': ['draft', 'held', 'pending', 'confirmed', 'cancelled', 'completed', 'no_show'], 'type': 'string', 'description': 'Filter by booking status'}, 'staffId': {'type': 'string', 'description': 'Filter by staff member ID'}, 'dateFrom': {'type': 'string', 'description': 'ISO date — bookings from this date'}, 'accountId': {'type': 'string', 'description': 'Filter by member/account ID'}, 'serviceId': {'type': 'string', 'description': 'Filter by service ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_campaigns
List marketing campaigns (email, SMS, WhatsApp, or push) with delivery stats. Use the returned IDs when excluding recipients of previous campaigns.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'type': 'string', 'description': 'Sort column'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order'}, 'search': {'type': 'string', 'description': 'Search by campaign name'}, 'channel': {'enum': ['sms', 'email', 'whatsapp', 'push'], 'type': 'string', 'description': 'Filter by channel'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_categories
List CMS post categories.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_contacts
List contacts (people linked to CRM accounts), optionally filtered by account or search.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Match name, email, or phone'}, 'accountId': {'type': 'string', 'description': 'Filter by account'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_conversations
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by contact name, phone, or email'}, 'status': {'enum': ['active', 'archived', 'closed'], 'type': 'string', 'description': 'Filter by conversation status'}, 'channel': {'enum': ['whatsapp', 'sms', 'email', 'messenger', 'instagram', 'threads', 'web_form'], 'type': 'string', 'description': 'Filter by channel'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_custom_fields
List custom field definitions for CRM entities such as account, contact, deal, or booking.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType'], 'properties': {'entityType': {'enum': ['account', 'contact', 'deal', 'booking', 'ticket', 'product', 'post'], 'type': 'string', 'description': 'Entity type the custom fields belong to'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_deals
List CRM deals (sales pipeline) with optional filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1)'}, 'limit': {'type': 'number', 'description': 'Items per page (default 20)'}, 'stage': {'type': 'string', 'description': 'Filter by stage'}, 'search': {'type': 'string', 'description': 'Search by name or description'}, 'dealType': {'type': 'string', 'description': 'Filter by deal type'}, 'accountId': {'type': 'string', 'description': 'Filter by account'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_event_registrations
List registrations for an event in the active company, including CRM account IDs for campaign exclusions.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['eventId'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max results (default 50, maximum 100)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of matching registrations to skip (default 0)'}, 'eventId': {'type': 'string', 'description': 'Event ID'}, 'statuses': {'type': 'array', 'items': {'enum': ['pending', 'confirmed', 'paid', 'cancelled'], 'type': 'string'}, 'maxItems': 4, 'minItems': 1, 'description': 'Registration statuses to include. Omit to include all statuses.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_image_models
List AI image-generation models exposed to merchants (sanitized — provider/cost details hidden). Use to pick a `modelCode` for `generate_post_cover`.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_invoices
List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'type': 'string', 'description': 'Sort column'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order'}, 'search': {'type': 'string', 'description': 'Search by invoice number, account name, email, or phone'}, 'status': {'enum': ['DRAFT', 'SENT', 'PARTIALLY_PAID', 'PAID', 'OVERDUE', 'VOID', 'CANCELLED'], 'type': 'string', 'description': 'Filter by invoice status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_knowledge_documents
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 100)'}, 'updatedAfter': {'type': 'string', 'description': 'ISO timestamp — only return docs updated after this. Use for delta sync.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_my_companies
List all companies/organisations the current user has access to. Use this to see available orgs before switching.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_notes
List notes attached to a member/account, booking, or ticket.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'entityId'], 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 10)'}, 'entityId': {'type': 'string', 'description': 'The entity ID'}, 'entityType': {'enum': ['account', 'booking', 'ticket', 'invoice'], 'type': 'string', 'description': 'Type of entity the notes are on'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_notification_logs
List notification delivery logs for the current company. Recipients are masked by default for incident-response safety.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 50, max 100)'}, 'dateTo': {'type': 'string', 'description': 'ISO timestamp upper bound'}, 'status': {'enum': ['pending', 'retrying', 'sent', 'delivered', 'failed', 'skipped'], 'type': 'string', 'description': 'Status filter'}, 'channel': {'enum': ['email', 'sms', 'whatsapp', 'push'], 'type': 'string', 'description': 'Notification channel filter'}, 'dateFrom': {'type': 'string', 'description': 'ISO timestamp lower bound'}, 'entityId': {'type': 'string', 'description': 'Entity ID filter'}, 'eventType': {'enum': ['account_created', 'account_updated', 'booking_created', 'booking_confirmed', 'booking_checked_in', 'booking_cancelled', 'booking_completed', 'booking_reminder', 'order_placed', 'order_completed', 'order_cancelled', 'order_refunded', 'payment_received', 'payment_failed', 'payment_failed_followup', 'membership_enrolled', 'membership_expired', 'membership_expired_followup', 'tier_changed', 'deal_stage_changed', 'deal_won', 'deal_lost', 'customer_ownership_review_required', 'customer_ownership_review_resolved', 'event_registered', 'event_cancelled', 'event_updated', 'event_checkout_abandoned', 'event_session_reminder', 'tutor_course_enrollment_confirmed', 'tutor_course_payment_pending', 'tutor_course_leave_requested', 'tutor_course_leave_approved', 'tutor_course_leave_declined', 'tutor_course_class_switch_requested', 'tutor_course_class_switch_approved', 'tutor_course_class_switch_declined', 'staff_agenda_digest', 'invoice_created', 'invoice_sent', 'invoice_paid', 'invoice_reminder', 'invoice_overdue', 'invoice_voided', 'invoice_installment_reminder', 'invoice_installment_overdue', 'invoice_due_in_n_days', 'subscription_created', 'subscription_activated', 'subscription_paused', 'subscription_cancellation_scheduled', 'subscription_cancelled', 'subscription_expired', 'subscription_renewed', 'subscription_payment_failed', 'subscription_renewal_reminder', 'campaign_sent', 'campaign_failed', 'promotion_activated', 'promotion_expired', 'coupon_redeemed', 'gift_offer_claimed', 'gift_offer_redeemed', 'gift_offer_expired', 'service_package_purchased', 'service_package_redeemed', 'service_package_expired', 'service_package_expiring_soon', 'service_package_low_quota', 'service_package_expired_followup', 'reward_earned', 'reward_redeemed', 'reward_expired', 'reward_redemption_expiring_soon', 'reward_unused_after_n_days', 'loyalty_points_added', 'loyalty_points_used', 'loyalty_stamps_added', 'loyalty_stamps_used', 'member_credit_added', 'member_credit_used', 'membership_expiring_soon', 'booking_followup_review_request', 'customer_inactive_n_days', 'ticket_created', 'ticket_resolved', 'ticket_closed', 'integration_order_created', 'integration_order_fulfilled', 'integration_shipment_in_transit', 'integration_shipment_out_for_delivery', 'integration_shipment_delivered', 'integration_shipment_delayed', 'integration_shipment_attempted_delivery', 'integration_shipment_ready_for_pickup', 'integration_shipment_exception', 'integration_order_cancelled', 'integration_cart_abandoned', 'integration_customer_created', 'integration_product_out_of_stock', 'post_published', 'post_updated', 'post_unpublished', 'survey_invitation_sent', 'survey_invitation_opened', 'survey_response_submitted', 'survey_completed', 'survey_score_matched', 'wallet_pass_generated', 'agent_action.proposed', 'agent_action.approved', 'agent_action.rejected', 'agent_action.executed', 'agent_action.failed', 'team_member_application_review_required', 'custom_field_changed', 'otp_sent', 'review_request'], 'type': 'string', 'description': 'Event type filter'}, 'recipient': {'type': 'string', 'description': 'Substring search on recipient'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_offer_rules
List upsell/cross-sell offer rules with optional filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['upsell', 'cross_sell', 'bundle', 'post_purchase'], 'type': 'string', 'description': 'Filter by rule type'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'status': {'enum': ['draft', 'active', 'paused'], 'type': 'string', 'description': 'Filter by status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_orders
List shop orders with optional status and search filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by order number or customer name/email'}, 'status': {'enum': ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded'], 'type': 'string', 'description': 'Filter by order status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_outlets
List shop outlets/locations for the company.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'activeOnly': {'type': 'boolean', 'description': 'When true, only return active outlets (default false)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_plan_options
List active FavCRM plans with prices, quotas, included modules, and whether each is the current plan.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_posts
List CMS posts (blog posts and/or pages) with optional filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'type': 'string', 'description': 'Filter by post type slug (blog_post, page, or any custom type — see list_post_types).'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by title'}, 'status': {'enum': ['draft', 'scheduled', 'published', 'archived'], 'type': 'string', 'description': 'Filter by status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_post_type_fields
List the custom field schema for a post type. Use this before creating posts to know which keys to pass in meta and what types they expect.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId'], 'properties': {'postTypeId': {'type': 'string', 'description': 'Post type ID (from list_post_types)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_post_types
List all post types defined for this company (built-in: blog_post, page; plus any custom types).
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_product_categories
List all product categories for the shop.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_products
List shop products with optional filters by name, status, or category.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by product name'}, 'status': {'enum': ['DRAFT', 'ACTIVE', 'ARCHIVED'], 'type': 'string', 'description': 'Filter by status'}, 'categoryId': {'type': 'number', 'description': 'Filter by category ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_promotions
List promotion/coupon codes with optional status filter.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by name'}, 'status': {'enum': ['DRAFT', 'ACTIVE', 'PAUSED', 'EXPIRED'], 'type': 'string', 'description': 'Filter by status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_resources
List booking resources (rooms, equipment, etc.).
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_reward_schemes
List loyalty reward schemes (points/stamps programs) configured for this business.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by name'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_segments
List customer segments. Segments group members by criteria for targeted campaigns.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by segment name'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_service_categories
List service categories (groups for booking services like "Treatments", "Classes").
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_service_packages
List service packages/prepaid session bundles with optional search, status, sorting, and pagination.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'type': 'string', 'description': 'Sort column: name, price, or createdAt'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order'}, 'search': {'type': 'string', 'description': 'Search package name'}, 'status': {'enum': ['ACTIVE', 'INACTIVE'], 'type': 'string', 'description': 'Filter by package status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_services
List booking services with name, price, duration, and status.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by name'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'type': 'string', 'description': 'Filter by status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_service_schedules
List schedule windows for booking services.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'dateTo': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'staffId': {'type': 'string', 'description': 'Staff member ID'}, 'dateFrom': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'serviceId': {'type': 'string', 'description': 'Service ID'}, 'isOverride': {'type': 'boolean', 'description': 'Filter to override entries only'}, 'resourceId': {'type': 'string', 'description': 'Resource ID (room/equipment)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_shipping_methods
List all shipping methods configured for the shop.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_staff
List staff/team members in the business.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_subscriptions
List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'status': {'enum': ['trialing', 'active', 'past_due', 'cancelled'], 'type': 'string', 'description': 'Filter by subscription status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_survey_invitations
List survey invitation history without exposing token hashes or old invitation tokens.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'limit': {'type': 'number', 'description': 'Max invitations (default 50)'}, 'surveyId': {'type': 'string', 'description': 'Survey ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_surveys
List surveys with optional status/search filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search survey title or description'}, 'status': {'enum': ['draft', 'published', 'closed', 'archived'], 'type': 'string', 'description': 'Filter by survey status'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_survey_workflows
List automation workflows attached to a survey.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'surveyId': {'type': 'string', 'description': 'Survey ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_tags
List all available tags for the merchant.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'search': {'type': 'string', 'description': 'Search tags by name'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_tasks
List tasks with optional status, assignee, and account filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'status': {'enum': ['todo', 'in_progress', 'blocked', 'done'], 'type': 'string', 'description': 'Filter by task status'}, 'accountId': {'type': 'string', 'description': 'Filter by related CRM account'}, 'assigneeId': {'type': 'string', 'description': 'Filter by assignee company_members.id'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_templates
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max templates to return (default 20)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_tickets
List support tickets with optional filters.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'search': {'type': 'string', 'description': 'Search by subject'}, 'status': {'enum': ['open', 'in_progress', 'waiting_customer', 'resolved', 'closed'], 'type': 'string', 'description': 'Filter by status'}, 'category': {'enum': ['bug', 'feature_request', 'account', 'billing', 'general', 'other'], 'type': 'string', 'description': 'Filter by category'}, 'priority': {'enum': ['critical', 'high', 'medium', 'low'], 'type': 'string', 'description': 'Filter by priority'}, 'accountId': {'type': 'string', 'description': 'Filter by CRM account ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
list_tiers
List all membership tiers with member counts and stats.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
mark_deal_lost
Mark a CRM deal as lost. Requires a lost reason.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId', 'reason'], 'properties': {'dealId': {'type': 'string', 'description': 'The deal ID'}, 'reason': {'type': 'string', 'description': 'Why the deal was lost'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
mark_deal_won
Mark a CRM deal as won and set close date.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId'], 'properties': {'dealId': {'type': 'string', 'description': 'The deal ID'}, 'closingDate': {'type': 'string', 'description': 'Optional close date (YYYY-MM-DD)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
mark_invoice_sent
Mark an invoice as sent to the customer (transitions DRAFT → OPEN). Use after delivering the invoice via email or share link. Idempotent.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'description': 'Invoice ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
mark_no_show
Mark a booking as no-show when the customer did not attend.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId'], 'properties': {'bookingId': {'type': 'string', 'description': 'The booking ID to mark as no-show'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
pause_subscription
Pause an active subscription (status → past_due, no further auto-renew). Use resume_subscription to reactivate.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscriptionId'], 'properties': {'subscriptionId': {'type': 'string', 'description': 'Subscription ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
post_workroom_message
Post an internal message from an AI colleague into a Workroom thread. Use this to report findings, ask the owner for approval, or share source links after reading CRM/Inbox data. This does not send anything to customers.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId', 'agentId', 'content'], 'properties': {'agentId': {'type': 'string', 'description': 'AI colleague ID that is a participant in the thread'}, 'content': {'type': 'string', 'maxLength': 8000, 'minLength': 1, 'description': 'Message to show in Workroom. Markdown is allowed.'}, 'metadata': {'type': 'object', 'description': 'Optional generic metadata, e.g. {sourceRefs:[{type:"inbox_conversation",id:"..."}]}', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'threadId': {'type': 'string', 'description': 'Workroom thread ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
preview_customer_import
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rowNumber'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Display name'}, 'tags': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Comma-separated tag names'}, 'type': {'anyOf': [{'enum': ['individual', 'business', 'household'], 'type': 'string'}, {'type': 'null'}]}, 'email': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Internal notes'}, 'phone': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'credit': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Target wallet stored value / 儲值 (HKD)'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'points': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Target loyalty points (分數)'}, 'source': {'anyOf': [{'enum': ['walk_in', 'online', 'pos', 'whatsapp', 'referral', 'import', 'api', 'shopify', 'woocommerce', 'email'], 'type': 'string'}, {'type': 'null'}]}, 'stamps': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lastName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'firstName': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'lifeStage': {'anyOf': [{'enum': ['lead', 'active', 'churned', 'vip'], 'type': 'string'}, {'type': 'null'}]}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': '1-based row number from the source file (for error reporting)', 'exclusiveMinimum': 0}, 'expiryDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Membership expiry YYYY-MM-DD'}, 'memberCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Merchant member code (e.g. LIZLAB-00144)'}, 'referredBy': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Referrer account UUID, member code, phone, or email'}, 'dateOfBirth': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'YYYY-MM-DD'}, 'customFields': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, {'type': 'null'}], 'description': 'Account custom fields keyed by fieldName'}, 'membershipTier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Tier name or ID'}}}, 'maxItems': 2000, 'minItems': 1}, 'filename': {'type': 'string', 'maxLength': 255, 'description': 'Original filename for audit'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
preview_segment_count
Preview how many customers would match dynamic segment criteria before creating or updating a segment.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'criteria': {'anyOf': [{'type': 'object', 'required': ['operator', 'conditions'], 'properties': {'operator': {'enum': ['AND', 'OR'], 'type': 'string', 'description': 'How to combine conditions'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'operator'], 'properties': {'days': {'type': 'number', 'description': 'Days window for time-based conditions'}, 'type': {'type': 'string', 'description': 'Condition type, e.g. TOTAL_SPENDINGS, DAYS_SINCE_JOINED, PASS_STATUS, CUSTOM_FIELD'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'description': 'Single value for text/date/selection/custom-field conditions'}, 'values': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'description': 'Multiple values for IN/NOT_IN conditions'}, 'operator': {'type': 'string', 'description': 'Comparison operator, e.g. GT, GTE, LT, LTE, EQ, NEQ, IN, NOT_IN, CONTAINS, BEFORE, AFTER, IS_EMPTY'}, 'fieldName': {'type': 'string', 'description': 'Custom field name for custom-field segment conditions'}, 'fieldType': {'type': 'string', 'description': 'Custom field type for custom-field segment conditions'}, 'threshold': {'type': 'number', 'description': 'Numeric threshold for numeric conditions'}, 'definitionId': {'type': 'string', 'description': 'Custom field definition ID for custom-field segment conditions'}}}, 'description': 'Filter conditions'}}}, {'type': 'null'}], 'description': 'Dynamic criteria to preview. Omit or null to count all active customers.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
query_company_knowledge
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Maximum matching snippets (default 5)'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Question or keywords to search for in company knowledge'}, 'maxSnippetChars': {'type': 'integer', 'maximum': 1200, 'minimum': 120, 'description': 'Maximum characters per snippet (default 600)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
query_favcrm_platform
Search FavCRM MCP tools, enabled skills, and feature areas for how to use the platform. Use before guessing tool names or JSON arguments.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'area': {'enum': ['all', 'tools', 'skills', 'features'], 'type': 'string', 'description': 'Restrict search area (default all)'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Maximum results (default 8)'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Plain-language capability question, e.g. "create a booking" or "send a campaign safely"'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
record_invoice_payment
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId', 'amount', 'method'], 'properties': {'note': {'type': 'string', 'description': 'Internal note about this payment'}, 'amount': {'type': 'string', 'description': 'Payment amount as decimal string, e.g. "100.00"'}, 'method': {'enum': ['cash', 'bank_transfer', 'cheque', 'card', 'stripe', 'qfpay', 'eftpay', 'yedpay', 'manual', 'member_credit', 'other'], 'type': 'string', 'description': 'Payment method'}, 'invoiceId': {'type': 'string', 'description': 'Invoice ID to record payment against'}, 'reference': {'type': 'string', 'description': 'External reference (cheque number, bank transfer ID)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
register_organisation_request
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.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['organisationName', 'email'], 'properties': {'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Owner email — receives a 6-digit code (10 min TTL)'}, 'country': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2 country code (HK, US, GB, ...)'}, 'industry': {'enum': ['beauty', 'fitness', 'tutoring', 'retail', 'hospitality', 'services', 'other'], 'type': 'string', 'description': 'Vertical — drives default templates'}, 'timezone': {'type': 'string', 'description': 'IANA timezone (e.g. Asia/Hong_Kong); falls back to country default'}, 'organisationName': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': 'Business / brand name (used as the first company name too)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
register_organisation_verify
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requestId', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 6, 'minLength': 6, 'description': '6-digit code from the verification email'}, 'requestId': {'type': 'string', 'description': 'From register_organisation_request'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
remove_post_block
Remove the block at the given index (0-based). All subsequent blocks shift up by one.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'index'], 'properties': {'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': '0-based index of the block to remove'}, 'postId': {'type': 'string', 'description': 'The post ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
reorder_post_blocks
Reorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'orderedBlockIds'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}, 'orderedBlockIds': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Block IDs in the desired order; must match the existing set exactly'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
reorder_post_type_fields
Reorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId', 'orderedFieldIds'], 'properties': {'postTypeId': {'type': 'string', 'description': 'Post type ID'}, 'orderedFieldIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Field IDs in the desired order'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
replace_post_block
Replace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update_post.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'index', 'block'], 'properties': {'block': {'oneOf': [{'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'paragraph'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['level', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'level': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 2}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 4}]}, 'anchor': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'heading'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'caption': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'image'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['ordered', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'ordered': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'list'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['text'], 'properties': {'cite': {'type': 'string'}, 'text': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'quote'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['lang', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1}, 'lang': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'code'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'type': {'type': 'string', 'const': 'divider'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['size'], 'properties': {'size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'spacer'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['provider', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'provider': {'enum': ['youtube', 'vimeo', 'iframe'], 'type': 'string'}, 'aspectRatio': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'embed'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'html'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['videoId'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'videoId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'aspectRatio': {'type': 'string'}, 'startSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, 'type': {'type': 'string', 'const': 'youtube'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'mimeType', 'sizeBytes', 'originalName'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'icon': {'enum': ['pdf', 'doc', 'image', 'video', 'audio', 'generic'], 'type': 'string'}, 'mimeType': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'displayName': {'type': 'string'}, 'originalName': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'file'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'answer': {'type': 'string'}, 'question': {'type': 'string', 'minLength': 1}}}}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'faq'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['tone', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'tone': {'enum': ['info', 'success', 'warning', 'danger', 'note'], 'type': 'string'}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'callout'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['layout', 'images'], 'properties': {'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'caption': {'type': 'string'}}}}, 'layout': {'enum': ['grid', 'masonry', 'carousel'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'gallery'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['label', 'href'], 'properties': {'href': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'style': {'enum': ['primary', 'secondary', 'ghost'], 'type': 'string'}, 'openInNewTab': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'cta'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'body': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}}}}, 'semantic': {'enum': ['faq', 'plain'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'accordion'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}, 'layout': {'enum': ['card', 'inline'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'product'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'$ref': '#/definitions/__schema0'}], 'description': 'Replacement block'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': '0-based index of the block to replace'}, 'postId': {'type': 'string', 'description': 'The post ID'}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['columns'], 'properties': {'align': {'enum': ['start', 'center', 'stretch'], 'type': 'string'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['blocks'], 'properties': {'span': {'type': 'number', 'exclusiveMinimum': 0}, 'blocks': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'paragraph'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['level', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'level': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 2}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 4}]}, 'anchor': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'heading'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'caption': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'image'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['ordered', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'ordered': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'list'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['text'], 'properties': {'cite': {'type': 'string'}, 'text': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'quote'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['lang', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1}, 'lang': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'code'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'type': {'type': 'string', 'const': 'divider'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['size'], 'properties': {'size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'spacer'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['provider', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'provider': {'enum': ['youtube', 'vimeo', 'iframe'], 'type': 'string'}, 'aspectRatio': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'embed'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'html'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['videoId'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'videoId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'aspectRatio': {'type': 'string'}, 'startSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, 'type': {'type': 'string', 'const': 'youtube'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'mimeType', 'sizeBytes', 'originalName'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'icon': {'enum': ['pdf', 'doc', 'image', 'video', 'audio', 'generic'], 'type': 'string'}, 'mimeType': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'displayName': {'type': 'string'}, 'originalName': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'file'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'answer': {'type': 'string'}, 'question': {'type': 'string', 'minLength': 1}}}}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'faq'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['tone', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'tone': {'enum': ['info', 'success', 'warning', 'danger', 'note'], 'type': 'string'}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'callout'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['layout', 'images'], 'properties': {'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'caption': {'type': 'string'}}}}, 'layout': {'enum': ['grid', 'masonry', 'carousel'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'gallery'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['label', 'href'], 'properties': {'href': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'style': {'enum': ['primary', 'secondary', 'ghost'], 'type': 'string'}, 'openInNewTab': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'cta'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'body': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}}}}, 'semantic': {'enum': ['faq', 'plain'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'accordion'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}, 'layout': {'enum': ['card', 'inline'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'product'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'$ref': '#/definitions/__schema0'}]}}}}, 'maxItems': 4, 'minItems': 2}, 'stackBelow': {'type': 'string', 'pattern': '^(0|[0-9]+(\\.[0-9]+)?(px|rem|em|vw|vh|%))$'}}}, 'type': {'type': 'string', 'const': 'columns'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
report_agent_issue
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'severity', 'area', 'expectedBehavior', 'actualBehavior', 'stepsTried', 'aiAnalysis'], 'properties': {'area': {'enum': ['mcp_tool_missing', 'mcp_tool_error', 'mcp_schema_confusing', 'auth', 'cli', 'docs', 'sdk_fallback', 'other'], 'type': 'string', 'description': 'Issue area'}, 'logs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Relevant error messages, command output, or stack traces'}, 'title': {'type': 'string', 'maxLength': 180, 'minLength': 3, 'description': 'Short issue title'}, 'severity': {'enum': ['critical', 'high', 'medium', 'low'], 'type': 'string', 'description': 'Impact level'}, 'toolCalls': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Relevant MCP/CLI/SDK calls, arguments, and outcomes'}, 'aiAnalysis': {'type': 'string', 'minLength': 1, 'description': 'Agent analysis of likely root cause and impact'}, 'references': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Source links, file paths, docs, screenshots, or IDs that support the report'}, 'stepsTried': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Concrete steps the agent tried before reporting'}, 'workaround': {'type': 'string', 'description': 'Temporary workaround used, if any'}, 'environment': {'type': 'object', 'description': 'Runtime context such as MCP URL, CLI version, token type, client, sandbox, model, OS', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'actualBehavior': {'type': 'string', 'minLength': 1, 'description': 'What actually happened'}, 'expectedBehavior': {'type': 'string', 'minLength': 1, 'description': 'What the agent or user expected to happen'}, 'clarificationQuestions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Questions the platform team should ask the agent/user to resolve ambiguity'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
request_send_approval
Create a merchant-owned Workroom approval request for a customer-facing send. The agent must not call send_message, send_whatsapp_message, send_test_campaign, or send_campaign directly.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId', 'agentId', 'actionType', 'summary', 'payload'], 'properties': {'agentId': {'type': 'string', 'description': 'AI colleague ID that is a participant in the thread'}, 'payload': {'type': 'object', 'description': 'Exact tool payload to execute if the merchant approves. For send_test_campaign use { campaignId, to }, with an email address or international WhatsApp number matching the campaign channel.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'summary': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'Human-readable draft/recipient/campaign summary shown above the approval buttons'}, 'threadId': {'type': 'string', 'description': 'Workroom thread ID where the approval button should appear'}, 'actionType': {'enum': ['send_message', 'send_whatsapp_message', 'send_test_campaign', 'send_campaign'], 'type': 'string', 'description': 'The customer-facing action to execute only after merchant approval'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_campaign
Restore a previously deleted campaign.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'campaignId': {'type': 'string', 'description': 'Campaign ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_category
Restore a previously deleted CMS post category.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['categoryId'], 'properties': {'categoryId': {'type': 'string', 'description': 'Category ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_invoice
Restore a previously deleted DRAFT invoice.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'description': 'Invoice ID to restore'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_knowledge_document
Restore a previously deleted knowledge document.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'documentId': {'type': 'string', 'description': 'Knowledge document ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_post
Restore a previously deleted CMS post.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_post_type
Restore a previously deleted custom post type.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId'], 'properties': {'postTypeId': {'type': 'string', 'description': 'Post type ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_post_type_field
Restore a previously deleted field on a post type schema.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId', 'fieldId'], 'properties': {'fieldId': {'type': 'string', 'description': 'Field ID'}, 'postTypeId': {'type': 'string', 'description': 'Post type ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_promotion
Restore a previously deleted promotion.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['promotionId'], 'properties': {'promotionId': {'type': 'string', 'description': 'Promotion ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
restore_service_package
Restore a previously deleted service package by ID.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packageId'], 'properties': {'packageId': {'type': 'string', 'description': 'Service package ID to restore'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
resume_subscription
Resume a paused subscription back to active.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscriptionId'], 'properties': {'subscriptionId': {'type': 'string', 'description': 'Subscription ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
revert_audit_action
Revert an audited action by restoring the captured before snapshot. Only works for allowlisted target tables with full before/after audit snapshots.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['auditLogId'], 'properties': {'reason': {'type': 'string', 'maxLength': 1000, 'description': 'Reason for reverting this action'}, 'auditLogId': {'type': 'string', 'description': 'Audit log ID to revert'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
scrape_knowledge_url
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'URL to fetch (must be https / http and publicly reachable)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
search_audit_logs
Search audit logs by free text across action, resource, resource ID, changes JSON, and metadata JSON.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum rows to return'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Text to search for'}, 'createdAfter': {'type': 'string', 'description': 'ISO timestamp lower bound'}, 'createdBefore': {'type': 'string', 'description': 'ISO timestamp upper bound'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
search_crm
Search across CRM accounts and contacts by name, email, or phone.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'description': 'Max per entity (default 10)'}, 'query': {'type': 'string', 'description': 'Search string'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
search_members
Search and filter members/accounts. Supports text search, date ranges, booking/activity history, membership tier, tags, and more. Use lastBookingBefore/inactiveDays to find inactive members.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'type': 'string', 'description': 'Sort column: name, email, or createdAt'}, 'limit': {'type': 'number', 'description': 'Max results (default 20)'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order'}, 'search': {'type': 'string', 'description': 'Name, email, or phone to search'}, 'source': {'enum': ['walk_in', 'online', 'pos', 'whatsapp', 'referral', 'import', 'api', 'shopify', 'woocommerce', 'email'], 'type': 'string', 'description': 'Filter by account source'}, 'tagIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by tag IDs'}, 'tierId': {'type': 'string', 'description': 'Filter by membership tier ID'}, 'lifeStage': {'enum': ['lead', 'active', 'churned', 'vip'], 'type': 'string', 'description': 'Filter by life stage'}, 'hasBooking': {'type': 'boolean', 'description': 'Filter to members with/without any booking'}, 'createdAfter': {'type': 'string', 'description': 'ISO date — accounts created after this date'}, 'inactiveDays': {'type': 'number', 'description': 'Members with no activity in the last N days'}, 'createdBefore': {'type': 'string', 'description': 'ISO date — accounts created before this date'}, 'hasMembership': {'type': 'boolean', 'description': 'Filter to members with active membership'}, 'lastBookingAfter': {'type': 'string', 'description': 'ISO date — members who have a booking after this date'}, 'membershipStatus': {'enum': ['active', 'expired', 'suspended'], 'type': 'string', 'description': 'Filter by membership status'}, 'lastActivityAfter': {'type': 'string', 'description': 'ISO date — members with activity after this date'}, 'lastBookingBefore': {'type': 'string', 'description': 'ISO date — members whose last booking is before this date (or have no bookings)'}, 'lastActivityBefore': {'type': 'string', 'description': 'ISO date — members with no activity since this date'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
search_tools
Search the available FavCRM tool catalog for relevant operations. Use this when the curated direct tool list does not contain the operation you need.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Maximum results (default 8, max 20)'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Plain-language tool search, e.g. "delete a segment" or "set custom field values"'}, 'scope': {'type': 'string', 'description': 'Optional exact scope filter, e.g. contacts, customer_segments, invoices'}, 'write': {'type': 'boolean', 'description': 'Filter to write tools (true) or read-only tools (false)'}, 'includeInputSchema': {'type': 'boolean', 'description': 'Include full JSON input schemas for returned tools. Defaults to false to keep context small.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_custom_field_values
Set or clear custom field values for a CRM entity. Values are stored as strings; pass null to clear a value.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['entityType', 'entityId', 'values'], 'properties': {'values': {'type': 'array', 'items': {'type': 'object', 'required': ['definitionId', 'value'], 'properties': {'value': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Value to store, or null to clear'}, 'definitionId': {'type': 'string', 'description': 'Custom field definition ID'}}}, 'maxItems': 100, 'description': 'Values to upsert'}, 'entityId': {'type': 'string', 'description': 'Entity ID'}, 'entityType': {'enum': ['account', 'contact', 'deal', 'booking', 'ticket', 'product', 'post'], 'type': 'string', 'description': 'Entity type'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_primary_contact
Set a contact as the primary contact for its CRM account and demote other contacts on that account.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contactId'], 'properties': {'contactId': {'type': 'string', 'description': 'The contact ID to make primary'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_resource_availability
Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['resourceId', 'startTime', 'endTime'], 'properties': {'date': {'type': 'string', 'description': 'YYYY-MM-DD for a specific date instead of dayOfWeek'}, 'type': {'enum': ['available', 'blocked'], 'type': 'string', 'description': 'Default available'}, 'endTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'dayOfWeek': {'enum': ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], 'type': 'string', 'description': 'Day of week (0=Sun..6=Sat)'}, 'startTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'resourceId': {'type': 'string', 'description': 'Resource ID'}, 'isRecurring': {'type': 'boolean', 'description': 'Default true'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_segment_members
Replace the members of a STATIC customer segment with the given account IDs. The segment is converted to STATIC.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['segmentId', 'accountIds'], 'properties': {'segmentId': {'type': 'string', 'description': 'The segment ID'}, 'accountIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 1000, 'description': 'CRM account IDs to set as segment members'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_service_tier_pricing
Set the complete pricing and booking-policy configuration for one membership tier on a booking service.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId', 'tierId', 'priceOverride', 'discountPercent', 'advanceBookingDays', 'timeSlotPricing', 'bookingLimits'], 'properties': {'tierId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Membership tier ID'}, 'serviceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Booking service ID'}, 'bookingLimits': {'anyOf': [{'type': 'object', 'required': ['isAllowed', 'dailyBookingCount', 'weeklyBookingCount', 'weeklyHoursLimit'], 'properties': {'isAllowed': {'type': 'boolean'}, 'weeklyHoursLimit': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'dailyBookingCount': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}, 'weeklyBookingCount': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}, 'maxBookableTimeslots': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'priceOverride': {'anyOf': [{'type': 'string', 'pattern': '^\\d+(?:\\.\\d{1,2})?$'}, {'type': 'null'}]}, 'discountPercent': {'anyOf': [{'type': 'string', 'pattern': '^\\d+(?:\\.\\d{1,2})?$'}, {'type': 'null'}]}, 'timeSlotPricing': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['dayOfWeek', 'startTime', 'endTime', 'price'], 'properties': {'price': {'type': 'number', 'minimum': 0}, 'endTime': {'type': 'string', 'pattern': '^(?:(?:[01]\\d|2[0-3]):[0-5]\\d|24:00)$'}, 'priority': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'dayOfWeek': {'type': 'array', 'items': {'enum': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], 'type': 'string'}, 'minItems': 1}, 'startTime': {'type': 'string', 'pattern': '^(?:[01]\\d|2[0-3]):[0-5]\\d$'}, 'description': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}}, {'type': 'null'}]}, 'advanceBookingDays': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}]}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
set_staff_availability
Add an availability window for a staff member (companyMembers.id). Use day-of-week + recurring for weekly schedules, or a specific date for one-off changes.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['memberId', 'startTime', 'endTime'], 'properties': {'date': {'type': 'string', 'description': 'YYYY-MM-DD for a specific date instead of dayOfWeek'}, 'type': {'enum': ['available', 'blocked'], 'type': 'string', 'description': 'Default available'}, 'endTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'memberId': {'type': 'string', 'description': 'companyMembers.id of the staff'}, 'dayOfWeek': {'enum': ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], 'type': 'string', 'description': 'Day of week (0=Sun..6=Sat)'}, 'startTime': {'type': 'string', 'description': 'HH:MM (24h)'}, 'isRecurring': {'type': 'boolean', 'description': 'Default true'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
switch_company
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['companyId'], 'properties': {'companyId': {'type': 'string', 'description': 'The company ID to switch to (use list_my_companies to find available IDs)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
undo_campaign_send
Undo a campaign send during its one-minute safety buffer. Use immediately when the merchant says to stop or undo a submitted campaign.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'campaignId': {'type': 'string', 'description': 'Buffered campaign ID to return to its prior draft state'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_account
Update CRM account/customer profile fields such as name, phone, email, life stage, owner, notes, or member code.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['accountId'], 'properties': {'name': {'type': 'string', 'description': 'Account/customer display name'}, 'type': {'enum': ['individual', 'business', 'household'], 'type': 'string', 'description': 'Account type'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address'}, 'notes': {'type': 'string', 'description': 'Internal notes'}, 'phone': {'type': 'string', 'description': 'Phone number'}, 'gender': {'type': 'string', 'description': 'Gender'}, 'source': {'enum': ['walk_in', 'online', 'pos', 'whatsapp', 'referral', 'import', 'api', 'shopify', 'woocommerce', 'email'], 'type': 'string', 'description': 'Acquisition source'}, 'lastName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Last name for individual accounts'}, 'accountId': {'type': 'string', 'description': 'The account ID to update'}, 'firstName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'First name for individual accounts'}, 'lifeStage': {'enum': ['lead', 'active', 'churned', 'vip'], 'type': 'string', 'description': 'CRM life stage'}, 'assignedTo': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Assigned team member user ID, or null to clear'}, 'memberCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Merchant member code, or null to clear'}, 'dateOfBirth': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'YYYY-MM-DD date of birth, or null to clear'}, 'referredByAccountId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Referrer account ID, or null to clear'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_booking_settings
Update global booking settings. Pass only the fields you want to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'showCoupon': {'type': 'boolean', 'description': 'Show coupon field in booking flow'}, 'calendarStyle': {'enum': ['list', 'calendar'], 'type': 'string', 'description': 'Booking flow calendar presentation'}, 'showAccessPass': {'type': 'boolean', 'description': 'Show access pass/package options in booking flow'}, 'cooldownMessage': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'description': 'Optional message shown when cooldown blocks a booking'}, 'blockUntilFinished': {'type': 'boolean', 'description': 'Block customers from booking again while they have active bookings'}, 'globalCooldownDays': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}], 'description': 'Minimum days between customer bookings, or null to disable'}, 'accessPassAfterMinutes': {'type': 'integer', 'maximum': 1440, 'minimum': 0, 'description': 'Minutes after booking end when the access QR remains usable'}, 'bookingReminderEnabled': {'type': 'boolean', 'description': 'Send the default pre-booking reminder'}, 'memberReschedulingMode': {'enum': ['disabled', 'merchant_only', 'member'], 'type': 'string', 'description': 'Choose whether rescheduling is disabled, merchant-only, or available to members'}, 'sameDayReminderEnabled': {'type': 'boolean', 'description': 'Send an additional same-day reminder before booking start'}, 'accessPassBeforeMinutes': {'type': 'integer', 'maximum': 1440, 'minimum': 0, 'description': 'Minutes before booking start when the access QR becomes usable'}, 'allowMemberCancellation': {'type': 'boolean', 'description': 'Allow members to cancel bookings from the customer portal'}, 'bookingReminderLeadHours': {'type': 'integer', 'maximum': 168, 'minimum': 1, 'description': 'Hours before booking start for the default reminder'}, 'hideUnavailableTimeslots': {'type': 'boolean', 'description': 'Hide unavailable timeslots instead of showing them as full'}, 'sameDayReminderLeadHours': {'type': 'integer', 'maximum': 24, 'minimum': 1, 'description': 'Hours before booking start for the same-day reminder'}, 'requireBookingConfirmation': {'type': 'boolean', 'description': 'Require merchant confirmation before bookings are confirmed'}, 'minimumAdvanceBookingMinutes': {'anyOf': [{'type': 'integer', 'maximum': 43200, 'minimum': 0}, {'type': 'null'}], 'description': 'Minutes before slot start when customer booking closes. null/0 = no cutoff; set > 0 to require advance notice'}, 'memberCancellationCutoffHours': {'anyOf': [{'type': 'integer', 'maximum': 720, 'minimum': 0}, {'type': 'null'}], 'description': 'Hours before booking start when member cancellation closes, or null for no cutoff'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_campaign
Update an existing campaign, including audience exclusions. Channel cannot be changed after creation. Pass only fields to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'name': {'type': 'string', 'description': 'Name'}, 'status': {'enum': ['DRAFT', 'SCHEDULED', 'PAUSED', 'CANCELLED'], 'type': 'string', 'description': 'New campaign status'}, 'segmentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Segment ID'}, 'campaignId': {'type': 'string', 'description': 'Campaign ID'}, 'scheduledAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Scheduled timestamp (ISO 8601)'}, 'recipientIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Explicit customer account IDs'}, 'channelConfig': {'type': 'object', 'description': 'For email, use subject + htmlBody + optional plainTextBody. Legacy html is normalized to htmlBody.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'recipientSource': {'enum': ['all', 'segment', 'individual', 'csv', 'list'], 'type': 'string', 'description': 'Recipient source: all | segment | individual | csv | list'}, 'audienceExclusions': {'type': 'object', 'properties': {'accountIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'default': [], 'maxItems': 1000}, 'campaignIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'default': [], 'maxItems': 50}}, 'description': '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.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_category
Update a CMS post category.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['categoryId'], 'properties': {'name': {'type': 'string', 'description': 'Name'}, 'slug': {'type': 'string', 'description': 'URL slug'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'categoryId': {'type': 'string', 'description': 'Category ID'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_contact
Update fields on an existing contact.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contactId'], 'properties': {'name': {'type': 'string', 'description': 'Name'}, 'email': {'type': 'string', 'description': 'Email address'}, 'phone': {'type': 'string', 'description': 'Phone number'}, 'jobTitle': {'type': 'string', 'description': 'Job title'}, 'contactId': {'type': 'string', 'description': 'The contact ID'}, 'isPrimary': {'type': 'boolean', 'description': 'Mark as the primary contact'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_custom_field
Update a custom field definition label, type, options, required flag, or sort order.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['definitionId'], 'properties': {'options': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Allowed values for select/multiselect fields'}, 'fieldType': {'enum': ['text', 'number', 'date', 'select', 'multiselect', 'boolean', 'url', 'email', 'phone'], 'type': 'string', 'description': 'Field type'}, 'sortOrder': {'type': 'number', 'description': 'Display order'}, 'fieldLabel': {'type': 'string', 'minLength': 1, 'description': 'Human-readable label'}, 'isRequired': {'type': 'boolean', 'description': 'Whether this field is required'}, 'definitionId': {'type': 'string', 'description': 'Custom field definition ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_deal
Update a CRM deal. Pass only fields to change; use null for nullable links/fields to clear them.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId'], 'properties': {'name': {'type': 'string', 'description': 'Deal name'}, 'stage': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Pipeline stage, or null to clear'}, 'amount': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Deal amount, or null to clear'}, 'dealId': {'type': 'string', 'description': 'The deal ID'}, 'ownerId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Owner user/team member ID, or null to clear'}, 'dealType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Deal type/category, or null to clear'}, 'accountId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Linked CRM account ID, or null to clear'}, 'contactId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Linked contact ID, or null to clear'}, 'closingDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Expected closing date, or null to clear'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Deal notes or description, or null to clear'}, 'probability': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Win probability, or null to clear'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_deal_stage
Move a deal to a different pipeline stage.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dealId', 'stage'], 'properties': {'stage': {'enum': ['discovery', 'qualified', 'proposal', 'negotiation', 'won', 'lost', 'lead', 'new', 'open'], 'type': 'string', 'description': 'New pipeline stage. "lead", "new" and "open" are accepted aliases of "discovery".'}, 'dealId': {'type': 'string', 'description': 'The deal ID'}, 'lostReason': {'type': 'string', 'description': 'Required when moving to lost'}, 'probability': {'type': 'string', 'description': 'Optional win probability (percent string)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_order_status
Update the status of a shop order (e.g. confirm, ship, cancel).
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orderId', 'status'], 'properties': {'status': {'enum': ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded'], 'type': 'string', 'description': 'New order status'}, 'orderId': {'type': 'string', 'description': 'The order UUID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_outlet
Update an existing shop outlet/location by ID.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Outlet ID (UUID)'}, 'name': {'type': 'string', 'description': 'Outlet name'}, 'phone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Contact phone'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Street address'}, 'logoUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Logo URL'}, 'isActive': {'type': 'boolean', 'description': 'Whether outlet is active'}, 'latitude': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}]}, {'type': 'null'}], 'description': 'Latitude'}, 'longitude': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}]}, {'type': 'null'}], 'description': 'Longitude'}, 'sortOrder': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Display sort order'}, 'acceptsOrders': {'type': 'boolean', 'description': 'Whether outlet accepts online orders'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_post
Update an existing CMS post (any post type). Only provided fields are changed.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'meta': {'type': 'object', 'description': 'Custom field values; merged shallowly with existing meta. Use this for structured data, not excerpt.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'slug': {'type': 'string', 'description': 'URL slug (must be unique per company+type).'}, 'type': {'type': 'string', 'description': 'Change post type (e.g. blog_post → treatment). Slug is re-checked for uniqueness under the new type.'}, 'title': {'type': 'string', 'description': 'Post title'}, 'blocks': {'type': 'array', 'items': {'$ref': '#/definitions/__schema0'}, 'description': '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: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product, columns.'}, 'postId': {'type': 'string', 'description': 'The post ID'}, 'status': {'enum': ['draft', 'scheduled', 'published', 'archived'], 'type': 'string', 'description': 'Post status'}, 'tagIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag IDs to sync (replaces existing tags)'}, 'excerpt': {'type': 'string', 'description': 'Plain-text summary only — never JSON. Omit to leave unchanged.'}, 'parentId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Parent post ID for nested types.'}, 'seoTitle': {'type': 'string', 'description': 'SEO title override'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'visibility': {'enum': ['public', 'private', 'members_only'], 'type': 'string', 'description': 'Visibility'}, 'categoryIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Category IDs'}, 'publishedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Publish timestamp (ISO 8601)'}, 'featuredImage': {'type': 'string', 'description': 'Cover image URL'}, 'seoDescription': {'type': 'string', 'description': 'SEO description override'}}, 'definitions': {'__schema0': {'oneOf': [{'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'paragraph'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['level', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1}, 'level': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 2}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 4}]}, 'anchor': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'heading'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'caption': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'image'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['ordered', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'ordered': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'list'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['text'], 'properties': {'cite': {'type': 'string'}, 'text': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'quote'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['lang', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1}, 'lang': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'code'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'properties': {}, 'additionalProperties': False}, 'type': {'type': 'string', 'const': 'divider'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['size'], 'properties': {'size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'spacer'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['provider', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'provider': {'enum': ['youtube', 'vimeo', 'iframe'], 'type': 'string'}, 'aspectRatio': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'embed'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'html'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['videoId'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'videoId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'aspectRatio': {'type': 'string'}, 'startSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, 'type': {'type': 'string', 'const': 'youtube'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['url', 'mimeType', 'sizeBytes', 'originalName'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'icon': {'enum': ['pdf', 'doc', 'image', 'video', 'audio', 'generic'], 'type': 'string'}, 'mimeType': {'type': 'string', 'minLength': 1}, 'sizeBytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'displayName': {'type': 'string'}, 'originalName': {'type': 'string', 'minLength': 1}}}, 'type': {'type': 'string', 'const': 'file'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'answer': {'type': 'string'}, 'question': {'type': 'string', 'minLength': 1}}}}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'faq'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['tone', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'tone': {'enum': ['info', 'success', 'warning', 'danger', 'note'], 'type': 'string'}, 'title': {'type': 'string'}}}, 'type': {'type': 'string', 'const': 'callout'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['layout', 'images'], 'properties': {'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'alt'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string', 'format': 'uri'}, 'caption': {'type': 'string'}}}}, 'layout': {'enum': ['grid', 'masonry', 'carousel'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'gallery'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['label', 'href'], 'properties': {'href': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'style': {'enum': ['primary', 'secondary', 'ghost'], 'type': 'string'}, 'openInNewTab': {'type': 'boolean'}}}, 'type': {'type': 'string', 'const': 'cta'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'body': {'type': 'string'}, 'title': {'type': 'string', 'minLength': 1}}}}, 'semantic': {'enum': ['faq', 'plain'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'accordion'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1}, 'layout': {'enum': ['card', 'inline'], 'type': 'string'}}}, 'type': {'type': 'string', 'const': 'product'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['id', 'version', 'type', 'data'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'object', 'required': ['columns'], 'properties': {'align': {'enum': ['start', 'center', 'stretch'], 'type': 'string'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['blocks'], 'properties': {'span': {'type': 'number', 'exclusiveMinimum': 0}, 'blocks': {'type': 'array', 'items': {'allOf': [{'$ref': '#/definitions/__schema0'}]}}}}, 'maxItems': 4, 'minItems': 2}, 'stackBelow': {'type': 'string', 'pattern': '^(0|[0-9]+(\\.[0-9]+)?(px|rem|em|vw|vh|%))$'}}}, 'type': {'type': 'string', 'const': 'columns'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}]}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_post_type
Update a custom post type. Built-in types (blog_post, page) cannot be modified.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId'], 'properties': {'icon': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Icon name or URL'}, 'label': {'type': 'string', 'description': 'Display label'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'postTypeId': {'type': 'string', 'description': 'Post type ID'}, 'labelPlural': {'type': 'string', 'description': 'Plural display label'}, 'supportsBlocks': {'type': 'boolean', 'description': 'Allow content blocks (rich body)'}, 'supportsExcerpt': {'type': 'boolean', 'description': 'Allow an excerpt field'}, 'supportsNesting': {'type': 'boolean', 'description': 'Allow parent/child nesting'}, 'supportsCategories': {'type': 'boolean', 'description': 'Allow categories on this post type'}, 'supportsFeaturedImage': {'type': 'boolean', 'description': 'Allow a featured image'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_post_type_field
Update a field on a post type schema. Changing fieldType or flipping required=true is blocked when posts already use the field unless force=true is passed.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postTypeId', 'fieldId'], 'properties': {'force': {'type': 'boolean', 'description': 'Override safety guards. Required to change fieldType or flip required=true on a field that already has data in posts.'}, 'label': {'type': 'string', 'description': 'Display label'}, 'fields': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['label', 'fieldType'], 'properties': {'key': {'type': 'string', 'description': 'snake_case key for this repeater child field. Auto-derived from label if omitted.'}, 'label': {'type': 'string', 'description': 'Human-readable child field label'}, 'options': {'type': 'object', 'description': 'For select/multiselect child fields: { choices: ["a","b"] }.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'helpText': {'type': 'string', 'description': 'Optional hint shown in the UI'}, 'required': {'type': 'boolean', 'description': 'Whether this child field is required on every repeater row'}, 'fieldType': {'enum': ['text', 'textarea', 'richtext', 'number', 'boolean', 'date', 'datetime', 'select', 'multiselect', 'url', 'email', 'image', 'file', 'gallery', 'attachments', 'repeater'], 'type': 'string', 'description': 'Child field type. Repeaters support scalar/select types plus singular upload fields: text, textarea, richtext, number, boolean, date, datetime, select, multiselect, url, email, image, file. Nested repeaters and array upload fields are not supported.'}, 'sortOrder': {'type': 'number'}}}}, {'type': 'null'}], 'description': 'Child fields for fieldType="repeater".'}, 'fieldId': {'type': 'string', 'description': 'Field ID'}, 'options': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'For URL fields, { uploadable: true } enables file upload while preserving a URL string in meta.'}, 'helpText': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Help text shown next to the input'}, 'required': {'type': 'boolean', 'description': 'Whether the field is required'}, 'fieldType': {'enum': ['text', 'textarea', 'richtext', 'number', 'boolean', 'date', 'datetime', 'select', 'multiselect', 'url', 'email', 'image', 'file', 'gallery', 'attachments', 'repeater'], 'type': 'string', 'description': 'Field type'}, 'sortOrder': {'type': 'number', 'description': 'Sort order (lower = earlier)'}, 'postTypeId': {'type': 'string', 'description': 'Post type ID'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_product
Update an existing product. Only provided fields are changed.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['productId'], 'properties': {'sku': {'type': 'string', 'description': 'SKU code'}, 'name': {'type': 'string', 'description': 'Product name'}, 'price': {'type': 'string', 'description': 'Price as decimal string'}, 'status': {'enum': ['DRAFT', 'ACTIVE', 'ARCHIVED'], 'type': 'string', 'description': 'Product status'}, 'productId': {'type': 'number', 'description': 'The product ID'}, 'categoryIds': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Category IDs (first is primary). Replaces all existing categories.'}, 'description': {'type': 'string', 'description': 'Product description'}, 'memberPrice': {'type': 'string', 'description': 'Members-only price'}, 'discountPrice': {'type': 'string', 'description': 'Discounted price'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_promotion
Update an existing promotion. Pass only the fields you want to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['promotionId'], 'properties': {'code': {'type': 'string', 'description': 'Promotion code'}, 'name': {'type': 'string', 'description': 'Name'}, 'type': {'enum': ['percentage', 'fixed_amount'], 'type': 'string', 'description': 'Type'}, 'value': {'type': 'string', 'description': 'Discount value (numeric or decimal string)'}, 'endsAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'End timestamp (ISO 8601)'}, 'status': {'enum': ['active', 'inactive', 'expired'], 'type': 'string', 'description': 'Status filter'}, 'startsAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Start timestamp (ISO 8601)'}, 'promotionId': {'type': 'string', 'description': 'Promotion ID'}, 'usageLimitTotal': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Total usage limit across all customers'}, 'usageLimitPerCustomer': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Usage limit per customer'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_segment
Update an existing customer segment by id. Pass only the fields to change; criteria replaces the existing rules.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['segmentId'], 'properties': {'name': {'type': 'string', 'description': 'New segment name'}, 'criteria': {'anyOf': [{'type': 'object', 'required': ['operator', 'conditions'], 'properties': {'operator': {'enum': ['AND', 'OR'], 'type': 'string', 'description': 'How to combine conditions'}, 'conditions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'operator'], 'properties': {'days': {'type': 'number', 'description': 'Days window for time-based conditions'}, 'type': {'type': 'string', 'description': 'Condition type, e.g. TOTAL_SPENDINGS, DAYS_SINCE_JOINED, PASS_STATUS, CUSTOM_FIELD'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}], 'description': 'Single value for text/date/selection/custom-field conditions'}, 'values': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'description': 'Multiple values for IN/NOT_IN conditions'}, 'operator': {'type': 'string', 'description': 'Comparison operator, e.g. GT, GTE, LT, LTE, EQ, NEQ, IN, NOT_IN, CONTAINS, BEFORE, AFTER, IS_EMPTY'}, 'fieldName': {'type': 'string', 'description': 'Custom field name for custom-field segment conditions'}, 'fieldType': {'type': 'string', 'description': 'Custom field type for custom-field segment conditions'}, 'threshold': {'type': 'number', 'description': 'Numeric threshold for numeric conditions'}, 'definitionId': {'type': 'string', 'description': 'Custom field definition ID for custom-field segment conditions'}}}, 'description': 'Filter conditions'}}}, {'type': 'null'}], 'description': 'Replace dynamic criteria, or null to clear criteria'}, 'segmentId': {'type': 'string', 'description': 'The segment ID to update'}, 'description': {'type': 'string', 'description': 'New segment description'}, 'segmentType': {'enum': ['STATIC', 'DYNAMIC'], 'type': 'string', 'description': 'Change segment type'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_service
Update an existing booking service. Pass only the fields you want to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['serviceId'], 'properties': {'name': {'type': 'string', 'description': 'Name'}, 'price': {'type': 'string', 'description': 'Decimal string, e.g. "80.00"'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'type': 'string', 'description': 'Status filter'}, 'capacity': {'type': 'number', 'description': 'Participants per slot'}, 'serviceId': {'type': 'string', 'description': 'Service ID to update'}, 'categoryId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Category ID'}, 'visibility': {'enum': ['public', 'members_only', 'hidden'], 'type': 'string', 'description': 'Visibility: public | members_only | hidden'}, 'description': {'type': 'string', 'description': 'Description'}, 'requireLogin': {'type': 'boolean', 'description': 'If true, guests cannot book without an account'}, 'requiresStaff': {'type': 'boolean', 'description': 'Whether the service requires staff assignment'}, 'commissionType': {'anyOf': [{'enum': ['fixed', 'percentage'], 'type': 'string'}, {'type': 'null'}], 'description': 'Commission type: "fixed" or "percentage"'}, 'commissionValue': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Commission amount as decimal string'}, 'cooldownMinutes': {'type': 'number', 'description': 'Cooldown minutes between bookings'}, 'durationMinutes': {'type': 'number', 'description': 'Duration of one booking in minutes'}, 'requiresResource': {'type': 'boolean', 'description': 'Whether the service requires a resource (room/equipment)'}, 'commissionCurrency': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Commission currency (ISO code)'}, 'requiresConfirmation': {'type': 'boolean', 'description': 'If true, bookings start pending and need explicit confirmation'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_service_package
Update an existing service package. Pass only the fields you want to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packageId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Name'}, 'price': {'type': 'number', 'minimum': 0, 'description': 'Decimal string, e.g. "80.00"'}, 'status': {'enum': ['ACTIVE', 'INACTIVE'], 'type': 'string', 'description': 'Status filter'}, 'packageId': {'type': 'string', 'description': 'Service package ID to update'}, 'validDays': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'Validity period in days'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Description'}, 'sessionCount': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Number of sessions in the package'}, 'applicableType': {'enum': ['ALL', 'ALL_BOOKINGS', 'ALL_EVENTS', 'SELECTED'], 'type': 'string', 'description': 'What this package applies to: services | products | both'}, 'applicableItems': {'type': 'array', 'items': {'type': 'object', 'required': ['itemType', 'itemId'], 'properties': {'itemId': {'type': 'string'}, 'itemType': {'enum': ['booking_service', 'event'], 'type': 'string'}}}, 'description': 'Item IDs the package can be redeemed against'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_service_schedule
Update a service schedule window. Pass only fields to change.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scheduleId'], 'properties': {'date': {'type': 'string', 'description': 'Date (YYYY-MM-DD)'}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Free-form notes'}, 'endTime': {'type': 'string', 'description': 'End time (HH:mm)'}, 'staffId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Staff member ID'}, 'byWeekday': {'anyOf': [{'type': 'array', 'items': {'type': 'integer', 'maximum': 6, 'minimum': 0}}, {'type': 'null'}], 'description': 'Weekdays (0=Mon..6=Sun) for weekly recurrence'}, 'startTime': {'type': 'string', 'description': 'Start time (HH:mm)'}, 'recurrence': {'enum': ['none', 'daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'Recurrence rule: none | daily | weekly | monthly'}, 'resourceId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Resource ID (room/equipment)'}, 'scheduleId': {'type': 'string', 'description': 'Schedule ID'}, 'maxCapacity': {'type': 'number', 'description': 'Maximum capacity for this slot'}, 'recurrenceEndDate': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Recurrence end date (YYYY-MM-DD)'}, 'recurrenceInterval': {'type': 'number', 'description': 'Recurrence interval (e.g. every N weeks)'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_survey
Update a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId'], 'properties': {'slug': {'type': 'string', 'description': 'URL slug'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Survey title'}, 'openAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Optional ISO datetime when the survey opens'}, 'status': {'enum': ['draft', 'published', 'closed', 'archived'], 'type': 'string', 'description': 'Survey status'}, 'closeAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Optional ISO datetime when the survey closes'}, 'settings': {'type': 'object', 'description': 'Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'surveyId': {'type': 'string', 'description': 'Survey ID'}, 'visibility': {'enum': ['public', 'members_only', 'token_only', 'private'], 'type': 'string', 'description': 'Survey access mode'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Survey description'}, 'questionBlocks': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Ordered survey question blocks'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_tag
Rename or recolor an existing CRM tag.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tagId'], 'properties': {'name': {'type': 'string', 'description': 'New tag name'}, 'color': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'New color, or null to clear'}, 'tagId': {'type': 'string', 'description': 'The tag ID to update'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_task
Update a task (status, priority, assignee, due date, completion).
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taskId'], 'properties': {'title': {'type': 'string', 'description': 'Title'}, 'status': {'enum': ['todo', 'in_progress', 'blocked', 'done'], 'type': 'string', 'description': 'Status filter'}, 'taskId': {'type': 'string', 'description': 'The task ID'}, 'dueDate': {'type': 'string', 'description': 'Due date (ISO 8601)'}, 'priority': {'enum': ['low', 'medium', 'high', 'urgent'], 'type': 'string', 'description': 'Priority'}, 'assigneeId': {'type': 'string', 'description': 'Assignee user ID'}, 'description': {'type': 'string', 'description': 'Description'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
update_ticket_status
Update the status of an existing support ticket.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticketId', 'status'], 'properties': {'status': {'enum': ['open', 'in_progress', 'waiting_customer', 'resolved', 'closed'], 'type': 'string', 'description': 'New status'}, 'ticketId': {'type': 'string', 'description': 'The ticket ID to update'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
upload_post_cover_from_url
Download an external image URL into R2 and attach it as the post's featuredImage. Replaces the manual flow of pasting external URLs (which break when the source goes down). Validates content-type starts with `image/` and rejects payloads larger than 20 MB. No AI credits charged — only standard storage.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId', 'sourceUrl'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}, 'sourceUrl': {'type': 'string', 'format': 'uri', 'description': 'Public http(s) URL to fetch the image from. Must respond with an image/* content-type.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
upsert_survey_workflow
Create or update a survey automation workflow, usually triggered by survey_response_submitted.
멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['surveyId', 'name', 'graph'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Workflow name'}, 'graph': {'type': 'object', 'required': ['trigger', 'nodes', 'edges'], 'properties': {'edges': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'trigger': {'type': 'string', 'minLength': 1}}, 'description': 'Workflow graph definition'}, 'status': {'enum': ['draft', 'active', 'disabled'], 'type': 'string', 'description': 'Workflow status'}, 'trigger': {'type': 'string', 'description': 'Trigger name, default from graph.trigger'}, 'surveyId': {'type': 'string', 'description': 'Survey ID'}, 'workflowId': {'type': 'string', 'description': 'Existing workflow ID when updating'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
validate_campaign
Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['campaignId'], 'properties': {'campaignId': {'type': 'string', 'description': 'Campaign ID to validate'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
validate_promotion
Check if a promotion code is valid for a given order. Returns isValid, discount amount, and an error code/message if invalid. Use before applying to a checkout.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['promotionCode', 'channel', 'amount'], 'properties': {'amount': {'type': 'number', 'description': 'Order subtotal in major units (dollars, not cents)'}, 'channel': {'enum': ['booking', 'event', 'online', 'pos'], 'type': 'string', 'description': 'Where the promo is being applied'}, 'accountId': {'type': 'string', 'description': 'Customer account ID — used for per-customer usage limits'}, 'promotionCode': {'type': 'string', 'description': 'The code customer entered'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
void_invoice
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.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'description': 'Invoice ID to void'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['data', 'summary', 'renderType'], 'properties': {'data': {'description': 'Tool result payload — shape varies per tool, see the tool description'}, 'summary': {'type': 'string', 'description': 'One-line human-readable summary of the action'}, 'renderType': {'enum': ['table', 'detail', 'stats', 'text', 'chart', 'download'], 'type': 'string', 'description': 'UI rendering hint for the result'}}, 'additionalProperties': False}
추가됨
register_organisation_verify
2026년 9월 17일 12:40 PM
추가됨
register_organisation_request
2026년 9월 17일 12:40 PM
추가됨
report_agent_issue
2026년 9월 17일 12:40 PM
추가됨
list_shipping_methods
2026년 9월 17일 12:40 PM
추가됨
restore_knowledge_document
2026년 9월 17일 12:40 PM
추가됨
delete_knowledge_document
2026년 9월 17일 12:40 PM
추가됨
add_knowledge_text
2026년 9월 17일 12:40 PM
추가됨
scrape_knowledge_url
2026년 9월 17일 12:40 PM
추가됨
get_knowledge_document
2026년 9월 17일 12:40 PM
추가됨
list_knowledge_documents
2026년 9월 17일 12:40 PM
추가됨
query_company_knowledge
2026년 9월 17일 12:40 PM
추가됨
execute_tool
2026년 9월 17일 12:40 PM
추가됨
search_tools
2026년 9월 17일 12:40 PM
추가됨
query_favcrm_platform
2026년 9월 17일 12:40 PM
추가됨
create_offer_rule
2026년 9월 17일 12:40 PM
추가됨
get_offer_rule
2026년 9월 17일 12:40 PM
추가됨
list_offer_rules
2026년 9월 17일 12:40 PM
추가됨
update_order_status
2026년 9월 17일 12:40 PM
추가됨
get_order
2026년 9월 17일 12:40 PM
추가됨
list_orders
2026년 9월 17일 12:40 PM
추가됨
create_variation
2026년 9월 17일 12:40 PM
추가됨
create_product_category
2026년 9월 17일 12:40 PM
추가됨
list_product_categories
2026년 9월 17일 12:40 PM
추가됨
update_product
2026년 9월 17일 12:40 PM
추가됨
create_product
2026년 9월 17일 12:40 PM
추가됨
get_product
2026년 9월 17일 12:40 PM
추가됨
list_products
2026년 9월 17일 12:40 PM
추가됨
update_outlet
2026년 9월 17일 12:40 PM
추가됨
create_outlet
2026년 9월 17일 12:40 PM
추가됨
list_outlets
2026년 9월 17일 12:40 PM