このMCPでできること
Creates and manages QR codes, tracked short links, landing pages, forms, and related scan and click analytics.
ツール
入力スキーマ
{'type': 'object', 'required': ['title', 'blocks'], 'properties': {'slug': {'type': 'string', 'description': 'Custom URL slug (else auto-generated).'}, 'text': {'type': 'string', 'description': "For the QR code this mints: Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'For the QR code this mints: Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'title': {'type': 'string', 'description': 'The page title (browser tab + SEO).'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'form': {'type': 'string', 'description': "For a 'form' block: the form id to embed."}, 'type': {'type': 'string', 'description': 'Block type, e.g. header, link, text, video, faq, countdown.'}, 'hidden': {'type': 'boolean', 'description': 'Hide this block from the live page.'}, 'content': {'type': 'object', 'description': "The block's content, matching that type's schema."}}}, 'description': 'Ordered page blocks. Each is {type, content}. See list_block_types.'}, 'domain': {'type': 'string', 'description': 'Custom domain (else a default is used).'}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'For the QR code this mints: Module pattern style.'}, 'publish': {'type': 'boolean', 'description': 'Publish immediately (default true). false leaves it a draft.'}, 'bg_color': {'type': 'string', 'description': 'Hex page background color.'}, 'logo_url': {'type': 'string', 'description': 'For the QR code this mints: URL of a logo image to place in the center.'}, 'eye_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'For the QR code this mints: Corner eye shape.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'has_border': {'type': 'boolean', 'description': 'For the QR code this mints: Draw a border around the code.'}, 'text_color': {'type': 'string', 'description': 'Hex text color.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "For the QR code this mints: How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'description': {'type': 'string', 'description': 'Optional SEO/description text.'}, 'frame_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'primary_color': {'type': 'string', 'description': "For the QR code this mints: Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'For the QR code this mints: Secondary caption line, where the frame supports it.'}, 'background_color': {'type': 'string', 'description': "For the QR code this mints: Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'For the QR code this mints: QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'qr_id': {'type': ['string', 'null']}, 'blocks': {'type': 'integer', 'description': 'Number of blocks on the page.'}, 'published': {'type': 'boolean'}, 'share_url': {'type': ['string', 'null']}, 'workspace': {'type': 'string'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Folder name.'}, 'parent': {'type': 'string', 'description': 'Parent folder id or slug to nest under (optional).'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string', 'description': 'Full path, e.g. Campaigns / Spring 2026.'}, 'slug': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'parent': {'type': ['string', 'null'], 'description': 'Parent folder id, null at the top level.'}, 'created': {'type': 'string'}, 'code_count': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['title', 'fields'], 'properties': {'slug': {'type': 'string', 'description': 'Custom short-link slug (else auto-generated).'}, 'text': {'type': 'string', 'description': "For the QR code this mints: Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'For the QR code this mints: Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'theme': {'enum': ['light', 'dark', 'minimal', 'bold'], 'type': 'string', 'description': 'Named color preset. Explicit colors below override it.'}, 'title': {'type': 'string', 'description': "The form's title."}, 'domain': {'type': 'string', 'description': 'Custom domain to publish on (else a default is used).'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['label'], 'properties': {'nps': {'type': 'boolean', 'description': 'Make this a Net Promoter Score question (0–10, standard labels).'}, 'type': {'enum': ['text', 'email', 'phone', 'number', 'textarea', 'select', 'radio', 'checkbox', 'date', 'time', 'url', 'rating', 'scale', 'yes_no', 'image_choice', 'ranking', 'statement', 'hidden', 'page_break', 'image'], 'type': 'string', 'description': "Field type. Default 'text'. Use select/radio/checkbox/ranking with `options`; image_choice with options carrying an `image` URL; scale with min_value/max_value and min_label/max_label (or nps: true)."}, 'label': {'type': 'string', 'description': "The field's question/label."}, 'options': {'type': 'array', 'items': {'type': ['string', 'object']}, 'description': 'Choices for select/radio/checkbox/ranking (strings or {value,label}); for image_choice pass {label, image} objects.'}, 'required': {'type': 'boolean', 'description': 'Whether an answer is required.'}, 'max_label': {'type': 'string', 'description': 'scale only: label under the top value'}, 'min_label': {'type': 'string', 'description': 'scale only: label under the lowest value'}, 'show_when': {'type': 'object', 'required': ['rules'], 'properties': {'match': {'enum': ['all', 'any'], 'type': 'string', 'description': "Default 'all'."}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'op'], 'properties': {'op': {'enum': ['eq', 'neq', 'contains', 'not_contains', 'gt', 'lt', 'is_empty', 'not_empty'], 'type': 'string', 'description': 'eq / neq (is, is not), contains / not_contains (text or checkbox), gt / lt (numbers, ratings, dates), is_empty / not_empty (no value needed).'}, 'field': {'type': 'string', 'description': 'The question this condition looks at: its label, its id, or its 0-based position.'}, 'value': {'type': 'string', 'description': "Value to compare with (an option's value for choice questions)."}}}}, 'action': {'enum': ['show', 'require'], 'type': 'string', 'description': "'show' (default): shown only while the rules match. 'require': always shown, required only while they match. On a page_break field the rules skip the whole page."}}, 'description': 'Conditional logic: show this field only while its conditions match EARLIER answers (e.g. a follow-up question, or a statement recommending a product). Omit to always show.'}, 'placeholder': {'type': 'string', 'description': 'Optional placeholder text.'}}}, 'description': 'The fields to collect, in order.'}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'For the QR code this mints: Module pattern style.'}, 'bg_color': {'type': 'string', 'description': 'Hex background color.'}, 'logo_url': {'type': 'string', 'description': 'URL of a logo image (JPEG/PNG/GIF/WebP) to show on the form.'}, 'outcomes': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'rules'], 'properties': {'name': {'type': 'string', 'description': "Short name, recorded on each response (e.g. 'Recommend Zero Sugar')."}, 'match': {'enum': ['all', 'any'], 'type': 'string', 'description': "Default 'all'."}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'op'], 'properties': {'op': {'enum': ['eq', 'neq', 'contains', 'not_contains', 'gt', 'lt', 'is_empty', 'not_empty'], 'type': 'string', 'description': 'eq / neq (is, is not), contains / not_contains (text or checkbox), gt / lt (numbers, ratings, dates), is_empty / not_empty (no value needed).'}, 'field': {'type': 'string', 'description': 'The question this condition looks at: its label, its id, or its 0-based position.'}, 'value': {'type': 'string', 'description': "Value to compare with (an option's value for choice questions)."}}}}, 'end_early': {'type': 'boolean', 'description': 'Screening: end the form as soon as this matches (checked on every page change), not just at submit.'}, 'redirect_url': {'type': 'string', 'description': 'Optional page to send the respondent to.'}, 'thank_you_title': {'type': 'string'}, 'thank_you_message': {'type': 'string'}}}, 'description': 'Pathways / branching endings. After submit the first outcome whose rules match decides the ending: its own thank-you title/message and/or a redirect_url (e.g. send people to a different product page per answer). If none match, the default thank-you page is shown.'}, 'eye_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'For the QR code this mints: Corner eye shape.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'has_border': {'type': 'boolean', 'description': 'For the QR code this mints: Draw a border around the code.'}, 'text_color': {'type': 'string', 'description': 'Hex text color.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "For the QR code this mints: How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'description': {'type': 'string', 'description': 'Optional description shown above the fields.'}, 'frame_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'button_color': {'type': 'string', 'description': 'Hex submit-button color.'}, 'redirect_url': {'type': 'string', 'description': 'URL to send respondents to after they submit.'}, 'primary_color': {'type': 'string', 'description': "For the QR code this mints: Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'For the QR code this mints: Secondary caption line, where the frame supports it.'}, 'background_color': {'type': 'string', 'description': "For the QR code this mints: Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'For the QR code this mints: QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}, 'button_text_color': {'type': 'string', 'description': 'Hex button-text color.'}, 'thank_you_message': {'type': 'string', 'description': 'Shown after submitting (if no redirect).'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'logo': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'qr_id': {'type': ['string', 'null'], 'description': "Id of the form's own QR code (published forms). Use with download_qr."}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'logic': {'type': ['object', 'null']}, 'order': {'type': 'integer'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': True}}, 'pattern': {'type': ['string', 'null']}, 'required': {'type': 'boolean'}, 'settings': {'type': 'object'}, 'help_text': {'type': ['string', 'null']}, 'max_value': {'type': ['number', 'null']}, 'min_value': {'type': ['number', 'null']}, 'field_type': {'type': 'string'}, 'max_length': {'type': ['integer', 'null']}, 'min_length': {'type': ['integer', 'null']}, 'placeholder': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'status': {'type': 'string', 'description': 'Draft, Published, or Closed.'}, 'created': {'type': 'string'}, 'bg_color': {'type': ['string', 'null']}, 'modified': {'type': 'string'}, 'outcomes': {'type': 'array'}, 'share_url': {'type': ['string', 'null'], 'description': 'Public URL respondents open (null until published).'}, 'text_color': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'qr_code_svg': {'type': ['string', 'null'], 'description': 'QR code for the share URL, as SVG markup.'}, 'button_color': {'type': ['string', 'null']}, 'redirect_url': {'type': ['string', 'null']}, 'workspace_id': {'type': 'string'}, 'dashboard_url': {'type': 'string', 'description': 'Where the owner manages the form on hovercode.com.'}, 'shortlink_url': {'type': ['string', 'null']}, 'show_progress': {'type': 'boolean'}, 'redirect_delay': {'type': ['integer', 'null']}, 'response_count': {'type': 'integer'}, 'shortlink_slug': {'type': ['string', 'null']}, 'show_powered_by': {'type': 'boolean'}, 'thank_you_title': {'type': ['string', 'null']}, 'shortlink_domain': {'type': ['string', 'null']}, 'button_text_color': {'type': ['string', 'null']}, 'thank_you_message': {'type': ['string', 'null']}, 'has_unpublished_changes': {'type': 'boolean'}, 'notification_recipients': {'type': 'array'}, 'allow_multiple_submissions': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['title'], 'properties': {'slug': {'type': 'string', 'description': 'Custom URL slug (else auto-generated).'}, 'text': {'type': 'string', 'description': "For the QR code this mints: Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'For the QR code this mints: Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'links': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Destination URL.'}, 'type': {'type': 'string', 'description': 'Optional link type, e.g. Website, Instagram, YouTube.'}, 'title': {'type': 'string', 'description': 'Button label (defaults to the URL).'}}}, 'description': 'The link buttons on the page, in order.'}, 'title': {'type': 'string', 'description': "The page's heading."}, 'domain': {'type': 'string', 'description': 'Custom page domain (else a default is used).'}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'For the QR code this mints: Module pattern style.'}, 'bg_color': {'type': 'string', 'description': 'Hex background color.'}, 'logo_url': {'type': 'string', 'description': 'For the QR code this mints: URL of a logo image to place in the center.'}, 'eye_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'For the QR code this mints: Corner eye shape.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'has_border': {'type': 'boolean', 'description': 'For the QR code this mints: Draw a border around the code.'}, 'text_color': {'type': 'string', 'description': 'Hex text color.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "For the QR code this mints: How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'description': {'type': 'string', 'description': 'Optional text shown under the title.'}, 'frame_color': {'type': 'string', 'description': 'For the QR code this mints: Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'primary_color': {'type': 'string', 'description': "For the QR code this mints: Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'For the QR code this mints: Secondary caption line, where the frame supports it.'}, 'background_color': {'type': 'string', 'description': "For the QR code this mints: Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'For the QR code this mints: QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'svg': {'type': ['string', 'null']}, 'slug': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'links': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'qr_id': {'type': ['string', 'null'], 'description': "The page's QR code id (use with download_qr / update_qr_code)."}, 'title': {'type': 'string'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'form': {'type': ['string', 'null'], 'description': 'Linked form id for form/signup blocks.'}, 'type': {'type': 'string'}, 'hidden': {'type': 'boolean'}, 'content': {'type': 'object'}}, 'additionalProperties': True}, 'description': 'Block list; present for layout_version 2 pages.'}, 'status': {'type': 'string'}, 'created': {'type': 'string'}, 'share_url': {'type': ['string', 'null'], 'description': 'Live URL of the page.'}, 'description': {'type': ['string', 'null']}, 'layout_version': {'type': 'integer', 'description': '1 = legacy links list, 2 = block builder.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to attach (created if new) so you can find these later — list_qr_codes and list_short_links search by tag.'}, 'domain': {'type': 'string', 'description': 'Custom short-link domain (list_workspaces shows the plan).'}, 'pdf_url': {'type': 'string', 'description': 'URL of a PDF to fetch and host. Use this or pdf_base64.'}, 'filename': {'type': 'string', 'description': "Name for the stored file, e.g. 'menu.pdf'."}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'pdf_base64': {'type': 'string', 'description': 'Base64-encoded PDF bytes (data-URI prefix allowed), max 20 MB. Or use pdf_url.'}, 'display_name': {'type': 'string', 'description': 'Internal name to find this code later.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'png': {'type': ['string', 'null'], 'description': 'PNG URL once rendered; null until then (use download_qr).'}, 'svg': {'type': ['string', 'null'], 'description': 'Rendered QR as SVG markup.'}, 'logo': {'type': ['string', 'null']}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'text': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'frame': {'type': ['string', 'null']}, 'vcard': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'street': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'position': {'type': ['string', 'null']}, 'last_name': {'type': ['string', 'null']}, 'post_code': {'type': ['string', 'null']}, 'first_name': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'company_name': {'type': ['string', 'null']}, 'phone_number': {'type': ['string', 'null']}, 'mobile_number': {'type': ['string', 'null']}}, 'description': 'Contact details encoded in a vCard code.', 'additionalProperties': True}, {'type': 'null'}]}, 'folder': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string'}, 'slug': {'type': 'string'}}, 'description': 'The folder a code sits in (null when unfiled).', 'additionalProperties': True}, {'type': 'null'}]}, 'created': {'type': 'string'}, 'dynamic': {'type': 'boolean'}, 'pattern': {'type': ['string', 'null']}, 'qr_data': {'type': 'string', 'description': 'Encoded data: the destination URL for URL codes.'}, 'qr_type': {'type': 'string', 'description': 'Link, Text, vCard, or PDF.'}, 'svg_file': {'type': ['string', 'null']}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'frame_color': {'type': ['string', 'null']}, 'total_scans': {'type': ['integer', 'null']}, 'display_name': {'type': ['string', 'null']}, 'gps_tracking': {'type': 'boolean'}, 'pdf_file_url': {'type': ['string', 'null']}, 'unique_scans': {'type': ['integer', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'shortlink_url': {'type': ['string', 'null'], 'description': 'Tracked short URL a dynamic code points at; null for static codes.'}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}, 'error_correction': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['qr_data'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to attach (created if new) so you can find these later — list_qr_codes and list_short_links search by tag.'}, 'text': {'type': 'string', 'description': "Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'vcard': {'type': 'object', 'required': ['first_name'], 'properties': {'city': {'type': 'string'}, 'email': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}, 'website': {'type': 'string'}, 'position': {'type': 'string'}, 'last_name': {'type': 'string'}, 'post_code': {'type': 'string'}, 'first_name': {'type': 'string'}, 'description': {'type': 'string'}, 'company_name': {'type': 'string'}, 'phone_number': {'type': 'string'}, 'mobile_number': {'type': 'string'}}, 'description': "Contact details for qr_type 'vCard' (use instead of qr_data). Scanning saves the contact to the phone. `dynamic: true` makes the card editable later."}, 'folder': {'type': 'string', 'description': "Folder id or slug to file the new code into (list_qr_codes shows each code's folder)."}, 'dynamic': {'type': 'boolean', 'description': "Editable destination + scan tracking; can't be switched after creation. Free up to a per-plan limit, not paid-only. Default false (static: fixed forever, no tracking). Ask the user if their wording doesn't make the choice clear."}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'Module pattern style.'}, 'qr_data': {'type': 'string', 'description': "What the code encodes: a URL for qr_type 'Link', or the text for qr_type 'Text'. For 'vCard' send `vcard` instead."}, 'qr_type': {'enum': ['Link', 'Text', 'vCard'], 'type': 'string', 'description': "QR content type. Default 'Link'. 'vCard' encodes a contact card from `vcard`."}, 'logo_url': {'type': 'string', 'description': 'URL of a logo image to place in the center.'}, 'template': {'type': 'string', 'description': 'Workspace template id to apply as design defaults (list_templates).'}, 'eye_color': {'type': 'string', 'description': 'Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'Corner eye shape.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'has_border': {'type': 'boolean', 'description': 'Draw a border around the code.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'frame_color': {'type': 'string', 'description': 'Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'display_name': {'type': 'string', 'description': 'Internal name to find this code later.'}, 'gps_tracking': {'type': 'boolean', 'description': 'Prompt scanners to share location (dynamic codes).'}, 'primary_color': {'type': 'string', 'description': "Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'Secondary caption line, where the frame supports it.'}, 'background_color': {'type': 'string', 'description': "Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'png': {'type': ['string', 'null'], 'description': 'PNG URL once rendered; null until then (use download_qr).'}, 'svg': {'type': ['string', 'null'], 'description': 'Rendered QR as SVG markup.'}, 'logo': {'type': ['string', 'null']}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'text': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'frame': {'type': ['string', 'null']}, 'vcard': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'street': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'position': {'type': ['string', 'null']}, 'last_name': {'type': ['string', 'null']}, 'post_code': {'type': ['string', 'null']}, 'first_name': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'company_name': {'type': ['string', 'null']}, 'phone_number': {'type': ['string', 'null']}, 'mobile_number': {'type': ['string', 'null']}}, 'description': 'Contact details encoded in a vCard code.', 'additionalProperties': True}, {'type': 'null'}]}, 'folder': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string'}, 'slug': {'type': 'string'}}, 'description': 'The folder a code sits in (null when unfiled).', 'additionalProperties': True}, {'type': 'null'}]}, 'created': {'type': 'string'}, 'dynamic': {'type': 'boolean'}, 'pattern': {'type': ['string', 'null']}, 'qr_data': {'type': 'string', 'description': 'Encoded data: the destination URL for URL codes.'}, 'qr_type': {'type': 'string', 'description': 'Link, Text, vCard, or PDF.'}, 'svg_file': {'type': ['string', 'null']}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'frame_color': {'type': ['string', 'null']}, 'total_scans': {'type': ['integer', 'null']}, 'display_name': {'type': ['string', 'null']}, 'gps_tracking': {'type': 'boolean'}, 'pdf_file_url': {'type': ['string', 'null']}, 'unique_scans': {'type': ['integer', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'shortlink_url': {'type': ['string', 'null'], 'description': 'Tracked short URL a dynamic code points at; null for static codes.'}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}, 'error_correction': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['items'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to attach (created if new) so you can find these later — list_qr_codes and list_short_links search by tag.'}, 'text': {'type': 'string', 'description': "Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'items': {'type': 'array', 'items': {'type': ['string', 'object']}, 'description': 'URLs to encode. Each item is a URL string, or an object {url, display_name}.'}, 'dynamic': {'type': 'boolean', 'description': "Make all of them editable + tracked; can't be switched after creation. Free up to a per-plan limit, not paid-only — a large batch can exceed it partway through, which shows up as per-item errors, not a whole-batch failure."}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'Module pattern style.'}, 'logo_url': {'type': 'string', 'description': 'URL of a logo image to place in the center.'}, 'template': {'type': 'string', 'description': 'Workspace template id to apply to all.'}, 'eye_color': {'type': 'string', 'description': 'Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'Corner eye shape.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'has_border': {'type': 'boolean', 'description': 'Draw a border around the code.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'frame_color': {'type': 'string', 'description': 'Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'primary_color': {'type': 'string', 'description': "Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'Secondary caption line, where the frame supports it.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client key to make retries safe: if a previous call used the same key (same workspace), the earlier result is replayed instead of creating duplicate codes. Use a fresh key per distinct batch.'}, 'background_color': {'type': 'string', 'description': "Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}}}
出力スキーマ
{'type': 'object', 'properties': {'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'errors': {'type': 'array', 'items': {'type': 'object', 'properties': {'error': {'type': 'string'}, 'index': {'type': 'integer'}}, 'additionalProperties': True}}, 'created': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'qr_data': {'type': 'string'}, 'short_url': {'type': ['string', 'null']}, 'display_name': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'failed_count': {'type': 'integer'}, 'created_count': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['link'], 'properties': {'gps': {'type': 'boolean', 'description': 'Prompt visitors to share their location.'}, 'link': {'type': 'string', 'description': 'The destination URL to shorten.'}, 'slug': {'type': 'string', 'description': 'Custom slug (letters/numbers/hyphens) or auto-generated.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to attach (created if new) so you can find these later — list_qr_codes and list_short_links search by tag.'}, 'domain': {'type': 'string', 'description': 'Custom short-link domain; else a default is used.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'display_name': {'type': 'string', 'description': 'Internal name to find this link later.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'gps': {'type': 'boolean'}, 'png': {'type': ['string', 'null']}, 'svg': {'type': ['string', 'null'], 'description': 'QR code for the short URL, as SVG markup.'}, 'link': {'type': 'string', 'description': 'Destination URL.'}, 'slug': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'domain': {'type': 'string'}, 'created': {'type': 'string'}, 'link_type': {'type': 'string'}, 'short_url': {'type': 'string'}, 'display_name': {'type': ['string', 'null']}, 'total_clicks': {'type': 'integer'}, 'unique_clicks': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Folder id (from list_folders).'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Page id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'QR code id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Short link id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'QR code id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'png_url': {'type': ['string', 'null'], 'description': 'Print-ready PNG; null if rendering failed.'}, 'svg_url': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'QR code id for per-code analytics; omit for workspace-wide.'}, 'end': {'type': 'string', 'description': 'Range end, ISO date/datetime. Defaults to now when only `start` is given.'}, 'days': {'type': 'integer', 'description': 'Look-back window in days (default 30, max 365).'}, 'start': {'type': 'string', 'description': 'Range start, ISO date or datetime (e.g. 2026-08-03 or 2026-08-03T14:00:00Z). Use start/end together for a fixed window instead of the rolling `days` look-back.'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'end': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'start': {'type': 'string'}, 'top_os': {'type': 'array', 'items': {'type': 'object', 'properties': {'scans': {'type': 'integer'}, 'value': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'top_codes': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': ['string', 'null']}, 'scans': {'type': 'integer'}, 'value': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'workspace': {'type': 'string', 'description': 'Set when the report is workspace-wide.'}, 'qr_code_id': {'type': 'string', 'description': 'Set when the report is for a single code.'}, 'top_cities': {'type': 'array', 'items': {'type': 'object', 'properties': {'scans': {'type': 'integer'}, 'value': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'period_days': {'type': 'integer'}, 'total_scans': {'type': 'integer'}, 'scans_by_day': {'type': 'array', 'items': {'type': 'object', 'properties': {'date': {'type': 'string'}, 'scans': {'type': 'integer'}}, 'additionalProperties': True}}, 'top_browsers': {'type': 'array', 'items': {'type': 'object', 'properties': {'scans': {'type': 'integer'}, 'value': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'unique_scans': {'type': 'integer'}, 'top_countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'scans': {'type': 'integer'}, 'value': {'type': ['string', 'null']}}, 'additionalProperties': True}}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Form id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'logo': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'qr_id': {'type': ['string', 'null'], 'description': "Id of the form's own QR code (published forms). Use with download_qr."}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'logic': {'type': ['object', 'null']}, 'order': {'type': 'integer'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': True}}, 'pattern': {'type': ['string', 'null']}, 'required': {'type': 'boolean'}, 'settings': {'type': 'object'}, 'help_text': {'type': ['string', 'null']}, 'max_value': {'type': ['number', 'null']}, 'min_value': {'type': ['number', 'null']}, 'field_type': {'type': 'string'}, 'max_length': {'type': ['integer', 'null']}, 'min_length': {'type': ['integer', 'null']}, 'placeholder': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'status': {'type': 'string', 'description': 'Draft, Published, or Closed.'}, 'created': {'type': 'string'}, 'bg_color': {'type': ['string', 'null']}, 'modified': {'type': 'string'}, 'outcomes': {'type': 'array'}, 'share_url': {'type': ['string', 'null'], 'description': 'Public URL respondents open (null until published).'}, 'text_color': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'qr_code_svg': {'type': ['string', 'null'], 'description': 'QR code for the share URL, as SVG markup.'}, 'button_color': {'type': ['string', 'null']}, 'redirect_url': {'type': ['string', 'null']}, 'workspace_id': {'type': 'string'}, 'dashboard_url': {'type': 'string', 'description': 'Where the owner manages the form on hovercode.com.'}, 'shortlink_url': {'type': ['string', 'null']}, 'show_progress': {'type': 'boolean'}, 'redirect_delay': {'type': ['integer', 'null']}, 'response_count': {'type': 'integer'}, 'shortlink_slug': {'type': ['string', 'null']}, 'show_powered_by': {'type': 'boolean'}, 'thank_you_title': {'type': ['string', 'null']}, 'shortlink_domain': {'type': ['string', 'null']}, 'button_text_color': {'type': ['string', 'null']}, 'thank_you_message': {'type': ['string', 'null']}, 'has_unpublished_changes': {'type': 'boolean'}, 'notification_recipients': {'type': 'array'}, 'allow_multiple_submissions': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Form id.'}, 'page': {'type': 'integer', 'description': '1-based page number.'}, 'page_size': {'type': 'integer', 'description': 'Responses per page (max 100, default 25).'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Set when there are no responses yet.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'outcome': {}, 'is_complete': {'type': 'boolean'}, 'submitted_at': {'type': ['string', 'null']}, 'field_responses': {'type': 'array', 'description': 'One entry per answered field.'}, 'completion_time_seconds': {'type': ['number', 'null']}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Page id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'svg': {'type': ['string', 'null']}, 'slug': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'links': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'qr_id': {'type': ['string', 'null'], 'description': "The page's QR code id (use with download_qr / update_qr_code)."}, 'title': {'type': 'string'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'form': {'type': ['string', 'null'], 'description': 'Linked form id for form/signup blocks.'}, 'type': {'type': 'string'}, 'hidden': {'type': 'boolean'}, 'content': {'type': 'object'}}, 'additionalProperties': True}, 'description': 'Block list; present for layout_version 2 pages.'}, 'status': {'type': 'string'}, 'created': {'type': 'string'}, 'share_url': {'type': ['string', 'null'], 'description': 'Live URL of the page.'}, 'description': {'type': ['string', 'null']}, 'layout_version': {'type': 'integer', 'description': '1 = legacy links list, 2 = block builder.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'QR code id.'}, 'end': {'type': 'string', 'description': 'Range end, ISO date/datetime. Defaults to now when only `start` is given.'}, 'page': {'type': 'integer', 'description': '1-based page number.'}, 'start': {'type': 'string', 'description': 'Range start, ISO date or datetime (e.g. 2026-08-03 or 2026-08-03T14:00:00Z). Use start/end together for a fixed window instead of the rolling `days` look-back.'}, 'page_size': {'type': 'integer', 'description': 'Events per page (max 200, default 25).'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'device': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'time_utc': {'type': ['string', 'null']}, 'qr_code_id': {'type': ['string', 'null']}, 'scanner_id': {'type': ['string', 'null']}, 'time_timezone_aware': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'QR code id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'png': {'type': ['string', 'null'], 'description': 'PNG URL once rendered; null until then (use download_qr).'}, 'svg': {'type': ['string', 'null'], 'description': 'Rendered QR as SVG markup.'}, 'logo': {'type': ['string', 'null']}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'text': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'frame': {'type': ['string', 'null']}, 'vcard': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'street': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'position': {'type': ['string', 'null']}, 'last_name': {'type': ['string', 'null']}, 'post_code': {'type': ['string', 'null']}, 'first_name': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'company_name': {'type': ['string', 'null']}, 'phone_number': {'type': ['string', 'null']}, 'mobile_number': {'type': ['string', 'null']}}, 'description': 'Contact details encoded in a vCard code.', 'additionalProperties': True}, {'type': 'null'}]}, 'folder': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string'}, 'slug': {'type': 'string'}}, 'description': 'The folder a code sits in (null when unfiled).', 'additionalProperties': True}, {'type': 'null'}]}, 'created': {'type': 'string'}, 'dynamic': {'type': 'boolean'}, 'pattern': {'type': ['string', 'null']}, 'qr_data': {'type': 'string', 'description': 'Encoded data: the destination URL for URL codes.'}, 'qr_type': {'type': 'string', 'description': 'Link, Text, vCard, or PDF.'}, 'svg_file': {'type': ['string', 'null']}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'frame_color': {'type': ['string', 'null']}, 'total_scans': {'type': ['integer', 'null']}, 'display_name': {'type': ['string', 'null']}, 'gps_tracking': {'type': 'boolean'}, 'pdf_file_url': {'type': ['string', 'null']}, 'unique_scans': {'type': ['integer', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'shortlink_url': {'type': ['string', 'null'], 'description': 'Tracked short URL a dynamic code points at; null for static codes.'}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}, 'error_correction': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Short link id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'gps': {'type': 'boolean'}, 'png': {'type': ['string', 'null']}, 'svg': {'type': ['string', 'null'], 'description': 'QR code for the short URL, as SVG markup.'}, 'link': {'type': 'string', 'description': 'Destination URL.'}, 'slug': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'domain': {'type': 'string'}, 'created': {'type': 'string'}, 'link_type': {'type': 'string'}, 'short_url': {'type': 'string'}, 'display_name': {'type': ['string', 'null']}, 'total_clicks': {'type': 'integer'}, 'unique_clicks': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Short link id.'}, 'end': {'type': 'string', 'description': 'Range end, ISO date/datetime. Defaults to now when only `start` is given.'}, 'page': {'type': 'integer', 'description': '1-based page number.'}, 'start': {'type': 'string', 'description': 'Range start, ISO date or datetime (e.g. 2026-08-03 or 2026-08-03T14:00:00Z). Use start/end together for a fixed window instead of the rolling `days` look-back.'}, 'page_size': {'type': 'integer', 'description': 'Events per page (max 200, default 25).'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'device': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'time_utc': {'type': ['string', 'null']}, 'qr_code_id': {'type': ['string', 'null']}, 'scanner_id': {'type': ['string', 'null']}, 'time_timezone_aware': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'block_types': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string'}, 'label': {'type': 'string'}, 'schema': {'type': 'object', 'description': "JSON Schema for the block's `content`."}}, 'additionalProperties': True}}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string', 'description': 'Full path, e.g. Campaigns / Spring 2026.'}, 'slug': {'type': 'string'}, 'parent': {'type': ['string', 'null'], 'description': 'Parent folder id, null at the top level.'}, 'created': {'type': 'string'}, 'code_count': {'type': 'integer'}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'page': {'type': 'integer', 'description': '1-based page number.'}, 'query': {'type': 'string', 'description': 'Search term (matches the form title).'}, 'page_size': {'type': 'integer', 'description': 'Results per page (max 100, default 25).'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'type': 'string'}, 'created': {'type': 'string'}, 'modified': {'type': 'string'}, 'share_url': {'type': ['string', 'null']}, 'workspace': {'type': 'string'}, 'response_count': {'type': 'integer'}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'svg': {'type': ['string', 'null']}, 'slug': {'type': ['string', 'null']}, 'links': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'qr_id': {'type': ['string', 'null'], 'description': "The page's QR code id (use with download_qr / update_qr_code)."}, 'title': {'type': 'string'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'form': {'type': ['string', 'null'], 'description': 'Linked form id for form/signup blocks.'}, 'type': {'type': 'string'}, 'hidden': {'type': 'boolean'}, 'content': {'type': 'object'}}, 'additionalProperties': True}, 'description': 'Block list; present for layout_version 2 pages.'}, 'status': {'type': 'string'}, 'created': {'type': 'string'}, 'share_url': {'type': ['string', 'null'], 'description': 'Live URL of the page.'}, 'description': {'type': ['string', 'null']}, 'layout_version': {'type': 'integer', 'description': '1 = legacy links list, 2 = block builder.'}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'page': {'type': 'integer', 'description': '1-based page number.'}, 'query': {'type': 'string', 'description': 'Search term (destination, display name, or tag).'}, 'folder': {'type': 'string', 'description': "Folder id or slug to filter by, or 'none' for codes in no folder."}, 'page_size': {'type': 'integer', 'description': 'Results per page (max 200, default 25).'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}, 'subfolders': {'type': 'boolean', 'description': 'With `folder`, also include codes in its subfolders.'}, 'include_tags': {'type': 'boolean', 'description': "Add each code's tags. (Each code's folder is always included.)"}, 'include_scans': {'type': 'boolean', 'description': 'Add total_scans and unique_scans (lifetime) to each code.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'png': {'type': ['string', 'null'], 'description': 'PNG URL once rendered; null until then (use download_qr).'}, 'svg': {'type': ['string', 'null'], 'description': 'Rendered QR as SVG markup.'}, 'logo': {'type': ['string', 'null']}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'text': {'type': ['string', 'null']}, 'frame': {'type': ['string', 'null']}, 'vcard': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'street': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'position': {'type': ['string', 'null']}, 'last_name': {'type': ['string', 'null']}, 'post_code': {'type': ['string', 'null']}, 'first_name': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'company_name': {'type': ['string', 'null']}, 'phone_number': {'type': ['string', 'null']}, 'mobile_number': {'type': ['string', 'null']}}, 'description': 'Contact details encoded in a vCard code.', 'additionalProperties': True}, {'type': 'null'}]}, 'folder': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string'}, 'slug': {'type': 'string'}}, 'description': 'The folder a code sits in (null when unfiled).', 'additionalProperties': True}, {'type': 'null'}]}, 'created': {'type': 'string'}, 'dynamic': {'type': 'boolean'}, 'pattern': {'type': ['string', 'null']}, 'qr_data': {'type': 'string', 'description': 'Encoded data: the destination URL for URL codes.'}, 'qr_type': {'type': 'string', 'description': 'Link, Text, vCard, or PDF.'}, 'svg_file': {'type': ['string', 'null']}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'frame_color': {'type': ['string', 'null']}, 'total_scans': {'type': ['integer', 'null']}, 'display_name': {'type': ['string', 'null']}, 'gps_tracking': {'type': 'boolean'}, 'pdf_file_url': {'type': ['string', 'null']}, 'unique_scans': {'type': ['integer', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'shortlink_url': {'type': ['string', 'null'], 'description': 'Tracked short URL a dynamic code points at; null for static codes.'}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}, 'error_correction': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'page': {'type': 'integer', 'description': '1-based page number.'}, 'query': {'type': 'string', 'description': 'Search term (destination, name, or slug).'}, 'page_size': {'type': 'integer', 'description': 'Results per page (max 200, default 25).'}, 'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'gps': {'type': 'boolean'}, 'png': {'type': ['string', 'null']}, 'svg': {'type': ['string', 'null'], 'description': 'QR code for the short URL, as SVG markup.'}, 'link': {'type': 'string', 'description': 'Destination URL.'}, 'slug': {'type': 'string'}, 'domain': {'type': 'string'}, 'created': {'type': 'string'}, 'link_type': {'type': 'string'}, 'short_url': {'type': 'string'}, 'display_name': {'type': ['string', 'null']}, 'total_clicks': {'type': 'integer'}, 'unique_clicks': {'type': 'integer'}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {'workspace': {'type': 'string', 'description': 'Workspace id. Optional when the account has one workspace; use list_workspaces to resolve otherwise.'}}}
出力スキーマ
{'type': 'object', 'properties': {'next': {'type': ['string', 'null'], 'description': 'URL of the next page, or null on the last page.'}, 'count': {'type': 'integer', 'description': 'Total matching rows across all pages.'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'logo': {'type': ['string', 'null'], 'description': "The template's logo image, if has_logo — pass as logo_url to update_qr_code/create_qr_code to carry it over."}, 'text': {'type': ['string', 'null']}, 'frame': {'type': ['string', 'null']}, 'title': {'type': ['string', 'null']}, 'created': {'type': 'string'}, 'pattern': {'type': ['string', 'null']}, 'preview': {'type': ['string', 'null']}, 'has_logo': {'type': 'boolean'}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'is_default': {'type': 'boolean', 'description': "True for one of the platform's built-in designs; false for a template this workspace saved itself."}, 'frame_color': {'type': ['string', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'previous': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'workspaces': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'paid': {'type': 'boolean'}, 'plan': {'type': 'string'}, 'current': {'type': 'boolean'}, 'pages_used': {'type': 'integer'}, 'dynamic_qr_used': {'type': 'integer'}, 'dynamic_qr_limit': {'type': 'integer'}, 'has_active_subscription': {'type': 'boolean'}}, 'additionalProperties': True}}, 'current_workspace': {'type': 'string', 'description': 'Id of the workspace tools default to.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['workspace'], 'properties': {'workspace': {'type': 'string', 'description': 'Workspace id or name to switch to.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'current': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Folder id (from list_folders).'}, 'name': {'type': 'string', 'description': 'New folder name.'}, 'parent': {'type': 'string', 'description': "New parent folder id or slug, or 'none' for top level."}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string', 'description': 'Full path, e.g. Campaigns / Spring 2026.'}, 'slug': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'parent': {'type': ['string', 'null'], 'description': 'Parent folder id, null at the top level.'}, 'created': {'type': 'string'}, 'code_count': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Form id.'}, 'theme': {'enum': ['light', 'dark', 'minimal', 'bold'], 'type': 'string', 'description': 'Named color preset. Explicit colors below override it.'}, 'title': {'type': 'string', 'description': 'New title.'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['label'], 'properties': {'id': {'type': 'string', 'description': 'Existing field id to keep/update; omit if new.'}, 'nps': {'type': 'boolean', 'description': 'Net Promoter Score preset (0–10, standard labels).'}, 'type': {'enum': ['text', 'email', 'phone', 'number', 'textarea', 'select', 'radio', 'checkbox', 'date', 'time', 'url', 'rating', 'scale', 'yes_no', 'image_choice', 'ranking', 'statement', 'hidden', 'page_break', 'image'], 'type': 'string', 'description': 'Field type.'}, 'label': {'type': 'string', 'description': "The field's question/label."}, 'options': {'type': 'array', 'items': {'type': ['string', 'object']}, 'description': 'Choices for select/radio/checkbox/ranking; {label, image} objects for image_choice.'}, 'required': {'type': 'boolean', 'description': 'Whether an answer is required.'}, 'max_label': {'type': 'string', 'description': 'scale only: label under the top value'}, 'min_label': {'type': 'string', 'description': 'scale only: label under the lowest value'}, 'show_when': {'type': 'object', 'required': ['rules'], 'properties': {'match': {'enum': ['all', 'any'], 'type': 'string', 'description': "Default 'all'."}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'op'], 'properties': {'op': {'enum': ['eq', 'neq', 'contains', 'not_contains', 'gt', 'lt', 'is_empty', 'not_empty'], 'type': 'string', 'description': 'eq / neq (is, is not), contains / not_contains (text or checkbox), gt / lt (numbers, ratings, dates), is_empty / not_empty (no value needed).'}, 'field': {'type': 'string', 'description': 'The question this condition looks at: its label, its id, or its 0-based position.'}, 'value': {'type': 'string', 'description': "Value to compare with (an option's value for choice questions)."}}}}, 'action': {'enum': ['show', 'require'], 'type': 'string', 'description': "'show' (default): shown only while the rules match. 'require': always shown, required only while they match. On a page_break field the rules skip the whole page."}}, 'description': 'Conditional logic: show this field only while its conditions match EARLIER answers (e.g. a follow-up question, or a statement recommending a product). Omit to always show.'}}}, 'description': 'Complete desired field list (see note); create_form shape plus an optional `id`.'}, 'status': {'enum': ['close', 'reopen'], 'type': 'string', 'description': 'Close (stop responses) or reopen. When set, other edits are ignored.'}, 'bg_color': {'type': 'string', 'description': 'Hex background color.'}, 'logo_url': {'type': 'string', 'description': 'URL of a logo image (JPEG/PNG/GIF/WebP) to show on the form.'}, 'outcomes': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'rules'], 'properties': {'name': {'type': 'string', 'description': "Short name, recorded on each response (e.g. 'Recommend Zero Sugar')."}, 'match': {'enum': ['all', 'any'], 'type': 'string', 'description': "Default 'all'."}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'op'], 'properties': {'op': {'enum': ['eq', 'neq', 'contains', 'not_contains', 'gt', 'lt', 'is_empty', 'not_empty'], 'type': 'string', 'description': 'eq / neq (is, is not), contains / not_contains (text or checkbox), gt / lt (numbers, ratings, dates), is_empty / not_empty (no value needed).'}, 'field': {'type': 'string', 'description': 'The question this condition looks at: its label, its id, or its 0-based position.'}, 'value': {'type': 'string', 'description': "Value to compare with (an option's value for choice questions)."}}}}, 'end_early': {'type': 'boolean', 'description': 'Screening: end the form as soon as this matches (checked on every page change), not just at submit.'}, 'redirect_url': {'type': 'string', 'description': 'Optional page to send the respondent to.'}, 'thank_you_title': {'type': 'string'}, 'thank_you_message': {'type': 'string'}}}, 'description': 'Pathways / branching endings. After submit the first outcome whose rules match decides the ending: its own thank-you title/message and/or a redirect_url (e.g. send people to a different product page per answer). If none match, the default thank-you page is shown.'}, 'text_color': {'type': 'string', 'description': 'Hex text color.'}, 'description': {'type': 'string', 'description': 'New description.'}, 'button_color': {'type': 'string', 'description': 'Hex submit-button color.'}, 'redirect_url': {'type': 'string', 'description': 'URL to send respondents to after they submit.'}, 'button_text_color': {'type': 'string', 'description': 'Hex button-text color.'}, 'thank_you_message': {'type': 'string', 'description': 'Shown after submitting (if no redirect).'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'logo': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'qr_id': {'type': ['string', 'null'], 'description': "Id of the form's own QR code (published forms). Use with download_qr."}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'logic': {'type': ['object', 'null']}, 'order': {'type': 'integer'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': True}}, 'pattern': {'type': ['string', 'null']}, 'required': {'type': 'boolean'}, 'settings': {'type': 'object'}, 'help_text': {'type': ['string', 'null']}, 'max_value': {'type': ['number', 'null']}, 'min_value': {'type': ['number', 'null']}, 'field_type': {'type': 'string'}, 'max_length': {'type': ['integer', 'null']}, 'min_length': {'type': ['integer', 'null']}, 'placeholder': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'status': {'type': 'string', 'description': 'Draft, Published, or Closed.'}, 'created': {'type': 'string'}, 'bg_color': {'type': ['string', 'null']}, 'modified': {'type': 'string'}, 'outcomes': {'type': 'array'}, 'share_url': {'type': ['string', 'null'], 'description': 'Public URL respondents open (null until published).'}, 'text_color': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'qr_code_svg': {'type': ['string', 'null'], 'description': 'QR code for the share URL, as SVG markup.'}, 'button_color': {'type': ['string', 'null']}, 'redirect_url': {'type': ['string', 'null']}, 'workspace_id': {'type': 'string'}, 'dashboard_url': {'type': 'string', 'description': 'Where the owner manages the form on hovercode.com.'}, 'shortlink_url': {'type': ['string', 'null']}, 'show_progress': {'type': 'boolean'}, 'redirect_delay': {'type': ['integer', 'null']}, 'response_count': {'type': 'integer'}, 'shortlink_slug': {'type': ['string', 'null']}, 'show_powered_by': {'type': 'boolean'}, 'thank_you_title': {'type': ['string', 'null']}, 'shortlink_domain': {'type': ['string', 'null']}, 'button_text_color': {'type': ['string', 'null']}, 'thank_you_message': {'type': ['string', 'null']}, 'has_unpublished_changes': {'type': 'boolean'}, 'notification_recipients': {'type': 'array'}, 'allow_multiple_submissions': {'type': 'boolean'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Page id.'}, 'title': {'type': 'string', 'description': 'New page title.'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'id': {'type': 'string', 'description': 'Existing block id to keep/update; omit if new.'}, 'form': {'type': 'string', 'description': "For a 'form' block: the form id to embed."}, 'type': {'type': 'string', 'description': 'Block type (see list_block_types).'}, 'hidden': {'type': 'boolean', 'description': 'Hide this block from the live page.'}, 'content': {'type': 'object', 'description': "The block's content for that type."}}}, 'description': 'Complete desired block list (see note); each is {type, content} + optional id.'}, 'publish': {'type': 'boolean', 'description': 'true = publish/re-publish so edits go live; false = take offline (draft).'}, 'bg_color': {'type': 'string', 'description': 'Hex page background color.'}, 'text_color': {'type': 'string', 'description': 'Hex text color.'}, 'description': {'type': 'string', 'description': 'New SEO/description text.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'form': {'type': ['string', 'null'], 'description': 'Linked form id for form/signup blocks.'}, 'type': {'type': 'string'}, 'hidden': {'type': 'boolean'}, 'content': {'type': 'object'}}, 'additionalProperties': True}}, 'design': {'type': 'object'}, 'publish': {'type': 'object', 'properties': {'status': {'type': 'string'}, 'share_url': {'type': ['string', 'null']}, 'url_locked': {'type': 'boolean'}, 'is_published': {'type': 'boolean'}, 'published_at': {'type': ['string', 'null']}, 'has_unpublished_changes': {'type': 'boolean'}}, 'additionalProperties': True}, 'layout_version': {'type': 'integer'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'QR code id.'}, 'text': {'type': 'string', 'description': "Caption text. Renders on any frame that supports one; if `frame` isn't also given (or the one given can't show text), a frame that can is chosen automatically."}, 'frame': {'type': 'string', 'description': 'Frame slug. A caption (`text`) works on any frame — set `text` without a `frame` and one that can show it is chosen automatically. Frames that show a caption: card, card-above, speech-bubble, speech-bubble-above.'}, 'folder': {'type': 'string', 'description': "Move the code into this folder (id or slug from list_folders); 'none' unfiles it."}, 'pattern': {'enum': ['Original', 'Squares', 'Circles', 'Lines', 'Triangles', 'Diamonds'], 'type': 'string', 'description': 'Module pattern style.'}, 'qr_data': {'type': 'string', 'description': 'New destination URL/text (dynamic codes only).'}, 'add_tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag titles to add (created in the workspace if new).'}, 'logo_url': {'type': 'string', 'description': 'URL of a logo image to place in the center.'}, 'eye_color': {'type': 'string', 'description': 'Hex color for the corner eyes, if different from `primary_color` (which they follow by default).'}, 'eye_style': {'enum': ['Square', 'Rounded', 'Drop', 'Leaf'], 'type': 'string', 'description': 'Corner eye shape.'}, 'has_border': {'type': 'boolean', 'description': 'Draw a border around the code.'}, 'logo_round': {'type': 'boolean', 'description': 'Force the logo into a circle.'}, 'color_scope': {'enum': ['whole', 'pattern_only'], 'type': 'string', 'description': "How far a `primary_color` change should reach; only relevant alongside `primary_color`. Default 'whole' matches whole-code language — 'make it red', 'make the QR code dark green' — so pattern, eyes, and frame all follow `primary_color` together. Set 'pattern_only' for language that names one part specifically — 'change the pattern color to red', 'just recolor the dots' — so eyes and frame are left exactly as they are."}, 'frame_color': {'type': 'string', 'description': 'Hex color for the frame, if different from `primary_color` (which it follows by default).'}, 'logo_base64': {'type': 'string', 'description': "A logo image as base64 (JPEG/PNG/GIF/WebP, under 2 MB; a data: URI prefix is fine) to place in the center — use `logo_url` instead whenever the image is reachable at a URL. Producing this string means generating it yourself as text, and a single dropped or altered character anywhere in a long base64 string corrupts everything after it — the code then renders with a blank space where the logo should be, discovered only after the fact. If a call with this fails validation (e.g. 'corrupted or incomplete'), that's very likely this happening — retry by generating the string again rather than assuming the source image is bad."}, 'remove_logo': {'type': 'boolean', 'description': "Remove the code's logo."}, 'remove_tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags to remove from this code, by title, slug, or id.'}, 'display_name': {'type': 'string', 'description': 'New internal name.'}, 'gps_tracking': {'type': 'boolean', 'description': 'Enable/disable location prompt.'}, 'primary_color': {'type': 'string', 'description': "Hex color for the QR pattern, e.g. #111111. Eyes and frame follow this automatically — one color request styles the whole code; only set `eye_color`/`frame_color` for a code that should use a *different* color for those, e.g. 'dark green with gold eyes'. See `color_scope` for language that names just the pattern."}, 'text_secondary': {'type': 'string', 'description': 'Secondary caption line, where the frame supports it.'}, 'background_color': {'type': 'string', 'description': "Hex background color, or 'transparent'."}, 'error_correction': {'type': 'string', 'description': 'QR error correction level: L, M, Q, or H (higher tolerates more damage but is denser). Already handled automatically — the renderer uses H whenever the code has a logo, Q otherwise — so leave this unset by default, including when adding or changing a logo in this same call; only set it to deliberately override that automatic choice.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'png': {'type': ['string', 'null'], 'description': 'PNG URL once rendered; null until then (use download_qr).'}, 'svg': {'type': ['string', 'null'], 'description': 'Rendered QR as SVG markup.'}, 'logo': {'type': ['string', 'null']}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': True}}, 'text': {'type': ['string', 'null']}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'frame': {'type': ['string', 'null']}, 'vcard': {'anyOf': [{'type': 'object', 'properties': {'city': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null']}, 'state': {'type': ['string', 'null']}, 'street': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'position': {'type': ['string', 'null']}, 'last_name': {'type': ['string', 'null']}, 'post_code': {'type': ['string', 'null']}, 'first_name': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'company_name': {'type': ['string', 'null']}, 'phone_number': {'type': ['string', 'null']}, 'mobile_number': {'type': ['string', 'null']}}, 'description': 'Contact details encoded in a vCard code.', 'additionalProperties': True}, {'type': 'null'}]}, 'folder': {'anyOf': [{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'path': {'type': 'string'}, 'slug': {'type': 'string'}}, 'description': 'The folder a code sits in (null when unfiled).', 'additionalProperties': True}, {'type': 'null'}]}, 'created': {'type': 'string'}, 'dynamic': {'type': 'boolean'}, 'pattern': {'type': ['string', 'null']}, 'qr_data': {'type': 'string', 'description': 'Encoded data: the destination URL for URL codes.'}, 'qr_type': {'type': 'string', 'description': 'Link, Text, vCard, or PDF.'}, 'svg_file': {'type': ['string', 'null']}, 'eye_color': {'type': ['string', 'null']}, 'eye_style': {'type': ['string', 'null']}, 'has_border': {'type': 'boolean'}, 'frame_color': {'type': ['string', 'null']}, 'total_scans': {'type': ['integer', 'null']}, 'display_name': {'type': ['string', 'null']}, 'gps_tracking': {'type': 'boolean'}, 'pdf_file_url': {'type': ['string', 'null']}, 'unique_scans': {'type': ['integer', 'null']}, 'primary_color': {'type': ['string', 'null']}, 'shortlink_url': {'type': ['string', 'null'], 'description': 'Tracked short URL a dynamic code points at; null for static codes.'}, 'text_secondary': {'type': ['string', 'null']}, 'background_color': {'type': ['string', 'null']}, 'error_correction': {'type': ['string', 'null']}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Short link id.'}, 'gps': {'type': 'boolean', 'description': 'Enable/disable the location prompt.'}, 'link': {'type': 'string', 'description': 'New destination URL.'}, 'display_name': {'type': 'string', 'description': 'New internal name.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'gps': {'type': 'boolean'}, 'png': {'type': ['string', 'null']}, 'svg': {'type': ['string', 'null'], 'description': 'QR code for the short URL, as SVG markup.'}, 'link': {'type': 'string', 'description': 'Destination URL.'}, 'slug': {'type': 'string'}, 'error': {'type': 'object', 'properties': {'cause': {'type': 'string', 'description': 'Machine-readable failure category: invalid_argument, not_found, forbidden, plan_limit, rate_limited, or server_error.'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean', 'description': 'Whether repeating the same call could succeed.'}}, 'description': 'Present only when the tool failed (the result is also flagged isError).', 'additionalProperties': True}, 'domain': {'type': 'string'}, 'created': {'type': 'string'}, 'link_type': {'type': 'string'}, 'short_url': {'type': 'string'}, 'display_name': {'type': ['string', 'null']}, 'total_clicks': {'type': 'integer'}, 'unique_clicks': {'type': 'integer'}}, 'additionalProperties': True}
最近のツール変更
類似のMCPサーバー
Hermoso
Supports ad research, competitor analysis, video and static ad creation, campaign policy checks, content publishing, and performa…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
Spook SEO
Provides SEO analysis, keyword and content generation, AEO checks, ad copy tools and automated article generation and publishing.
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
RoboWrite
Supports brand setup, content briefs, AI-generated drafts, editorial review, quality checks, and publishing workflows.
ai-content-drop
Generates AI images, videos, UGC clips, avatars, and finished ads, while organizing creative assets and campaign boards.
Newswire Com
Searches and retrieves recent press releases from Newswire.com's public newsroom feed.