Skip to main content
Glama

sb_store

Run a store flow that must happen in a fixed order. action:"checkout" makes the order form, configures it, saves its fields with this store's real payment and delivery options, then creates and PUBLISHES the checkout page — /checkout 404s…

Instructions

Run a store flow that must happen in a fixed order. action:"checkout" makes the order form, configures it, saves its fields with this store's real payment and delivery options, then creates and PUBLISHES the checkout page — /checkout 404s without all four. action:"checkout_sync" re-reads the store's payment and delivery methods into every existing order form and republishes the checkout page — run it after adding a shipping method or switching on a gateway, since the form keeps the options it was saved with. action:"form" seeds any of the platform's other form templates (login, contact, booking, stay and more — settings merge into the record) with its own field document, which is the part that cannot be guessed. action:"chrome" gives every page ONE shared header (footer:true — footer) built on a real site menu of page/category/product references: a desktop menu, a mobile drawer, cart and account icons — the gap sb_review reports as siteChrome. action:"menu" binds a menu node on the open page to the site's menu and resolves its links, the way the editor does. action:"overlay_attach" puts a pop-up on the open page (kind:"popup") or points a list-dataset at a quick-view panel (kind:"quickview", list_id), creating either from the platform's own seed when overlay_id is omitted, and re-reads the page afterwards as the editor must. action:"cart" creates the site's cart drawer from the editor's seed when it has none — without it every open_cart control opens nothing. action:"app" installs one of the platform's built-in apps (app_key) and creates the pages it needs that installing it does not — today only "courses" has any, from the platform's own scaffold; every other key installs with nothing further to build. action:"global_attach" puts an EXISTING shared section (global_id) on the open page and action:"global_detach" takes it off, writing the reference the platform reads and placing it in the band ROOT's child order demands — the answer for a page that is missing the site's header, where action:"chrome" would wrongly build a second one. action:"global_promote" turns a section on the open page (node_id) into a NEW shared section (global_kind header|footer|custom, default custom) and leaves the page referencing it; action:"template_save" saves one as a section template (name). Dry run returns the plan.

Input Schema

