此 MCP 可以做什么
Creates, edits, previews, publishes, and manages hosted link-in-bio and landing pages with configurable content blocks, themes, metadata, and source imports.
工具
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The claimed pageId to manage.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of claimed pages to return.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pages'], 'properties': {'ok': {'type': 'boolean'}, 'pages': {'type': 'array', 'items': {'type': 'object', 'required': ['pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimedAt', 'createdAt', 'updatedAt'], 'properties': {'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'claimedAt': {'type': ['string', 'null']}, 'createdAt': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'nextStep': {'type': 'string'}, 'authRequired': {'type': 'boolean', 'description': 'true when the session is an anonymous demo: it has no saved pages, so pages is empty. Not an error.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['accountId', 'authMode', 'role', 'service', 'demoExpiresAt'], 'properties': {'role': {'enum': ['owner', 'demo'], 'type': 'string'}, 'service': {'type': 'string'}, 'authMode': {'enum': ['internal', 'oauth', 'demo'], 'type': 'string'}, 'accountId': {'type': 'string'}, 'demoExpiresAt': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['pageId', 'block'], 'properties': {'block': {'type': 'object', 'oneOf': [{'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['link'], 'type': 'string', 'description': 'Use this variant only for a link block.'}, 'props': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'description': 'Destination URL using http, https, mailto, tel, or sms.'}, 'icon': {'type': 'string', 'maxLength': 64}, 'label': {'type': 'string', 'maxLength': 120}, 'width': {'enum': ['full', 'half'], 'type': 'string', 'description': 'half lets two consecutive half-width links render side by side as one row. Default full.'}, 'highlight': {'type': 'boolean'}, 'thumbnail': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'description': 'A tappable button with a label and URL. Optional thumbnail and icon.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['social_row'], 'type': 'string', 'description': 'Use this variant only for a social_row block.'}, 'props': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['platform', 'url'], 'properties': {'url': {'type': 'string', 'description': 'For social platforms: a public http(s) profile URL. For contact platforms (email/phone/whatsapp): the bare email address or phone number — the page builds the mailto:/tel:/wa.me link.'}, 'label': {'type': 'string', 'maxLength': 64}, 'platform': {'enum': ['instagram', 'tiktok', 'youtube', 'x', 'facebook', 'linkedin', 'spotify', 'apple_music', 'soundcloud', 'github', 'pinterest', 'threads', 'twitch', 'discord', 'telegram', 'snapchat', 'vimeo', 'behance', 'dribbble', 'medium', 'substack', 'website', 'other', 'email', 'phone', 'whatsapp'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 16}}, 'additionalProperties': False}}, 'description': 'A compact row of social icons. Items are { platform, url }.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['whatsapp'], 'type': 'string', 'description': 'Use this variant only for a whatsapp block.'}, 'props': {'type': 'object', 'required': ['number'], 'properties': {'label': {'type': 'string', 'maxLength': 120}, 'number': {'type': 'string', 'maxLength': 32, 'description': 'Public WhatsApp phone number.'}, 'message': {'type': 'string', 'maxLength': 500, 'description': 'Optional prefilled message.'}}, 'additionalProperties': False}}, 'description': 'WhatsApp CTA. Requires a WhatsApp number (digits only).', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['phone_call'], 'type': 'string', 'description': 'Use this variant only for a phone_call block.'}, 'props': {'type': 'object', 'required': ['number'], 'properties': {'label': {'type': 'string', 'maxLength': 120}, 'number': {'type': 'string', 'maxLength': 32, 'description': 'Public phone number.'}}, 'additionalProperties': False}}, 'description': 'Tel: button. Requires a phone number.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['email_contact'], 'type': 'string', 'description': 'Use this variant only for a email_contact block.'}, 'props': {'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': 'Public business email address.'}, 'label': {'type': 'string', 'maxLength': 120}, 'subject': {'type': 'string', 'maxLength': 160}}, 'additionalProperties': False}}, 'description': 'Mailto: button. Requires an email address.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['image'], 'type': 'string', 'description': 'Use this variant only for a image block.'}, 'props': {'type': 'object', 'required': ['image'], 'properties': {'image': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'layout': {'enum': ['classic', 'wide', 'background'], 'type': 'string'}, 'caption': {'type': 'string', 'maxLength': 280}, 'link_url': {'type': 'string', 'maxLength': 2048}}, 'additionalProperties': False}}, 'description': 'A single image with layout classic | wide | background.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['gallery'], 'type': 'string', 'description': 'Use this variant only for a gallery block.'}, 'props': {'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'maxItems': 24}, 'display': {'enum': ['grid', 'carousel'], 'type': 'string'}}, 'additionalProperties': False}}, 'description': 'Multiple images in a grid or carousel.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['video_embed'], 'type': 'string', 'description': 'Use this variant only for a video_embed block.'}, 'props': {'type': 'object', 'required': ['provider', 'video_id'], 'properties': {'title': {'type': 'string', 'maxLength': 160}, 'provider': {'enum': ['youtube', 'vimeo', 'mp4'], 'type': 'string'}, 'video_id': {'type': 'string', 'maxLength': 2048, 'description': 'Video id or URL, depending on provider.'}, 'thumbnail': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'description': 'YouTube, Vimeo, or mp4. Use normalized provider + video_id.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['text'], 'type': 'string', 'description': 'Use this variant only for a text block.'}, 'props': {'type': 'object', 'properties': {'body': {'type': 'string', 'maxLength': 2000}, 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 280}, 'maxItems': 12}, 'heading': {'type': 'string', 'maxLength': 160}, 'alignment': {'enum': ['left', 'center'], 'type': 'string'}}, 'additionalProperties': False}}, 'description': 'A short final-audience heading, body, and/or list block.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['map_embed'], 'type': 'string', 'description': 'Use this variant only for a map_embed block.'}, 'props': {'type': 'object', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'zoom': {'type': 'number', 'maximum': 20, 'minimum': 1}, 'label': {'type': 'string', 'maxLength': 160}, 'address': {'type': 'string', 'maxLength': 400, 'description': 'Public business address or service-area text.'}, 'place_id': {'type': 'string', 'maxLength': 160}}, 'additionalProperties': False}}, 'description': 'Google Maps embed by address, place_id, or lat/lng.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['product_card'], 'type': 'string', 'description': 'Use this variant only for a product_card block.'}, 'props': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 160}, 'image': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'buy_url': {'type': 'string', 'description': 'Public http(s) purchase URL.'}, 'cta_label': {'type': 'string', 'maxLength': 120}, 'price_text': {'type': 'string', 'maxLength': 40}, 'description': {'type': 'string', 'maxLength': 280}}, 'additionalProperties': False}}, 'description': 'A link-out commerce card with name, image, price, and buy URL.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['lead_form'], 'type': 'string', 'description': 'Use this variant only for a lead_form block.'}, 'props': {'type': 'object', 'required': ['mode', 'fields'], 'properties': {'mode': {'enum': ['contact', 'newsletter', 'booking_interest'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 160}, 'fields': {'type': 'array', 'items': {'enum': ['name', 'email', 'phone', 'message', 'company'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1}, 'description': {'type': 'string', 'maxLength': 280}, 'consent_text': {'type': 'string', 'maxLength': 400}, 'field_labels': {'type': 'object', 'description': "Public labels/placeholders for form fields in the page's target language.", 'additionalProperties': {'type': 'string', 'maxLength': 120}}, 'submit_label': {'type': 'string', 'maxLength': 120}, 'success_message': {'type': 'string', 'maxLength': 280}, 'destination_email': {'type': 'string', 'description': 'Public/business lead recipient email.'}, 'destination_webhook': {'type': 'string', 'description': 'Public http(s) webhook URL.'}}, 'additionalProperties': False}}, 'description': 'Capture form. mode: contact | newsletter | booking_interest. Supply field labels and submit text for localized public pages.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['reviews'], 'type': 'string', 'description': 'Use this variant only for a reviews block.'}, 'props': {'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['author', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 280}, 'role': {'type': 'string', 'maxLength': 120}, 'author': {'type': 'string', 'maxLength': 64}, 'avatar': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'rating': {'type': 'number', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 12}, 'display': {'enum': ['carousel', 'stack'], 'type': 'string'}}, 'additionalProperties': False}}, 'description': 'Carousel or stack of testimonials.', 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'props'], 'properties': {'type': {'enum': ['save_contact'], 'type': 'string', 'description': 'Use this variant only for a save_contact block.'}, 'props': {'type': 'object', 'properties': {'style': {'enum': ['qr_card', 'button'], 'type': 'string', 'description': 'qr_card renders a QR + caption footer; button renders a single save-contact button.'}, 'title': {'type': 'string', 'maxLength': 120, 'description': 'Short caption, e.g. "Scan to save".'}, 'subtitle': {'type': 'string', 'maxLength': 160, 'description': 'Secondary caption, e.g. "Adds my contact card".'}, 'button_label': {'type': 'string', 'maxLength': 120, 'description': 'Save button text, e.g. "Save contact".'}}, 'additionalProperties': False}}, 'description': 'QR + save-contact footer for digital business cards. The vCard is derived from the page header and contact blocks; props only carry presentation copy.', 'additionalProperties': False}], 'description': "The block to add. Must match one of the 14 allowed types with that type's strict props schema. The server generates the block id."}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'blockId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'blockId', 'toIndex'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string'}, 'toIndex': {'type': 'number'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['link'], 'type': 'string', 'description': 'Use this variant only for a link block.'}, 'props': {'type': 'object', 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'description': 'Destination URL using http, https, mailto, tel, or sms.'}, 'icon': {'type': 'string', 'maxLength': 64}, 'label': {'type': 'string', 'maxLength': 120}, 'width': {'enum': ['full', 'half'], 'type': 'string', 'description': 'half lets two consecutive half-width links render side by side as one row. Default full.'}, 'highlight': {'type': 'boolean'}, 'thumbnail': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as link. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['social_row'], 'type': 'string', 'description': 'Use this variant only for a social_row block.'}, 'props': {'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['platform', 'url'], 'properties': {'url': {'type': 'string', 'description': 'For social platforms: a public http(s) profile URL. For contact platforms (email/phone/whatsapp): the bare email address or phone number — the page builds the mailto:/tel:/wa.me link.'}, 'label': {'type': 'string', 'maxLength': 64}, 'platform': {'enum': ['instagram', 'tiktok', 'youtube', 'x', 'facebook', 'linkedin', 'spotify', 'apple_music', 'soundcloud', 'github', 'pinterest', 'threads', 'twitch', 'discord', 'telegram', 'snapchat', 'vimeo', 'behance', 'dribbble', 'medium', 'substack', 'website', 'other', 'email', 'phone', 'whatsapp'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 16}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as social_row. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['whatsapp'], 'type': 'string', 'description': 'Use this variant only for a whatsapp block.'}, 'props': {'type': 'object', 'properties': {'label': {'type': 'string', 'maxLength': 120}, 'number': {'type': 'string', 'maxLength': 32, 'description': 'Public WhatsApp phone number.'}, 'message': {'type': 'string', 'maxLength': 500, 'description': 'Optional prefilled message.'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as whatsapp. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['phone_call'], 'type': 'string', 'description': 'Use this variant only for a phone_call block.'}, 'props': {'type': 'object', 'properties': {'label': {'type': 'string', 'maxLength': 120}, 'number': {'type': 'string', 'maxLength': 32, 'description': 'Public phone number.'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as phone_call. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['email_contact'], 'type': 'string', 'description': 'Use this variant only for a email_contact block.'}, 'props': {'type': 'object', 'properties': {'email': {'type': 'string', 'description': 'Public business email address.'}, 'label': {'type': 'string', 'maxLength': 120}, 'subject': {'type': 'string', 'maxLength': 160}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as email_contact. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['image'], 'type': 'string', 'description': 'Use this variant only for a image block.'}, 'props': {'type': 'object', 'properties': {'image': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'layout': {'enum': ['classic', 'wide', 'background'], 'type': 'string'}, 'caption': {'type': 'string', 'maxLength': 280}, 'link_url': {'type': 'string', 'maxLength': 2048}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as image. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['gallery'], 'type': 'string', 'description': 'Use this variant only for a gallery block.'}, 'props': {'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'maxItems': 24}, 'display': {'enum': ['grid', 'carousel'], 'type': 'string'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as gallery. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['video_embed'], 'type': 'string', 'description': 'Use this variant only for a video_embed block.'}, 'props': {'type': 'object', 'properties': {'title': {'type': 'string', 'maxLength': 160}, 'provider': {'enum': ['youtube', 'vimeo', 'mp4'], 'type': 'string'}, 'video_id': {'type': 'string', 'maxLength': 2048, 'description': 'Video id or URL, depending on provider.'}, 'thumbnail': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as video_embed. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['text'], 'type': 'string', 'description': 'Use this variant only for a text block.'}, 'props': {'type': 'object', 'properties': {'body': {'type': 'string', 'maxLength': 2000}, 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 280}, 'maxItems': 12}, 'heading': {'type': 'string', 'maxLength': 160}, 'alignment': {'enum': ['left', 'center'], 'type': 'string'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as text. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['map_embed'], 'type': 'string', 'description': 'Use this variant only for a map_embed block.'}, 'props': {'type': 'object', 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'zoom': {'type': 'number', 'maximum': 20, 'minimum': 1}, 'label': {'type': 'string', 'maxLength': 160}, 'address': {'type': 'string', 'maxLength': 400, 'description': 'Public business address or service-area text.'}, 'place_id': {'type': 'string', 'maxLength': 160}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as map_embed. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['product_card'], 'type': 'string', 'description': 'Use this variant only for a product_card block.'}, 'props': {'type': 'object', 'properties': {'name': {'type': 'string', 'maxLength': 160}, 'image': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'buy_url': {'type': 'string', 'description': 'Public http(s) purchase URL.'}, 'cta_label': {'type': 'string', 'maxLength': 120}, 'price_text': {'type': 'string', 'maxLength': 40}, 'description': {'type': 'string', 'maxLength': 280}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as product_card. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['lead_form'], 'type': 'string', 'description': 'Use this variant only for a lead_form block.'}, 'props': {'type': 'object', 'properties': {'mode': {'enum': ['contact', 'newsletter', 'booking_interest'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 160}, 'fields': {'type': 'array', 'items': {'enum': ['name', 'email', 'phone', 'message', 'company'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1}, 'description': {'type': 'string', 'maxLength': 280}, 'consent_text': {'type': 'string', 'maxLength': 400}, 'field_labels': {'type': 'object', 'description': "Public labels/placeholders for form fields in the page's target language.", 'additionalProperties': {'type': 'string', 'maxLength': 120}}, 'submit_label': {'type': 'string', 'maxLength': 120}, 'success_message': {'type': 'string', 'maxLength': 280}, 'destination_email': {'type': 'string', 'description': 'Public/business lead recipient email.'}, 'destination_webhook': {'type': 'string', 'description': 'Public http(s) webhook URL.'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as lead_form. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['reviews'], 'type': 'string', 'description': 'Use this variant only for a reviews block.'}, 'props': {'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['author', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 280}, 'role': {'type': 'string', 'maxLength': 120}, 'author': {'type': 'string', 'maxLength': 64}, 'avatar': {'type': 'object', 'required': ['src'], 'properties': {'alt': {'type': 'string', 'description': 'Alt text for accessibility.'}, 'src': {'type': 'string', 'description': 'Image URL or stored media URL.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}, 'rating': {'type': 'number', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 12}, 'display': {'enum': ['carousel', 'stack'], 'type': 'string'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as reviews. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}, {'type': 'object', 'required': ['pageId', 'blockId', 'type', 'props'], 'properties': {'type': {'enum': ['save_contact'], 'type': 'string', 'description': 'Use this variant only for a save_contact block.'}, 'props': {'type': 'object', 'properties': {'style': {'enum': ['qr_card', 'button'], 'type': 'string', 'description': 'qr_card renders a QR + caption footer; button renders a single save-contact button.'}, 'title': {'type': 'string', 'maxLength': 120, 'description': 'Short caption, e.g. "Scan to save".'}, 'subtitle': {'type': 'string', 'maxLength': 160, 'description': 'Secondary caption, e.g. "Adds my contact card".'}, 'button_label': {'type': 'string', 'maxLength': 120, 'description': 'Save button text, e.g. "Save contact".'}}, 'description': 'Partial props patch for this block type. Include only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'blockId': {'type': 'string', 'description': 'The block id returned by block_add or page_get. Stable across reorders.'}, 'editToken': {'type': 'string'}}, 'description': "Patch an existing block as save_contact. Provide the block's current type unless intentionally changing it.", 'additionalProperties': False}], 'description': 'Patch one block. Choose the oneOf variant whose type matches the existing block, unless intentionally changing the block type.'}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'mediaAssetId', 'placement'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'altText': {'type': 'string', 'description': 'Meaningful alt text for the image.'}, 'blockId': {'type': 'string', 'description': 'Required when placement is block_image; optional for gallery_item (targets a specific gallery block).'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string', 'description': 'Where the image should be used. header_photo = business-card top photo, avatar = profile header avatar, block_image = image inside a block (requires blockId), gallery_item = appended to a gallery block, background = page background.'}, 'mediaAssetId': {'type': 'string', 'format': 'uuid', 'description': 'The mediaAssetId returned by media_upload or media_upload_link_create.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mediaAssetId', 'status', 'placement', 'altText'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': ['string', 'null']}, 'pageId': {'type': ['string', 'null'], 'format': 'uuid'}, 'status': {'enum': ['awaiting_upload', 'processing', 'ready', 'failed', 'deleted'], 'type': 'string'}, 'altText': {'type': 'string'}, 'content': {'type': 'object', 'additionalProperties': True}, 'attached': {'type': 'boolean'}, 'nextStep': {'type': 'string'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'deletedAt': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string'}, 'revisionId': {'type': ['string', 'null'], 'format': 'uuid'}, 'uploadedAt': {'type': ['string', 'null']}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}, 'uploadPageUrl': {'type': 'string'}, 'revisionVersion': {'type': ['number', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'mediaAssetId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}, 'mediaAssetId': {'type': 'string', 'format': 'uuid', 'description': 'The mediaAssetId to delete.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mediaAssetId', 'status', 'placement', 'altText'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': ['string', 'null']}, 'pageId': {'type': ['string', 'null'], 'format': 'uuid'}, 'status': {'enum': ['awaiting_upload', 'processing', 'ready', 'failed', 'deleted'], 'type': 'string'}, 'altText': {'type': 'string'}, 'content': {'type': 'object', 'additionalProperties': True}, 'attached': {'type': 'boolean'}, 'nextStep': {'type': 'string'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'deletedAt': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string'}, 'revisionId': {'type': ['string', 'null'], 'format': 'uuid'}, 'uploadedAt': {'type': ['string', 'null']}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}, 'uploadPageUrl': {'type': 'string'}, 'revisionVersion': {'type': ['number', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'altText': {'type': 'string', 'description': 'Meaningful alt text for the image.'}, 'fileName': {'type': 'string', 'description': 'Original file name when known.'}, 'imageUrl': {'type': 'string', 'description': 'Public direct image URL. The server validates redirects and blocks private network targets.'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string', 'description': 'Where the image should be used. header_photo = business-card top photo, avatar = profile header avatar, block_image = image inside a block (requires blockId), gallery_item = appended to a gallery block, background = page background.'}, 'contentType': {'type': 'string', 'description': 'Declared MIME type, such as image/png. The server still verifies magic bytes.'}, 'imageBase64': {'type': 'string', 'description': 'Base64 image bytes or a data:image/*;base64 data URI. Use only for small images.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mediaAssetId', 'status', 'placement', 'altText'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': ['string', 'null']}, 'pageId': {'type': ['string', 'null'], 'format': 'uuid'}, 'status': {'enum': ['awaiting_upload', 'processing', 'ready', 'failed', 'deleted'], 'type': 'string'}, 'altText': {'type': 'string'}, 'content': {'type': 'object', 'additionalProperties': True}, 'attached': {'type': 'boolean'}, 'nextStep': {'type': 'string'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'deletedAt': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string'}, 'revisionId': {'type': ['string', 'null'], 'format': 'uuid'}, 'uploadedAt': {'type': ['string', 'null']}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}, 'uploadPageUrl': {'type': 'string'}, 'revisionVersion': {'type': ['number', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'altText': {'type': 'string', 'description': 'Meaningful alt text for the image.'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string', 'description': 'Where the image should be used. header_photo = business-card top photo, avatar = profile header avatar, block_image = image inside a block (requires blockId), gallery_item = appended to a gallery block, background = page background.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mediaAssetId', 'status', 'placement', 'altText'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': ['string', 'null']}, 'pageId': {'type': ['string', 'null'], 'format': 'uuid'}, 'status': {'enum': ['awaiting_upload', 'processing', 'ready', 'failed', 'deleted'], 'type': 'string'}, 'altText': {'type': 'string'}, 'content': {'type': 'object', 'additionalProperties': True}, 'attached': {'type': 'boolean'}, 'nextStep': {'type': 'string'}, 'variants': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'deletedAt': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'placement': {'enum': ['avatar', 'header_photo', 'block_image', 'gallery_item', 'background', 'unassigned'], 'type': 'string'}, 'revisionId': {'type': ['string', 'null'], 'format': 'uuid'}, 'uploadedAt': {'type': ['string', 'null']}, 'mediaAssetId': {'type': 'string', 'format': 'uuid'}, 'uploadPageUrl': {'type': 'string'}, 'revisionVersion': {'type': ['number', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'editToken'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'editToken': {'type': 'string', 'description': 'The editToken returned by page_create for the anonymous demo page.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['title', 'preset'], 'properties': {'bio': {'type': 'string', 'maxLength': 280, 'description': 'Optional short bio for the header.'}, 'slug': {'type': 'string', 'description': 'Preferred public URL slug.'}, 'style': {'type': 'string', 'description': 'Free-form style hint used by preset:auto inference.'}, 'title': {'type': 'string', 'description': 'Internal page title and default header display_name.'}, 'layout': {'enum': ['link_in_bio'], 'type': 'string', 'description': "Layout id. Defaults to 'link_in_bio'."}, 'preset': {'enum': ['classic_dark', 'sunset_gradient', 'editorial_serif', 'minimalist_light', 'local_business', 'bold_pop', 'zen_neutral', 'midnight_blue', 'card_warm_terracotta', 'card_navy_serif', 'card_editorial_dark', 'card_bold_realestate', 'auto'], 'type': 'string', 'description': "Style preset id, or 'auto' to infer deterministically from businessType/style."}, 'displayName': {'type': 'string', 'description': 'Visible header display name. Defaults to title.'}, 'businessType': {'type': 'string', 'description': 'Used by preset:auto inference. Examples: musician, restaurant, designer.'}, 'initialPrompt': {'type': 'string', 'maxLength': 12000}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['businessName'], 'properties': {'bio': {'type': 'string', 'maxLength': 280, 'description': 'Optional short bio for the header.'}, 'offer': {'type': 'string', 'description': 'Planning context only. Not rendered directly as public page copy; use bio and publicSections for final-audience copy.'}, 'style': {'type': 'string', 'description': 'Planning context only. Not rendered directly as public page copy.'}, 'layout': {'enum': ['link_in_bio'], 'type': 'string', 'description': "Defaults to 'link_in_bio'."}, 'locale': {'type': 'string'}, 'preset': {'enum': ['classic_dark', 'sunset_gradient', 'editorial_serif', 'minimalist_light', 'local_business', 'bold_pop', 'zen_neutral', 'midnight_blue', 'card_warm_terracotta', 'card_navy_serif', 'card_editorial_dark', 'card_bold_realestate', 'auto'], 'type': 'string', 'description': "Style preset id, or 'auto' to infer deterministically. Defaults to 'auto'."}, 'audience': {'type': 'string', 'description': 'Planning context only. Not rendered directly as public page copy.'}, 'location': {'type': 'string', 'description': "Public business address or service area intended for map/address actions, not direct body copy and not the user's private/current location."}, 'sourceUrl': {'type': 'string', 'description': 'Provenance reference only.'}, 'mustInclude': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 12, 'description': 'Planning checklist only. Do not put section names, CTA labels, owner instructions, or private notes here; not rendered directly.'}, 'primaryGoal': {'type': 'string', 'description': 'Planning context only. Not rendered directly as public page copy.'}, 'publicPhone': {'type': 'string', 'description': "Public business phone number explicitly supplied by the user or a public source. Do not use the user's private/account phone."}, 'businessName': {'type': 'string'}, 'businessType': {'type': 'string', 'description': 'Planning context only. Not rendered directly as public page copy.'}, 'heroImageUrl': {'type': 'string', 'description': 'Explicit user-provided image URL for featured-photo or full-image styles.'}, 'sourceHandle': {'type': 'string'}, 'initialPrompt': {'type': 'string', 'maxLength': 12000}, 'preferredSlug': {'type': 'string', 'description': 'Desired URL path. Ask the user for it near the end of onboarding. Use normal letters, numbers, and hyphens; the server normalizes and makes it unique.'}, 'publicSections': {'type': 'array', 'items': {'type': 'object', 'properties': {'body': {'type': 'string', 'maxLength': 2000}, 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 280}, 'maxItems': 12}, 'heading': {'type': 'string', 'maxLength': 160}, 'alignment': {'enum': ['left', 'center'], 'type': 'string'}}, 'description': "Final-audience page copy. Use the page's target language and correct spelling/accents. Do not put planning notes, owner instructions, or section labels here.", 'additionalProperties': False}, 'maxItems': 100, 'description': 'Final-audience text sections to render on the public page. Write in the target language with correct spelling/accents. Only include facts the user supplied or that came from an imported public source; for sparse prompts, keep this short and avoid invented service lists, hours, benefits, testimonials, prices, or operational details.'}, 'publicWhatsapp': {'type': 'string', 'description': "Public WhatsApp phone number explicitly supplied by the user or a public source. Do not use the user's account phone or invent placeholder numbers."}, 'primaryActionId': {'enum': ['appointment', 'whatsapp', 'phone', 'maps', 'buy', 'lead', 'subscribe', 'follow'], 'type': 'string'}, 'fallbackLeadForm': {'type': 'object', 'required': ['title', 'submitLabel'], 'properties': {'mode': {'enum': ['contact', 'booking_interest'], 'type': 'string'}, 'title': {'type': 'string', 'maxLength': 160}, 'fields': {'type': 'array', 'items': {'enum': ['name', 'email', 'phone', 'message', 'company'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1}, 'consentText': {'type': 'string', 'maxLength': 400}, 'description': {'type': 'string', 'maxLength': 280}, 'fieldLabels': {'type': 'object', 'description': "Field labels/placeholders, for example name/email/message in the page's target language.", 'additionalProperties': {'type': 'string', 'maxLength': 120}}, 'submitLabel': {'type': 'string', 'maxLength': 120}, 'successMessage': {'type': 'string', 'maxLength': 280}}, 'description': "Public fallback contact/interest form to use when the requested primary action lacks a real destination. All copy must be final-audience copy in the page's target language.", 'additionalProperties': False}, 'onboardingLayout': {'enum': ['background_color', 'full', 'background_image'], 'type': 'string', 'description': 'Layout style: background_color (minimalist), full (featured photo), or background_image (full image background).'}, 'primaryActionUrl': {'type': 'string', 'description': 'Real destination URL for the primary action when explicitly supplied by the user or imported public source, such as a booking link. Do not invent booking/order URLs; if missing, ask for it or use fallbackLeadForm.'}, 'onboardingPalette': {'type': 'string', 'description': 'Palette id returned by page_onboarding_* paletteChoices, for example atom_dark_plum.'}, 'primaryActionLabel': {'type': 'string', 'maxLength': 120, 'description': "Public label for the primary action in the page's target language."}, 'publicBusinessEmail': {'type': 'string', 'description': "Public business contact email explicitly supplied by the user or a public source. Do not use the user's ChatGPT/account email."}, 'onboardingSubCategory': {'type': 'string', 'description': 'Validated atom.bio subcategory id, for example health.'}, 'onboardingMainCategory': {'type': 'string', 'description': 'Validated atom.bio category id from page_onboarding_*, for example physical-business or online-business.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'bio': {'anyOf': [{'type': 'string', 'maxLength': 280}, {'type': 'null'}], 'description': 'Short bio under the display name. Pass null to clear it.'}, 'label': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}], 'description': 'Short role line near the name, e.g. "Brand Designer · Austin, TX". Pass null to clear it.'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'showQr': {'type': 'boolean', 'description': 'Show a QR code for this page.'}, 'display': {'anyOf': [{'enum': ['avatar', 'photo_hero'], 'type': 'string'}, {'type': 'null'}], 'description': 'Header style: photo_hero = large business-card top photo, avatar = small round profile photo. Pass null to clear it.'}, 'photoAlt': {'type': 'string', 'maxLength': 160, 'description': 'Alt text for the header photo.'}, 'photoUrl': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Header photo URL. Pass null to remove the current photo.'}, 'verified': {'type': 'boolean', 'description': 'Show a verified checkmark next to the display name.'}, 'editToken': {'type': 'string'}, 'displayName': {'type': 'string', 'maxLength': 80, 'description': 'Visible display name in the page header.'}, 'labelPosition': {'anyOf': [{'enum': ['above_name', 'below_name'], 'type': 'string'}, {'type': 'null'}]}, 'photoObjectPosition': {'type': 'string', 'description': 'CSS focal point for the photo_hero crop, e.g. "50% 28%".'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'locale': {'type': 'string', 'description': 'Preferred content locale if obvious from the conversation.'}, 'sourceUrl': {'type': 'string', 'description': 'Public HTTP/HTTPS source URL provided by the user, such as a business website or link-in-bio page. Protected platforms (social networks, maps, paywalls) require client-side browsing or pasted details instead.'}, 'primaryGoal': {'type': 'string', 'description': 'The main visitor action if known, such as book, call, WhatsApp, buy, or leave a lead.'}, 'businessName': {'type': 'string', 'description': 'Only include if the user already provided the business or project name.'}, 'businessType': {'type': 'string', 'description': "Business category inferred from the user's words, such as hamburger restaurant or dental clinic."}, 'sourceHandle': {'type': 'string', 'description': 'Public social handle provided by the user.'}, 'originalRequest': {'type': 'string', 'maxLength': 12000, 'description': "The user's original page-creation request, copied verbatim when available."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mode', 'title', 'promptToUser', 'canCreateNow', 'recommendedNextTool', 'missingFields', 'questions', 'sourceGuidance', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'mode': {'enum': ['intake'], 'type': 'string'}, 'title': {'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'prompt'], 'properties': {'id': {'enum': ['provide_source', 'answer_questions', 'use_placeholders', 'create_from_brief'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'recommendedTool': {'type': 'string'}}, 'additionalProperties': False}}, 'questions': {'type': 'array', 'items': {'type': 'string'}}, 'canCreateNow': {'type': 'boolean'}, 'promptToUser': {'type': 'string'}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'sourceGuidance': {'type': 'string'}, 'recommendedNextTool': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'slug': {'type': 'string', 'description': 'Preferred public URL slug.'}, 'title': {'type': 'string', 'description': 'Internal page title shown in editor results.'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'seoTitle': {'type': 'string', 'description': 'SEO <title> tag value.'}, 'editToken': {'type': 'string'}, 'seoDescription': {'type': 'string', 'description': 'SEO meta description value.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {'locale': {'type': 'string', 'description': 'Preferred UI locale, such as es or en.'}, 'originalRequest': {'type': 'string', 'maxLength': 12000}, 'suggestedSelection': {'type': 'object', 'properties': {'source': {'enum': ['user_agent_inference', 'user_selected', 'imported_source'], 'type': 'string'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string'}, 'subCategory': {'type': 'string', 'description': 'Normalized subcategory id valid for the selected mainCategory, for example health.'}, 'mainCategory': {'type': 'string', 'description': 'Normalized id from the AI client, for example physical-business or online-business. The app does not infer this from raw text.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mode', 'stepId', 'canContinue', 'selected', 'invalidSelection', 'missingFields', 'choices', 'layoutChoices', 'paletteChoices', 'primaryActions', 'recommendedLinks', 'recommendedBlocks', 'profileCopy', 'slugGuidance', 'qualityChecklist', 'recommendedMissingFields', 'layoutGuidance', 'imageGuidance', 'readyToCreate', 'uiHtml', 'nextPrompt', 'createFromBriefHints'], 'properties': {'ok': {'type': 'boolean'}, 'mode': {'enum': ['onboarding'], 'type': 'string'}, 'stepId': {'type': 'string'}, 'uiHtml': {'type': 'string'}, 'choices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'selected': {'type': 'object', 'additionalProperties': True}, 'nextPrompt': {'type': 'string'}, 'canContinue': {'type': 'boolean'}, 'profileCopy': {'type': 'object', 'additionalProperties': True}, 'slugGuidance': {'type': 'object', 'additionalProperties': True}, 'imageGuidance': {'type': 'object', 'additionalProperties': True}, 'layoutChoices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'readyToCreate': {'type': 'boolean'}, 'layoutGuidance': {'type': 'object', 'additionalProperties': True}, 'paletteChoices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'primaryActions': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'invalidSelection': {'type': 'array', 'items': {'type': 'string'}}, 'qualityChecklist': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'recommendedLinks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'recommendedBlocks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'createFromBriefHints': {'type': 'object', 'additionalProperties': True}, 'recommendedMissingFields': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'locale': {'type': 'string'}, 'stepId': {'enum': ['category', 'layout', 'profile', 'primary-action', 'ready'], 'type': 'string'}, 'selection': {'type': 'object', 'properties': {'layout': {'enum': ['background_color', 'full', 'background_image'], 'type': 'string'}, 'palette': {'type': 'string', 'description': 'Palette id returned by paletteChoices, for example atom_dark_plum or atom_black.'}, 'desiredPath': {'type': 'string', 'description': "User's desired URL path. The server normalizes to letters, numbers, and hyphens."}, 'subCategory': {'type': 'string'}, 'mainCategory': {'type': 'string'}, 'primaryAction': {'enum': ['appointment', 'whatsapp', 'phone', 'maps', 'buy', 'lead', 'subscribe', 'follow'], 'type': 'string'}, 'recommendedBlock': {'enum': ['image', 'product', 'contact_form', 'text'], 'type': 'string'}}, 'additionalProperties': False}, 'knownFields': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'hasImage': {'type': 'boolean'}, 'description': {'type': 'string'}, 'supportingLinks': {'type': 'boolean', 'description': 'True when the user has provided the initial phone/WhatsApp/location/social/site links they want on the page.'}, 'supportingContent': {'type': 'boolean', 'description': 'True when the user has provided enough extra page content, such as services, products, location, hours, FAQs, reviews, or key notes.'}, 'primaryActionDestination': {'type': 'string', 'description': 'A real destination explicitly supplied by the user or imported public source. Do not invent booking/order URLs.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'mode', 'stepId', 'canContinue', 'selected', 'invalidSelection', 'missingFields', 'choices', 'layoutChoices', 'paletteChoices', 'primaryActions', 'recommendedLinks', 'recommendedBlocks', 'profileCopy', 'slugGuidance', 'qualityChecklist', 'recommendedMissingFields', 'layoutGuidance', 'imageGuidance', 'readyToCreate', 'uiHtml', 'nextPrompt', 'createFromBriefHints'], 'properties': {'ok': {'type': 'boolean'}, 'mode': {'enum': ['onboarding'], 'type': 'string'}, 'stepId': {'type': 'string'}, 'uiHtml': {'type': 'string'}, 'choices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'selected': {'type': 'object', 'additionalProperties': True}, 'nextPrompt': {'type': 'string'}, 'canContinue': {'type': 'boolean'}, 'profileCopy': {'type': 'object', 'additionalProperties': True}, 'slugGuidance': {'type': 'object', 'additionalProperties': True}, 'imageGuidance': {'type': 'object', 'additionalProperties': True}, 'layoutChoices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'readyToCreate': {'type': 'boolean'}, 'layoutGuidance': {'type': 'object', 'additionalProperties': True}, 'paletteChoices': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'primaryActions': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'invalidSelection': {'type': 'array', 'items': {'type': 'string'}}, 'qualityChecklist': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'recommendedLinks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'recommendedBlocks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'createFromBriefHints': {'type': 'object', 'additionalProperties': True}, 'recommendedMissingFields': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid', 'description': 'The pageId returned by page_create.'}, 'editToken': {'type': 'string', 'description': 'Required for anonymous demo pages. Use the editToken returned by page_create.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId', 'theme'], 'properties': {'theme': {'type': 'object', 'properties': {'font': {'type': 'object', 'required': ['family', 'weight'], 'properties': {'family': {'enum': ['inter', 'geist', 'fraunces', 'space-grotesk', 'karla', 'bricolage-grotesque', 'newsreader', 'instrument-serif', 'archivo', 'hanken-grotesk'], 'type': 'string'}, 'weight': {'enum': ['regular', 'medium', 'bold'], 'type': 'string'}, 'heading_family': {'enum': ['inter', 'geist', 'fraunces', 'space-grotesk', 'karla', 'bricolage-grotesque', 'newsreader', 'instrument-serif', 'archivo', 'hanken-grotesk'], 'type': 'string', 'description': 'Optional display font for the page name/headings, paired with family as the body font.'}, 'heading_weight': {'enum': ['regular', 'medium', 'bold'], 'type': 'string', 'description': 'Heading weight. Defaults to bold.'}}, 'description': 'Font style. When supplied, include family and weight.', 'additionalProperties': False}, 'button': {'type': 'object', 'required': ['variant', 'radius', 'shadow'], 'properties': {'radius': {'enum': ['sharp', 'soft', 'pill'], 'type': 'string'}, 'shadow': {'enum': ['none', 'soft', 'hard', 'lift'], 'type': 'string'}, 'variant': {'enum': ['solid', 'outline', 'soft', 'surface'], 'type': 'string'}}, 'description': 'Button style. When supplied, include variant, radius, and shadow.', 'additionalProperties': False}, 'density': {'enum': ['compact', 'comfortable', 'roomy'], 'type': 'string'}, 'icon_size': {'enum': ['sm', 'md', 'lg'], 'type': 'string'}, 'background': {'oneOf': [{'type': 'object', 'title': 'solid', 'required': ['type', 'color'], 'properties': {'type': {'enum': ['solid'], 'type': 'string'}, 'color': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}, 'filter': {'enum': ['none', 'blur', 'dim'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'title': 'gradient', 'required': ['type', 'from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}, 'from': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}, 'type': {'enum': ['gradient'], 'type': 'string'}, 'angle': {'type': 'number', 'maximum': 360, 'minimum': 0}, 'filter': {'enum': ['none', 'blur', 'dim'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'title': 'image', 'required': ['type', 'src'], 'properties': {'src': {'type': 'string', 'description': 'Background image URL.'}, 'type': {'enum': ['image'], 'type': 'string'}, 'filter': {'enum': ['none', 'blur', 'dim'], 'type': 'string'}, 'overlay': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}}, 'additionalProperties': False}], 'description': 'Page background. If supplied, include the background type and its required fields.'}, 'text_color': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}, 'accent_color': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}, 'muted_text_color': {'type': 'string', 'description': 'CSS color: hex, rgb()/rgba(), hsl()/hsla(), or named color.'}}, 'description': 'Partial theme patch. Provide only fields you want to change.', 'additionalProperties': False}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['pageId'], 'properties': {'pageId': {'type': 'string', 'format': 'uuid'}, 'editToken': {'type': 'string'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'pageId', 'slug', 'title', 'status', 'isPublished', 'previewUrl', 'publishedUrl', 'claimUrl', 'editToken', 'expiresAt', 'isClaimed', 'canPublish', 'actions'], 'properties': {'ok': {'type': 'boolean'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'pageId': {'type': 'string', 'format': 'uuid'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'label'], 'properties': {'id': {'enum': ['preview', 'publish', 'keep_editing', 'claim'], 'type': 'string'}, 'url': {'type': 'string'}, 'tool': {'type': 'string'}, 'type': {'enum': ['link', 'tool', 'chat'], 'type': 'string'}, 'label': {'type': 'string'}, 'prompt': {'type': 'string'}, 'arguments': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': False}}, 'content': {'type': 'object', 'additionalProperties': True}, 'claimUrl': {'type': ['string', 'null']}, 'editToken': {'type': ['string', 'null']}, 'expiresAt': {'type': ['string', 'null']}, 'isClaimed': {'type': 'boolean'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priority', 'message'], 'properties': {'id': {'type': 'string'}, 'tool': {'type': 'string'}, 'message': {'type': 'string'}, 'priority': {'enum': ['required', 'recommended', 'optional'], 'type': 'string'}}, 'additionalProperties': False}, 'description': "Enrichment hints to present to the user. Address 'required' items before publishing."}, 'canPublish': {'type': 'boolean'}, 'previewUrl': {'type': 'string'}, 'isPublished': {'type': 'boolean'}, 'publishedUrl': {'type': ['string', 'null']}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'publishPolicy': {'type': ['string', 'null'], 'description': 'For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing.'}, 'liveUpdateMessage': {'type': ['string', 'null'], 'description': 'Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request.'}, 'liveUpdateRequired': {'type': 'boolean', 'description': 'True after an edit to an already-published page when the public live page still needs page_publish to reflect the latest revision.'}}, 'additionalProperties': True}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
输入模式
{'type': 'object', 'required': ['sourceUrl'], 'properties': {'locale': {'type': 'string', 'description': 'Preferred output locale if obvious from the conversation, such as es or en.'}, 'sourceUrl': {'type': 'string', 'format': 'uri', 'description': 'Public http/https source URL to import.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['ok', 'sourceUrl', 'finalUrl', 'fetchMode', 'confidence', 'warnings', 'brief', 'extracted', 'suggested_blocks'], 'properties': {'ok': {'type': 'boolean'}, 'brief': {'type': 'object', 'required': ['businessName', 'sourceUrl'], 'properties': {'offer': {'type': 'string'}, 'locale': {'type': 'string'}, 'audience': {'type': 'string'}, 'location': {'type': 'string'}, 'sourceUrl': {'type': 'string'}, 'mustInclude': {'type': 'array', 'items': {'type': 'string'}}, 'primaryGoal': {'type': 'string'}, 'publicPhone': {'type': 'string'}, 'businessName': {'type': 'string'}, 'publicWhatsapp': {'type': 'string'}, 'publicBusinessEmail': {'type': 'string'}}, 'additionalProperties': False}, 'finalUrl': {'type': 'string'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'extracted': {'type': 'object', 'required': ['structuredTypes', 'links', 'images', 'emails', 'phones', 'whatsapp'], 'properties': {'links': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'url'], 'properties': {'url': {'type': 'string'}, 'text': {'type': 'string'}}, 'additionalProperties': False}}, 'title': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'string'}}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}}, 'additionalProperties': False}}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'siteName': {'type': 'string'}, 'whatsapp': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}, 'structuredTypes': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'fetchMode': {'enum': ['public_http', 'public_http_browser_compatible'], 'type': 'string'}, 'sourceUrl': {'type': 'string'}, 'confidence': {'type': 'number'}, 'suggested_blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'props', 'source'], 'properties': {'id': {'type': 'string'}, 'type': {'enum': ['link', 'social_row', 'whatsapp', 'phone_call', 'email_contact', 'image', 'gallery', 'video_embed', 'text', 'map_embed', 'product_card', 'lead_form', 'reviews', 'save_contact'], 'type': 'string'}, 'props': {'type': 'object', 'additionalProperties': True}, 'source': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
ai-content-drop
Generates AI images, videos, UGC clips, avatars, and finished ads, while organizing creative assets and campaign boards.
Siren
Plans, renders, and posts on-brand visual marketing campaigns.
Picorn
Creates and edits layered social images, videos, slideshows, vector assets, and marketing projects with persistent editable canva…
Postclick by PPC.io: Landing Page CRO
Audits landing pages, analyzes buyers and objections, generates copy and design concepts, builds HTML pages, and exports or share…
MagicScreenshots
Searches App Store screenshot references and preview videos, and supports screenshot restyling and localization jobs.
WebZum - The Hosting Layer for AI-Generated Web Content
Creates, edits, clones, and hosts live HTML/CSS/JS websites, including SEO-focused business and lead-generation pages.
Dali by Lulu
Scores and improves creative prompts and advertising images using generation-target analysis, community patterns, performance ben…
uxgen
Audits and assembles ecommerce pages, generates product imagery and packshots, supports Shopify sections, and provides SEO and co…