← WebMCP Directory

Tool tree

a11ymcp.vercel.app

Developer ToolsTools verified
Website
Websites expose accessibility capabilities to AI agents, allowing them to adapt live experiences to human needs, verify the result, and complete real tasks.
Explore capabilities

    page: Demo

    get_accessibility_capabilitiesAnswer

    Returns this site's declared accessibility capabilities (id, status supported|partial, limitations), the needs it cannot currently satisfy (notCurrentlyDeclared), and the commerce task tools. Call FIRST, before auditing, negotiating, or repairing, to learn what the site can adapt. Read-only; no approval required. If a user need appears in notCurrentlyDeclared, do not attempt to remediate it; report it as unsupported.

    View tool JSON
    {
      "name": "get_accessibility_capabilities",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns this site's declared accessibility capabilities (id, status supported|partial, limitations), the needs it cannot currently satisfy (notCurrentlyDeclared), and the commerce task tools. Call FIRST, before auditing, negotiating, or repairing, to learn what the site can adapt. Read-only; no approval required. If a user need appears in notCurrentlyDeclared, do not attempt to remediate it; report it as unsupported.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    get_accessibility_stateAnswer

    Returns live session state: applied remediations, total violation count, last negotiated profile, and commerce task state (cart items, checkout session, order). Call to re-inspect after any failure, before choosing a next action, or to confirm whether remediation is active. Read-only; no approval required.

    View tool JSON
    {
      "name": "get_accessibility_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns live session state: applied remediations, total violation count, last negotiated profile, and commerce task state (cart items, checkout session, order). Call to re-inspect after any failure, before choosing a next action, or to confirm whether remediation is active. Read-only; no approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    inspect_accessibility_treeAnswer

    Returns the normalized accessibility tree of the storefront (roles, names, focusability) with current violations attached per node. Call when you need node-level detail rather than audit totals, e.g. to explain a specific barrier to the user. Read-only; no approval required. Use the audit tools for category totals.

    View tool JSON
    {
      "name": "inspect_accessibility_tree",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the normalized accessibility tree of the storefront (roles, names, focusability) with current violations attached per node. Call when you need node-level detail rather than audit totals, e.g. to explain a specific barrier to the user. Read-only; no approval required. Use the audit tools for category totals.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    negotiate_accessibility_profileAction

    Maps the user's accessibility needs against this site's declared capabilities. Returns accepted capabilities (supported, or partial with a stated limitation) and rejected needs with reasons. Call after get_accessibility_capabilities and BEFORE any repair tool. Mutates session state only (stores the profile); does not change the page. No approval required; it only records the negotiated profile. Never call a repair tool for a need this tool rejected.

    View tool JSON
    {
      "name": "negotiate_accessibility_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Maps the user's accessibility needs against this site's declared capabilities. Returns accepted capabilities (supported, or partial with a stated limitation) and rejected needs with reasons. Call after get_accessibility_capabilities and BEFORE any repair tool. Mutates session state only (stores the profile); does not change the page. No approval required; it only records the negotiated profile. Never call a repair tool for a need this tool rejected.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "needs": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "keyboard_only",
                "strong_focus",
                "screen_reader_labels",
                "form_support",
                "high_contrast",
                "reduced_motion",
                "large_targets"
              ]
            },
            "minItems": 1
          }
        },
        "required": [
          "needs"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    audit_keyboard_navigationAnswer

    Detects interactive elements that are not keyboard focusable and positive-tabindex ordering issues, each tagged blocking|degrading|informational for the checkout task. Call after discovery and before negotiation to quantify keyboard barriers. Read-only; safe to repeat. pass=true with an empty violations array means this category cannot block the task.

    View tool JSON
    {
      "name": "audit_keyboard_navigation",
      "kind": "answer",
      "impl": "imperative",
      "description": "Detects interactive elements that are not keyboard focusable and positive-tabindex ordering issues, each tagged blocking|degrading|informational for the checkout task. Call after discovery and before negotiation to quantify keyboard barriers. Read-only; safe to repeat. pass=true with an empty violations array means this category cannot block the task.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    audit_accessible_namesAnswer

    Detects interactive controls that have no accessible name, tagged by task impact. Call after discovery and before negotiation. Read-only; safe to repeat. Pair with repair_accessible_names only if the site declares that capability.

    View tool JSON
    {
      "name": "audit_accessible_names",
      "kind": "answer",
      "impl": "imperative",
      "description": "Detects interactive controls that have no accessible name, tagged by task impact. Call after discovery and before negotiation. Read-only; safe to repeat. Pair with repair_accessible_names only if the site declares that capability.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    audit_form_associationsAnswer

    Detects form fields missing labels, placeholder-only labels, and error messages not associated with their field, tagged by task impact. Call before negotiation when the task involves forms. Read-only; safe to repeat.

    View tool JSON
    {
      "name": "audit_form_associations",
      "kind": "answer",
      "impl": "imperative",
      "description": "Detects form fields missing labels, placeholder-only labels, and error messages not associated with their field, tagged by task impact. Call before negotiation when the task involves forms. Read-only; safe to repeat.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    audit_focus_visibilityAction

    Probes each focusable control and detects missing visible focus indicators, tagged blocking for keyboard tasks. Supports AbortSignal cancellation. Call before negotiation for keyboard users. Read-only; safe to repeat.

    View tool JSON
    {
      "name": "audit_focus_visibility",
      "kind": "act",
      "impl": "imperative",
      "description": "Probes each focusable control and detects missing visible focus indicators, tagged blocking for keyboard tasks. Supports AbortSignal cancellation. Call before negotiation for keyboard users. Read-only; safe to repeat.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    repair_accessible_namesAction

    Applies the site-declared, reversible accessible-name remediation. Requires input.approval=true (explicit user consent); the schema rejects missing or false approval. Precondition: the site must declare the accessible_names capability (check get_accessibility_capabilities). Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.

    View tool JSON
    {
      "name": "repair_accessible_names",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies the site-declared, reversible accessible-name remediation. Requires input.approval=true (explicit user consent); the schema rejects missing or false approval. Precondition: the site must declare the accessible_names capability (check get_accessibility_capabilities). Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    repair_keyboard_navigationAction

    Applies the site-declared, reversible keyboard remediation for the size selector (focusability plus Enter/Space/arrow handlers). Requires input.approval=true. Precondition: the site must declare keyboard_navigation. Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.

    View tool JSON
    {
      "name": "repair_keyboard_navigation",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies the site-declared, reversible keyboard remediation for the size selector (focusability plus Enter/Space/arrow handlers). Requires input.approval=true. Precondition: the site must declare keyboard_navigation. Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    repair_form_associationsAction

    Applies the site-declared, reversible label and error-association remediation for checkout fields. Requires input.approval=true. Precondition: the site must declare form_association and the checkout form may need to be mounted; if a related call fails with 'not mounted', call begin_checkout first where applicable. Mutates the live page; reversible via rollback_all_remediations.

    View tool JSON
    {
      "name": "repair_form_associations",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies the site-declared, reversible label and error-association remediation for checkout fields. Requires input.approval=true. Precondition: the site must declare form_association and the checkout form may need to be mounted; if a related call fails with 'not mounted', call begin_checkout first where applicable. Mutates the live page; reversible via rollback_all_remediations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    repair_focus_managementAction

    Applies the site-declared, reversible visible-focus remediation. Requires input.approval=true. Precondition: the site must declare focus_management. Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.

    View tool JSON
    {
      "name": "repair_focus_management",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies the site-declared, reversible visible-focus remediation. Requires input.approval=true. Precondition: the site must declare focus_management. Mutates the live page; reversible via rollback_all_remediations. Verify afterwards with verify_accessibility_profile.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    repair_reduced_motionAction

    Applies the site-declared, reversible motion reduction. Precondition: the site must declare the reduced_motion capability; call after negotiate_accessibility_profile accepts it. Requires input.approval=true. On sites that do not declare it, returns success:false with an evidence chain explaining the refusal. Mutates the live page; reversible via rollback_all_remediations.

    View tool JSON
    {
      "name": "repair_reduced_motion",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies the site-declared, reversible motion reduction. Precondition: the site must declare the reduced_motion capability; call after negotiate_accessibility_profile accepts it. Requires input.approval=true. On sites that do not declare it, returns success:false with an evidence chain explaining the refusal. Mutates the live page; reversible via rollback_all_remediations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    verify_accessibility_profileAction

    Re-runs the task-critical audits and returns PASS|BLOCKED for the LAST negotiated profile (not every possible audit), plus per-check results with inScope flags and an advisories array for issues outside the negotiated profile. Call after every remediation batch and before proceeding to commerce; also call it to confirm a rollback restored the original state. Read-only; no approval required. If an in-scope check fails, call the matching audit tool for violation details.

    View tool JSON
    {
      "name": "verify_accessibility_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Re-runs the task-critical audits and returns PASS|BLOCKED for the LAST negotiated profile (not every possible audit), plus per-check results with inScope flags and an advisories array for issues outside the negotiated profile. Call after every remediation batch and before proceeding to commerce; also call it to confirm a rollback restored the original state. Read-only; no approval required. If an in-scope check fails, call the matching audit tool for violation details.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    rollback_all_remediationsAction

    Reverts every applied remediation and restores the original experience. Call when the user withdraws consent or to reset between scenarios. Idempotent and safe when nothing is applied. No approval required (it removes changes, never adds them).

    View tool JSON
    {
      "name": "rollback_all_remediations",
      "kind": "act",
      "impl": "imperative",
      "description": "Reverts every applied remediation and restores the original experience. Call when the user withdraws consent or to reset between scenarios. Idempotent and safe when nothing is applied. No approval required (it removes changes, never adds them).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    search_productsAction

    Searches the deterministic NOMA catalog and updates the visible results. Call at the start of a purchase task; the returned product ids and sizes are the valid inputs for add_product_to_cart. Mutates UI state only; no approval required.

    View tool JSON
    {
      "name": "search_products",
      "kind": "act",
      "impl": "imperative",
      "description": "Searches the deterministic NOMA catalog and updates the visible results. Call at the start of a purchase task; the returned product ids and sizes are the valid inputs for add_product_to_cart. Mutates UI state only; no approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "maxLength": 60
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    add_product_to_cartAction

    Selects a product and size, then adds it to the cart. Preconditions: productId from search_products and variantId within that product's sizes. Returns success:false with a message (and nextAction search_products) for unknown ids instead of throwing. Reversible until checkout; no approval required.

    View tool JSON
    {
      "name": "add_product_to_cart",
      "kind": "act",
      "impl": "imperative",
      "description": "Selects a product and size, then adds it to the cart. Preconditions: productId from search_products and variantId within that product's sizes. Returns success:false with a message (and nextAction search_products) for unknown ids instead of throwing. Reversible until checkout; no approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          }
        },
        "required": [
          "productId",
          "variantId"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    begin_checkoutSensitive Action

    Creates a checkout session for a non-empty cart and returns the sessionId required by fill_checkout_form and place_order. Precondition: at least one cart item; on an empty cart it fails with nextAction add_product_to_cart. Call before filling the form. No approval required.

    View tool JSON
    {
      "name": "begin_checkout",
      "kind": "transact",
      "impl": "imperative",
      "description": "Creates a checkout session for a non-empty cart and returns the sessionId required by fill_checkout_form and place_order. Precondition: at least one cart item; on an empty cart it fails with nextAction add_product_to_cart. Call before filling the form. No approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    fill_checkout_formSensitive Action

    Fills and validates the active checkout form. Precondition: an active sessionId from begin_checkout; without one it fails with nextAction begin_checkout. On validation failure returns success:false with per-field errors; correct the values and retry. Mutates form state only; no approval required.

    View tool JSON
    {
      "name": "fill_checkout_form",
      "kind": "transact",
      "impl": "imperative",
      "description": "Fills and validates the active checkout form. Precondition: an active sessionId from begin_checkout; without one it fails with nextAction begin_checkout. On validation failure returns success:false with per-field errors; correct the values and retry. Mutates form state only; no approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string"
              },
              "fullName": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "postalCode": {
                "type": "string"
              }
            },
            "required": [
              "email",
              "fullName",
              "address",
              "city",
              "postalCode"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "sessionId",
          "values"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    place_orderSensitive Action

    Consequential action: places the order. Precondition: a filled checkout session; call only after the user explicitly confirms. Requires input.confirmation to be the literal true (explicit human confirmation); the schema rejects confirmation:false. Returns the order id on success. A second call for the same session fails with 'Order already placed'.

    View tool JSON
    {
      "name": "place_order",
      "kind": "transact",
      "impl": "imperative",
      "description": "Consequential action: places the order. Precondition: a filled checkout session; call only after the user explicitly confirms. Requires input.confirmation to be the literal true (explicit human confirmation); the schema rejects confirmation:false. Returns the order id on success. A second call for the same session fails with 'Order already placed'.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "confirmation": {
            "type": "boolean",
            "enum": [
              true
            ]
          }
        },
        "required": [
          "sessionId",
          "confirmation"
        ],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    submit_accessibility_preferencesSensitive Action

    Stage the user's accessibility needs on this page so the site can negotiate an accessibility profile. Fills the form; the user submits it.

    View tool JSON
    {
      "name": "submit_accessibility_preferences",
      "kind": "transact",
      "impl": "imperative",
      "description": "Stage the user's accessibility needs on this page so the site can negotiate an accessibility profile. Fills the form; the user submits it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "needs": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "keyboard_only",
                "strong_focus",
                "screen_reader_labels",
                "form_support",
                "high_contrast",
                "reduced_motion",
                "large_targets"
              ]
            },
            "description": "The accessibility needs to request, as an array of need ids. Only ids this site declares can be satisfied; the rest are rejected with a reason."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/demo"
    }
    submit_accessibility_preferencesSensitive Action

    Stage the user's accessibility needs on this page so the site can negotiate an accessibility profile. Fills the form; the user submits it.

    View tool JSON
    {
      "name": "submit_accessibility_preferences",
      "kind": "transact",
      "impl": "declarative",
      "description": "Stage the user's accessibility needs on this page so the site can negotiate an accessibility profile. Fills the form; the user submits it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "needs": {
            "type": "boolean"
          }
        }
      },
      "page": "/demo"
    }

    page: Partner

    get_accessibility_capabilitiesAnswer

    Returns this site's declared accessibility capability manifest (id, status supported|partial with limitation, and the needs it does not declare). Call FIRST. Read-only; no approval required. Do not attempt to adapt a need that is not declared.

    View tool JSON
    {
      "name": "get_accessibility_capabilities",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns this site's declared accessibility capability manifest (id, status supported|partial with limitation, and the needs it does not declare). Call FIRST. Read-only; no approval required. Do not attempt to adapt a need that is not declared.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/partner"
    }
    negotiate_accessibility_profileAction

    Maps the user's needs to declared capabilities. Returns accepted (supported|partial) and rejected (with reasons). Call after get_accessibility_capabilities and BEFORE apply_accessibility_adaptation. Records the profile; does not touch the page. No approval required.

    View tool JSON
    {
      "name": "negotiate_accessibility_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Maps the user's needs to declared capabilities. Returns accepted (supported|partial) and rejected (with reasons). Call after get_accessibility_capabilities and BEFORE apply_accessibility_adaptation. Records the profile; does not touch the page. No approval required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "needs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        },
        "required": [
          "needs"
        ],
        "additionalProperties": false
      },
      "page": "/partner"
    }
    audit_accessibilityAction

    Runs task-scoped DOM audits (keyboard focusability, accessible names, form labels, visible focus) and returns violations tagged blocking|degrading. Read-only; safe to repeat.

    View tool JSON
    {
      "name": "audit_accessibility",
      "kind": "act",
      "impl": "imperative",
      "description": "Runs task-scoped DOM audits (keyboard focusability, accessible names, form labels, visible focus) and returns violations tagged blocking|degrading. Read-only; safe to repeat.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/partner"
    }
    apply_accessibility_adaptationAction

    Applies one site-declared, reversible adaptation. Requires input.approval === true (explicit user consent); missing or false approval is rejected. Precondition: the capabilityId must appear in get_accessibility_capabilities and be accepted by negotiate_accessibility_profile. Mutates the live page; reverse with rollback_accessibility_adaptations.

    View tool JSON
    {
      "name": "apply_accessibility_adaptation",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies one site-declared, reversible adaptation. Requires input.approval === true (explicit user consent); missing or false approval is rejected. Precondition: the capabilityId must appear in get_accessibility_capabilities and be accepted by negotiate_accessibility_profile. Mutates the live page; reverse with rollback_accessibility_adaptations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "capabilityId": {
            "type": "string",
            "enum": [
              "accessible_names",
              "keyboard_navigation",
              "focus_visibility",
              "form_labels"
            ]
          },
          "approval": {
            "type": "boolean"
          }
        },
        "required": [
          "capabilityId",
          "approval"
        ],
        "additionalProperties": false
      },
      "page": "/partner"
    }
    rollback_accessibility_adaptationsAction

    Reverts every applied adaptation and restores the original page. Idempotent; safe when nothing is applied. No approval required (it only removes changes).

    View tool JSON
    {
      "name": "rollback_accessibility_adaptations",
      "kind": "act",
      "impl": "imperative",
      "description": "Reverts every applied adaptation and restores the original page. Idempotent; safe when nothing is applied. No approval required (it only removes changes).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/partner"
    }
    verify_accessibility_profileAnswer

    Re-audits and returns PASS|BLOCKED for the LAST negotiated profile only, plus an advisories array for issues outside that profile. Read-only.

    View tool JSON
    {
      "name": "verify_accessibility_profile",
      "kind": "answer",
      "impl": "imperative",
      "description": "Re-audits and returns PASS|BLOCKED for the LAST negotiated profile only, plus an advisories array for issues outside that profile. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/partner"
    }
    search_catalogueAnswer

    Search the Vellum Books catalogue and show the results. Read-only and reversible.

    View tool JSON
    {
      "name": "search_catalogue",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the Vellum Books catalogue and show the results. Read-only and reversible.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Words to search the catalogue for, e.g. a title, an author, or a subject."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "page": "/partner"
    }
    fill_book_orderSensitive Action

    Fill the Vellum Books checkout form (email, name, shipping address). Does NOT place the order — the customer reviews the values and presses Place order.

    View tool JSON
    {
      "name": "fill_book_order",
      "kind": "transact",
      "impl": "imperative",
      "description": "Fill the Vellum Books checkout form (email, name, shipping address). Does NOT place the order — the customer reviews the values and presses Place order.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "The customer's email address, used for the order receipt."
          },
          "fullName": {
            "type": "string",
            "description": "The customer's full name as it should appear on the order."
          },
          "address": {
            "type": "string",
            "description": "The full shipping address, including postal code."
          }
        },
        "required": [
          "email",
          "fullName",
          "address"
        ],
        "additionalProperties": false
      },
      "page": "/partner"
    }
    search_catalogueAnswer

    Search the Vellum Books catalogue and show the results. Read-only and reversible.

    View tool JSON
    {
      "name": "search_catalogue",
      "kind": "answer",
      "impl": "declarative",
      "description": "Search the Vellum Books catalogue and show the results. Read-only and reversible.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/partner"
    }
    fill_book_orderSensitive Action

    Fill the Vellum Books checkout form (email, name, shipping address). Does NOT place the order — the customer reviews the values and presses Place order.

    View tool JSON
    {
      "name": "fill_book_order",
      "kind": "transact",
      "impl": "declarative",
      "description": "Fill the Vellum Books checkout form (email, name, shipping address). Does NOT place the order — the customer reviews the values and presses Place order.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address"
          },
          "fullName": {
            "type": "string",
            "description": "Full name"
          },
          "address": {
            "type": "string",
            "description": "Shipping address"
          }
        },
        "required": [
          "email",
          "fullName",
          "address"
        ]
      },
      "page": "/partner"
    }