NameRequiredDescriptionDefault
kindNoaction:"overlay_attach" — which kind of overlay to attach
nameNoaction:"form" — the form's name in the merchant's list. action:"overlay_attach" with no overlay_id — the new pop-up/quick-view's name.
actionYes
footerNoaction:"chrome" — build a shared FOOTER instead of a header
app_keyNoaction:"app" — which built-in app to install
dry_runNo
list_idNoaction:"overlay_attach" kind:"quickview" — the list-dataset node on the open page
menu_idNo
node_idNoaction:"menu" — the menu node; "global_promote"/"template_save" — the section
site_idNo
headlineNo
languageNoCopy language, default vi
settingsNoaction:"form" {booking:{maxPerSlot:2}}
templateNoaction:"form" — which of the platform's own form templates to seed
global_idNoaction:"global_attach"/"global_detach" — the shared section; omitted on attach it lists the site's own
page_nameNo
overlay_idNoaction:"overlay_attach" — an existing overlay; omit to create one from the seed
relocalizeNoaction:"cart" — rewrite an EXISTING drawer's seed words that are in another language to the site locale's (edited text untouched), and turn a gallery line thumbnail into a single image; needs a page of the site open
global_kindNo
template_idNoaction:"template_save" — overwrite this template's content

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.89.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "checkout",
      -  "checkout_sync",
      -  "form",
      -  "chrome",
      -  "menu",
      -  "overlay_attach",
      -  "cart",
      -  "app",
      -  "global_attach",
      -  "global_detach"
      -]New value: +[
      +  "checkout",
      +  "checkout_sync",
      +  "form",
      +  "chrome",
      +  "menu",
      +  "overlay_attach",
      +  "cart",
      +  "app",
      +  "global_attach",
      +  "global_detach",
      +  "global_promote",
      +  "template_save"
      +]
    • changedInput schema / properties / app_key / enum
      Previous value: -[
      -  "mail",
      -  "multilingual",
      -  "agent",
      -  "chat",
      -  "booking",
      -  "loyalty",
      -  "payments",
      -  "courses"
      -]New value: +[
      +  "mail",
      +  "multilingual",
      +  "agent",
      +  "chat",
      +  "booking",
      +  "loyalty",
      +  "payments",
      +  "courses",
      +  "shipping",
      +  "pos",
      +  "tickets"
      +]
    • addedInput schema / properties / global_kind
      Added value: +{
      +  "enum": [
      +    "header",
      +    "footer",
      +    "custom"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / node_id / description
      Previous value: -"action:\"menu\" — the menu node on the open page"New value: +"action:\"menu\" — the menu node; \"global_promote\"/\"template_save\" — the section"
    • addedInput schema / properties / settings
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "action:\"form\" {booking:{maxPerSlot:2}}",
      +  "type": "object"
      +}
    • addedInput schema / properties / template_id
      Added value: +{
      +  "description": "action:\"template_save\" — overwrite this template's content",
      +  "type": "string"
      +}
  2. Changed1 schema field changedv0.76.3
    • changedInput schema / properties / relocalize / description
      Previous value: -"action:\"cart\" — rewrite an EXISTING drawer's seed words that are in another language to the site locale's (edited text untouched); needs a page of the site open"New value: +"action:\"cart\" — rewrite an EXISTING drawer's seed words that are in another language to the site locale's (edited text untouched), and turn a gallery line thumbnail into a single image; needs a page of the site open"
  3. Changed2 schema fields changedv0.69.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "checkout",
      -  "form",
      -  "chrome",
      -  "menu",
      -  "overlay_attach",
      -  "app",
      -  "global_attach",
      -  "global_detach"
      -]New value: +[
      +  "checkout",
      +  "checkout_sync",
      +  "form",
      +  "chrome",
      +  "menu",
      +  "overlay_attach",
      +  "cart",
      +  "app",
      +  "global_attach",
      +  "global_detach"
      +]
    • addedInput schema / properties / relocalize
      Added value: +{
      +  "description": "action:\"cart\" — rewrite an EXISTING drawer's seed words that are in another language to the site locale's (edited text untouched); needs a page of the site open",
      +  "type": "boolean"
      +}
  4. Changed9 schema fields changedv0.63.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "checkout",
      -  "form",
      -  "chrome"
      -]New value: +[
      +  "checkout",
      +  "form",
      +  "chrome",
      +  "menu",
      +  "overlay_attach",
      +  "app",
      +  "global_attach",
      +  "global_detach"
      +]
    • addedInput schema / properties / app_key
      Added value: +{
      +  "description": "action:\"app\" — which built-in app to install",
      +  "enum": [
      +    "mail",
      +    "multilingual",
      +    "agent",
      +    "chat",
      +    "booking",
      +    "loyalty",
      +    "payments",
      +    "courses"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / global_id
      Added value: +{
      +  "description": "action:\"global_attach\"/\"global_detach\" — the shared section; omitted on attach it lists the site's own",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "action:\"overlay_attach\" — which kind of overlay to attach",
      +  "enum": [
      +    "popup",
      +    "quickview"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / list_id
      Added value: +{
      +  "description": "action:\"overlay_attach\" kind:\"quickview\" — the list-dataset node on the open page",
      +  "type": "string"
      +}
    • addedInput schema / properties / menu_id
      Added value: +{
      +  "type": "string"
      +}
    • changedInput schema / properties / name / description
      Previous value: -"action:\"form\" — the form's name in the merchant's list"New value: +"action:\"form\" — the form's name in the merchant's list. action:\"overlay_attach\" with no overlay_id — the new pop-up/quick-view's name."
    • addedInput schema / properties / node_id
      Added value: +{
      +  "description": "action:\"menu\" — the menu node on the open page",
      +  "type": "string"
      +}
    • addedInput schema / properties / overlay_id
      Added value: +{
      +  "description": "action:\"overlay_attach\" — an existing overlay; omit to create one from the seed",
      +  "type": "string"
      +}
  5. Changed2 schema fields changedv0.39.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "checkout",
      -  "form"
      -]New value: +[
      +  "checkout",
      +  "form",
      +  "chrome"
      +]
    • addedInput schema / properties / footer
      Added value: +{
      +  "description": "action:\"chrome\" — build a shared FOOTER instead of a header",
      +  "type": "boolean"
      +}
  6. Addedv0.12.0

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare write (readOnlyHint=false) and non-destructive, but the description adds real behavioral context beyond them: checkout PUBLISHES the page, missing pieces cause /checkout to 404, overlay_attach re-reads the page afterwards, checkout_sync republishes forms, and "Dry run returns the plan". It never covers auth/permission requirements or failure modes, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Almost no sentence is filler, but the entire twelve-action contract is delivered as one unbroken block with no enumeration or line breaks, which hurts scanability when an agent is trying to locate a single action. Front-loading is partial — the ordering rule leads, but individual actions are not visually separable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a twelve-action, twenty-parameter tool with no output schema and only partial annotations, the description covers what each action does, its side effects, and its sequencing caveats. It omits error behavior and return payloads entirely (beyond the dry-run plan), which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 20 parameters and only 65% schema coverage, the description carries real load by binding parameters to actions (template, app_key, footer, kind, overlay_id, settings merge behavior, global_kind default custom, relocalize's language rewrite). A few parameters (menu_id, site_id, page_name, headline, template_id) are left to the schema, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Each of the twelve actions is described with a concrete verb and effect ("makes the order form... creates and PUBLISHES the checkout page", "re-reads the store's payment and delivery methods into every existing order form"). The ordering constraint ("must happen in a fixed order") and the note that /checkout 404s without all four make the tool's purpose unambiguous. It does not cleanly position itself against every sibling (sb_page_create, sb_bind, sb_publish) but the action-level detail is strong.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers ("run it after adding a shipping method or switching on a gateway") and an explicit when-not with a named alternative: global_attach is "the answer for a page that is missing the site's header, where action:'chrome' would wrongly build a second one". No guidance on when to prefer entirely different sibling tools for the same work, but the intra-tool routing advice is well above average.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.