WebCake Storefront MCP
Provides image search capabilities via the Pexels API, allowing the AI to find stock photos for storefront pages.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WebCake Storefront MCPBuild a homepage for my coffee shop"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
English · Tiếng Việt
Describe a store page in plain words — your AI builds it, validates it, and publishes it to your WebCake storefront.
⭐ If this saves you an afternoon of dragging blocks around, give it a star — every star keeps a solo project alive.
"Build a page for my coffee shop — a hero with a Shop Now button, a product grid, and an order form. Save it and publish."
…and a real, editable page appears on your WebCake/StoreCake site. No dragging blocks, no learning the schema, no hand-writing JSON.
🧩 How it works
This server is the bridge between your AI assistant and your storefront. The AI never guesses what a page looks like — it asks this MCP, which knows the entire BuilderX component model, validates the result, and saves it.
You AI assistant webcake-storefront MCP WebCake / StoreCake
┌──────┐ prompt ┌────────────┐ tools ┌───────────────────────┐ API ┌──────────┐
│ idea │ ───────► │ Claude / │ ─────► │ • knows the BuilderX │ ───► │ a real │
│ │ │ Cursor / │ │ component model │ │ editable │
│ │ ◄─────── │ Windsurf │ ◄───── │ • builds + validates │ ◄─── │ page on │
└──────┘ live URL └────────────┘ result │ • saves + publishes │ │ your site│
└───────────────────────┘ └──────────┘You ask in plain language — goal, brand, sections, products, form fields.
The AI learns the model from the MCP: the element catalog, the CSS-grid layout, the breakpoints — so it builds a real storefront page, not a guess.
It assembles + validates the
{ sections: [...] }page source.validate_pagecatches duplicate ids, broken grids, and form fields without a name before anything is saved.It saves to your site — dry-run preview first, then for real — and
publish_sitemakes it live.You get the preview URL — open it, tweak in the editor, done.
Why it's reliable
📚 Knows the real model | Serves 130+ BuilderX component types (text, image, button, form, product grid, cart, countdown, gallery…) ported straight from the builder's own factory — the exact same shapes the editor produces. |
✅ Validates before saving | Structural checks (unique ids, valid grid, form fields with names, working event targets) so the page isn't broken when it lands. |
🛡️ Safe by default | Every write is dry-run first — preview the change, nothing touches your site until you confirm. |
✏️ Edits surgically | Ask for one change ("make the CTA green") and it edits only that element — every other id, style, and block stays exactly as it was. |
💡 Selling COD or online? It speaks the full commerce model too — products, variations, cart, orders, promotions, combos.
Related MCP server: WebCake Landing MCP
✨ What you can build
One sentence to your AI → a finished, editable storefront page:
Just say… | |
🛒 Product page | "A one-product page for my skincare serum — gallery, price, an order form with cart." |
🏬 Storefront home | "A homepage — hero banner, featured product grid, a newsletter form." |
⚡ Flash sale | "A flash-sale page — big countdown, discounted product grid, a sticky Buy button." |
🎟️ Event / webinar | "A registration page — countdown, agenda, a sign-up form." |
💌 Invitation | "A wedding invite — names, date, a map, an RSVP form." |
📰 Blog / content | "A blog index with featured posts and a subscribe box." |
🔗 Link-in-bio | "A link-in-bio — avatar, short bio, 5 link buttons, socials." |
…then "make the CTA green" or "add a 4th feature" and it edits only that block.
🤖 Works in Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, or any MCP-capable client — and the build guide + element catalog tools need zero backend calls, so you can explore the model before pasting a token.
Under the hood
An MCP (Model Context Protocol) server that teaches AI agents the WebCake/StoreCake storefront builder
(BuilderX) component model and connects them to the backend. The AI produces the full { sections: [...] }
page source; build_page creates the page and saves it, and publish_site makes the whole site live.
Beyond page authoring, it exposes your real store: pages & custom code, products, orders, collections, blog articles, promotions, combos, themes, customers, and automation — ~280 tools in total.
Method | Best for | Auth |
npx (local) — runs on your machine | Personal daily use, full control | browser |
Remote ( | Teams, the claude.ai dialog, always-on |
|
The build + catalog tools (get_build_guide, list_elements, get_element, new_section,
validate_page) work with zero config; everything that reads or writes your site needs a token + session.
🚀 Get connected
Pick one. Both hand your AI tool the full storefront toolkit. No coding.
① npx — runs on your machine (recommended)
Zero install, always the latest version, needs Node.js 18+. One line configures your IDE:
# Interactive — pick your IDE(s) and paste your credentials
npx -y webcake-storefront-mcp install
# Non-interactive — configure every supported IDE at once
npx -y webcake-storefront-mcp install --ide all --token <token> --session <session-id>
# Remove the server from every IDE config
npx -y webcake-storefront-mcp uninstallTargets: claude-desktop, claude-code, cursor, windsurf, vscode, or all.
Just want to run the server (configure by hand)? npx -y webcake-storefront-mcp.
② Browser login — no token copy/paste
npx -y webcake-storefront-mcp loginOpens the builder's connect page; click Connect and your token + session are saved locally and picked up automatically.
Remote URL — self-hosted, nothing per-client to install
npx -y webcake-storefront-mcp serve --port 8787Then point any client at http://<host>:8787/mcp?jwt=<TOKEN> (clients that support headers can send
x-webcake-jwt instead; pick the site in chat with switch_site). Server-side secrets like PEXELS_API_KEY
live on the host — handy on a VPS.
⚠️ A
?jwt=link contains your personal token — treat it like a password and use HTTPS in production.
⚙️ Configuration
Two values are required: WEBCAKE_TOKEN (Bearer JWT) and WEBCAKE_SESSION_ID (sent as
x-session-id). You pick the site at runtime — just ask in chat and the AI calls list_my_sites /
switch_site (your choice is saved and reused next session), so no WEBCAKE_SITE_ID is needed.
Base URLs come from a named environment — set WEBCAKE_ENV (or --env) and you never type a URL:
| api | app (login) | preview |
|
|
|
|
|
|
|
|
|
|
|
|
Override a preset with WEBCAKE_API_URL / WEBCAKE_APP_URL. Optional, configured server-side:
PEXELS_API_KEY (search_images). Token / session / site can also be set
in chat via update_auth and switch_site — saved to a local config file at ~/.webcake-storefront-mcp/.
Open the WebCake builder and log in.
Open DevTools (
F12) → Network tab → click any API request.In Request Headers:
Authorization: Bearer …→WEBCAKE_TOKEN;x-session-id: …→WEBCAKE_SESSION_ID.No site id needed up front — in chat, run
list_my_sitesthenswitch_siteto choose the site (remembered next time).
🧰 The tools at a glance
~280 tools. The headline group builds pages; the rest read and edit your live store.
Group | Tools | Needs |
Build a page |
| catalog tools: nothing |
Media & ingest |
| — |
Pages & code |
| token + session |
Commerce | products · orders · collections · promotions · combos | token + session |
Content & store | blog articles · themes / site style · apps · customers · | token + session |
Backend code | HTTP-function CRUD ( | token + session |
Context |
| token |
Every write defaults to dry_run=true — it previews the exact change and only touches your site when you re-run with dry_run=false.
💬 Suggested prompt
Build me a WebCake storefront page for <brand/offer>. Use the webcake-storefront MCP: call
get_build_guide,list_elements, build the sections withnew_section,validate_pageuntil zero errors, thenbuild_page(dry-run first) andpublish_site.
⭐ Like the idea? Drop a star
This is a solo, open-source project — every ⭐ genuinely keeps it moving and helps other builders find it.
⭐ Star the repo — 2 seconds, huge motivation.
🐛 Open an issue — a bug, a missing component, or just an idea.
🔁 Share it with anyone still building store pages block by block.
Built with ❤️ for the WebCake community. Thanks for being here.
Available Tools
131 toolsadd_draft_sectionAInspect
Append ONE section to a local page draft (NO network — this is the durable per-section cache step that can't time out). The section is re-id'd to avoid collisions and quick-validated; warnings are surfaced but never block. Build the section with new_section.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | A section node (from new_section) — object or JSON string | |
| draft_id | Yes | Draft id from start_page_draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate a non-read-only, non-destructive write. The description adds rich behavioral context: no network, durable per-section cache, no timeout, section re-id to avoid collisions, quick validation, and warnings that are surfaced but never block. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly packed sentences with no wasted words. It front-loads the core action, then adds essential behavioral context in parentheses and a short prerequisite note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and minimal annotations, the description covers purpose, prerequisites, operational behavior (local, durable, no timeout), and edge-case handling (warnings don't block). It is complete for an agent to invoke the tool correctly in the draft workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description adds meaning by stating the section should be built with new_section and that it will be re-id'd, which supplements the schema's 'section node (from new_section)' with process details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Append ONE section to a local page draft', and distinguishes it from network-dependent operations with 'NO network — this is the durable per-section cache step'. It also clarifies that it operates on drafts, not live pages, separating it from sibling tools like add_section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an implicit usage guideline by instructing 'Build the section with new_section', indicating a prerequisite step. However, it does not explicitly state when to choose this tool over alternatives such as commit_page_draft or add_section, leaving the agent to infer the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sectionAInspect
Append a section to an EXISTING page's source. Reads the current source, appends your section, validates, and (when dry_run=false) saves. The section is re-id'd to avoid collisions. Pass a section built with new_section, OR template:{ category_id, id } to insert a library section (list_section_templates). Two-step safety: dry_run=true (default) previews; dry_run=false saves.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview only (true) or save (false) | |
| page_id | Yes | Target page id | |
| section | No | A section node (from new_section) — object or JSON string | |
| template | No | Insert a library section instead (ids from list_section_templates) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state readOnlyHint=false and destructiveHint=false; the description goes well beyond by disclosing the full read-append-validate-save pipeline, the re-id step to avoid collisions, and the dry_run default. This is the kind of operational detail an agent needs before committing a write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the verb+scope, then sourcing rules, then the safety workflow. No filler or restated name/title content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation tool this is nearly complete: sourcing, re-id behavior, and the two-step save flow are all present. The only gap is that with no output schema, the description never indicates what is returned (e.g., validation results or the new section id).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds genuine value by cross-referencing which sibling tools produce each input ('section built with new_section', 'template ... from list_section_templates') and reaffirming dry_run's default-true preview semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Append a section to an EXISTING page's source') with explicit scope. The capitalized 'EXISTING' and the note that the id is re-generated distinguish it from new_section (which builds a section) without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly routes the agent: build a section with new_section, or supply template:{category_id,id} from list_section_templates, and explains the dry_run=true default preview workflow. It does not, however, contrast itself against similar mutators like add_draft_section or update_page_source, so the 'when-not' side is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_site_custom_codeAInspect
Append or prepend code to a custom code field WITHOUT reading the existing content first. Use this when you need to ADD new CSS rules, JS code, or script tags — no need to read first. For full rewrites, use update_site_custom_code instead.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Code to add | |
| field | Yes | Which code field to modify | |
| position | No | Add to end (append) or beginning (prepend) | append |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint=false, so the description carries most of the burden. It usefully discloses that this is an additive, non-read-first mutation in contrast to a full rewrite, which is genuine behavioral context, but it omits permission requirements and what happens if the target field is empty or missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place, with the core additive behavior front-loaded before the alternative-tool pointer. No redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no output schema, the description covers purpose, usage, and the sibling alternative well. It stops short of stating return behavior or edge cases, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so field, code, and position are already fully documented. The description reinforces the append/prepend distinction and the kinds of code supported but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (append/prepend) and resource (custom code field) with clear scope, and explicitly contrasts with the sibling update_site_custom_code. An agent can distinguish it from the update and get variants without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition (adding new CSS rules, JS, script tags) and names the alternative (update_site_custom_code) for the opposite case (full rewrites). Both the trigger and the exclusion are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_pageAInspect
Create a brand-new page AND set its full content source in one step. Two-step safety: call with dry_run=true (default) to validate and preview, then dry_run=false to actually create + save. The source must be { sections: [...] } — build sections with new_section. Validation errors block the real save. ONE page per site for type main (homepage) / error / maintain, and slugs are unique per site: a duplicate is refused (dry_run reports blocked:true) and you get the existing page_id to edit instead. Only 'custom' pages can be created over and over.
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | SEO for this page → settings.seo. Without it the page publishes with an EMPTY title/description. For a store page a good default title is '{{name_product}} | {{name_site}}' (product) or '{{name_category}} | {{name_site}}' (category). | |
| name | Yes | Page name | |
| slug | Yes | URL slug WITHOUT a leading slash, e.g. 'about', 'collections', 'cart'. A leading '/' is stripped automatically (the storefront matches the bare path segment, so '/cart' would 404). Store pages MUST use the conventional slugs: category='collections', product detail='products', cart='cart', checkout='checkout', thank-you='complete'. The homepage needs no slug (pass is_homepage:true). | |
| type | No | Page kind. SPECIAL pages need a site data-source enabled — build_page does this automatically: store→use_store (product/cart bindings), member→use_member (customer/order bindings), blog→use_blog, error→use_error, maintain→use_maintain. 'main'/'custom' need nothing. Omit for a normal content page (defaults to 'main' for the homepage). | |
| source | No | Full page source { sections: [...] } (object or JSON string) | |
| dry_run | No | Preview+validate only (true) or create+save (false) | |
| is_homepage | No | Set as the site homepage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false available, the description carries the behavioral load well: dry_run defaults to true, validation errors block the real save, duplicates are refused with blocked:true plus an existing page_id, only 'custom' pages can be created repeatedly, and special types auto-enable their data sources (store→use_store, member→use_member, etc.). It also warns that omitting seo publishes an empty title/description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the dry_run workflow, then the edge-case constraints, so the agent gets the critical path first. Four dense sentences with little waste, though the uniqueness sentence packs several distinct rules together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param nested-object create tool with no output schema, the description covers the safety flow, source format, type side effects, and conflict behavior. The only real gap is that the success return (e.g. the new page_id) is not described, though the failure path's page_id is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds cross-parameter meaning beyond the schema: source must take the shape { sections: [...] } built via new_section, and dry_run must be read as a two-phase flow rather than a simple flag. These additions go beyond the per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and an explicit scope differentiator: 'Create a brand-new page AND set its full content source in one step.' That 'one step' framing implicitly separates it from the sibling pair create_page/update_page_source. However, it never names those siblings, so an agent must still infer which of the many page-related tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational guidance: call dry_run=true first then false, build sections with new_section, and the uniqueness rules (one main/error/maintain page per site, unique slugs, duplicates refused and return the existing page_id to edit instead). It lacks explicit when-not guidance (e.g. 'use update_page_source to modify existing content'), but the create-vs-edit boundary is derivable from the duplicate rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_page_draftADestructiveInspect
Delete a local page draft (does NOT delete any backend page already created from it).
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | Draft id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds real value beyond them by delimiting blast radius — it discloses what is NOT destroyed (the backend page derived from the draft), which the annotations cannot express. It still says nothing about irreversibility or whether confirmation is required before clearing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, and the parenthetical is genuinely load-bearing rather than filler. Nothing could be cut without losing routing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive cleanup tool with annotations covering the safety profile, the description covers the essential gap (scope vs. backend pages). It stops short of noting that the action is irreversible or how to discover the draft_id, which would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already documents draft_id (albeit thinly, as "Draft id"). The description adds no syntax, format, or provenance guidance such as obtaining the id from list_page_drafts; baseline 3 applies when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Delete") and a precise resource ("a local page draft"), and the parenthetical scopes it against the backend page objects that sibling tools like delete_page and commit_page_draft operate on. An agent can tell this apart from delete_page and commit_page_draft without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical implies the appropriate context (discarding a local draft that has not been, or should not be, published), but no tool is named as an alternative and no explicit when-to-use / when-not-to-use rule is given. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_page_draftAInspect
Persist a local page draft to the backend INCREMENTALLY (one section per request, 120s timeout each) so no single huge request can time out. dry_run=true (default) validates the assembled page and previews stats. dry_run=false creates the page then appends sections one at a time, saving progress after each. RESUMABLE: if a request fails mid-commit, the draft keeps its page_id + committed_count — just call commit_page_draft again to continue from where it stopped.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Validate+preview only (true) or create+persist incrementally (false) | |
| draft_id | Yes | Draft id from start_page_draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false; the description adds substantial behavioral context: incremental one-section-per-request writes, a 120s per-request timeout, dry_run preview semantics, and full resumability via retained page_id + committed_count. This is exactly the kind of mutation/recovery detail annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the dry_run modes, then a capped RESUMABLE block for the failure path. Three compact segments, no filler, and the escalation-worthy detail is surfaced with emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and only two parameters, the description covers the write behavior, timeout risk, dry-run preview, and failure recovery. Nothing an agent needs to invoke it correctly or recover from a mid-commit failure is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further: dry_run=true validates the assembled page and previews stats while false creates then appends sections, adding meaning beyond the schema's terse wording. draft_id origin is only noted in the schema, so no extra credit there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (persist/commit), resource (local page draft), and distinguishing mechanism (incremental, one section per request). The dry_run paragraph clarifies both modes, and the resumable note tells the agent exactly what the tool does on failure. It is clearly separable from start_page_draft and add_draft_section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the dry_run default and what each mode does, which implicitly guides usage, but never explicitly states when to call this versus start_page_draft/add_draft_section or that it must follow draft construction. Usage is inferable from the workflow but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_orders_by_statusARead-onlyInspect
Get order count grouped by status. Useful for dashboard overview
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the aggregation/grouping behavior, which is genuine context, but it says nothing about scope (all orders? date-limited? site-limited?) or the shape of the returned counts, so the behavioral picture stays thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first and usage hint second, with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read-only aggregate with annotations covering the safety profile, this is nearly sufficient. The only real gap is the absence of any statement of scope (which orders are counted) and the return structure, though no output schema exists to cover the latter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with output shape: it counts orders and groups the count by status. That is clear enough to distinguish from list_orders or get_order, but it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Useful for dashboard overview" implies the intended context, which is more than nothing, but there is no guidance on when to use this versus list_orders (e.g. avoiding fetching full order records just to tally them) and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_articleAInspect
Create a blog article so blog/post pages (post-list, grid-blog, post-overlay) have content. Built via the dashboard command pipeline: title + optional summary, HTML content, image URLs, and category linkage. Pass category_ids from create_blog_category / list articles' categories so the post shows up under those categories (it is also auto-filed under the default category). Image URLs must be hosted (search_images / upload_images). The backend generates the id and slug. SEO: set it afterwards with update_article({ id, seo }).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Article title | |
| images | No | Hosted image URLs; the first is the cover image | |
| content | No | HTML content of the post | |
| summary | No | Short summary / excerpt | |
| category_ids | No | Blog category IDs to file the post under (from create_blog_category) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive write, so the safety profile is covered. The description adds genuinely non-obvious behavior: the backend generates id and slug, posts are auto-filed under a default category, and SEO is deliberately excluded from creation. It omits auth/permission needs and what the response actually returns, keeping it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and every sentence carries usable information (surfaces, pipeline, image hosting, category linkage, SEO follow-up). It is dense and slightly long, but nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param write tool with no output schema, the description covers prerequisites and the create-then-update workflow, implying the returned id needed for the SEO step. It does not explicitly state the response shape, which is the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema lacks: title + optional summary framing, the cover-image convention, and the auto-filing side effect of category_ids. It goes beyond restating the JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Create a blog article') and grounds it in the consuming surfaces (post-list, grid-blog, post-overlay). An agent can distinguish it from update_article, create_blog_category, and other create_* siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: category_ids come from create_blog_category or list articles' categories, image URLs must be hosted via search_images/upload_images, and SEO must be set afterwards with update_article({ id, seo }). Prerequisites and follow-up steps are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_blog_categoryAInspect
Create a blog/article category. Returns the new category id — pass it to create_article's category_id so posts are grouped (post-list / blog pages bind to it). Image must be a hosted URL. SEO: set it afterwards with update_blog_category({ id, seo }).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Blog category name | |
| image | No | Hosted image URL | |
| description | No | Category description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal this is a non-read-only, non-destructive write. The description adds genuine workflow behavior beyond that: the call returns a new category id, the image must be a hosted URL, and SEO cannot be set here and requires a separate update_blog_category call. No permission or rate-limit detail, but the follow-up dependency is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then the downstream wiring, then the SEO caveat. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining the returned category id and exactly where to use it, plus the SEO follow-up path and the image constraint. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The 'Image must be a hosted URL' note largely restates the schema's 'Hosted image URL', and the id/return guidance concerns output rather than inputs, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a blog/article category'), and the 'blog/article' qualifier cleanly separates it from the sibling create_product_category. An agent knows immediately what object is being created without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear downstream context (pass the returned id to create_article's category_id) and routes the SEO follow-up explicitly to update_blog_category({ id, seo }). It lacks an explicit when-not-to-use note (e.g., vs create_product_category), but the workflow guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cms_fileBInspect
Create a new CMS file. Types: "http_function", "jobs_config", "default"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | File name | |
| type | No | File type | default |
| content | Yes | Code content (JavaScript or JSON) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is covered. The description adds the file-type taxonomy but omits important behavior such as what happens if the file already exists, whether creation overwrites, or any permission requirements. It adds modest value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and no filler. The type list is somewhat redundant with the schema enum, which slightly dilutes conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with annotations present and no output schema, the description is minimally adequate but leaves key questions unanswered: collision/overwrite behavior, required permissions, and where the file lands. It covers the what but not the surrounding context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description only restates the type enum that the schema already defines, adding no syntax or format meaning beyond it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new CMS file") that an agent can distinguish from update_cms_file and edit_http_function. It does not explicitly name or contrast those siblings, but the create-vs-update distinction is clear from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_cms_file, edit_http_function, or save_file_version, and no prerequisites or conditions. The agent must infer the routing decision entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionAInspect
Create a new collection (custom data TABLE). It starts with the system columns (id/inserted_at/updated_at/creator_id); pass columns to add custom fields. NOTE: to WRITE records into it, use an HTTP function (webcake-data: db.model(table).create({...})) — the dashboard has no direct record-insert API. See get_http_function for the SDK guide.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name. | |
| columns | No | Custom columns to add, e.g. [{name:'email',type:'text'},{name:'amount',type:'integer'}]. | |
| table_name | No | Table name (snake_case, unique). Defaults to name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, non-destructive mutation, so the bar is lower. The description adds real behavioral detail: the collection is seeded with system columns (id/inserted_at/updated_at/creator_id) and the dashboard exposes no direct record-insert API, which is a meaningful capability limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all front-loaded with the core action first, then the system-column behavior, then the important write-path caveat. No filler; the NOTE earns its place by preventing a wrong-invocation attempt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no output schema and safety already covered by annotations, the definition covers creation semantics, default state, and the record-write alternative. Nothing essential for a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by framing the initial system columns and explaining that `columns` adds custom fields on top of them, which helps the agent understand what is and isn't supplied at creation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') plus resource ('collection'), then clarifies the resource as a 'custom data TABLE', which an agent cannot infer from the name alone. Together with sibling verbs (get_collection, update_collection_columns, delete_collection) the create action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from attempting record insertion here, naming the alternative (an HTTP function via get_http_function) and the mechanism (db.model(table).create). It gives clear context for the write path but does not state when a collection is preferable to, say, a CMS file or product type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_global_sectionAInspect
Create a reusable global section (Header / Footer / shared block) the way the builder does: persists a global_section record AND embeds the same section node into page sources so it actually renders across the site (header → top of every page, footer → bottom). Build the section first with new_section (give it a real bg/padding + logo/menu/links), then pass it here. Two-step safety: dry_run=true (default) previews which pages change; dry_run=false performs the atomic save.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name in the editor (e.g. 'Header', 'Footer') | |
| type | Yes | header = top chrome (logo/nav/cart), footer = bottom chrome, section = reusable content block | |
| dry_run | No | Preview which pages would change (true) or perform the atomic save (false). | |
| section | No | A section node from new_section (object or JSON string) — the content of the header/footer. | |
| page_ids | No | Pages to embed into. Omit to apply to ALL pages of the site (typical for header/footer). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false, so the description carries most of the behavioral burden and delivers: it discloses the dual persist+embed side effect, the render consequence (header to top, footer to bottom), and the two-step dry_run safety model with an atomic save. This is substantial context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, followed by ordering and safety details. Dense but every clause is informative; the multi-line layout is slightly heavy but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-read-only, side-effecting write tool with no output schema and thin annotations, the description covers prerequisites, side effects, and the dry_run safety model. It falls just short of full completeness by not addressing failure behavior or permission requirements, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real value: it clarifies that the section param should be the node produced by new_section, that page_ids defaults to every page for header/footer, and that dry_run defaults to preview. These mappings go beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (create a reusable global section: Header/Footer/shared block) and explains the dual effect of persisting a record plus embedding into page sources. It clearly distinguishes this from siblings like new_section by presenting that tool as a prerequisite rather than an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to build the section first with new_section and then pass it here, and describes the dry_run preview-vs-commit workflow. It lacks an explicit contrast against ambiguous siblings such as add_section, but the when-to-use and ordering guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_global_sourceCInspect
Create a new global source component. Component types: "cart-droppable" (cart), "popup", or any custom type.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type variant (default: "default") | default |
| source | No | Source configuration (sections/elements JSON) | |
| component | Yes | Component type (e.g. "cart-droppable", "popup") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a mutation (readOnlyHint=false) that is not destructive, so the safety profile is covered. The description adds nothing beyond that: no auth/permission requirements, no idempotency or duplicate-handling behavior, no mention of what state the new source starts in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the verb and resource lead. Slightly redundant with the schema since the component examples are repeated rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create tool with full schema coverage and annotations covering the mutation profile, the description is minimally adequate. It still omits usage context and any post-creation behavior, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents 'type', 'source', and 'component'. The description repeats the component example values ('cart-droppable', 'popup') that the schema's component property already provides, adding no new meaning for 'source' or 'type'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new global source component'), which is clearly distinguishable from siblings like create_global_section or create_page. However, it never explicitly contrasts itself with adjacent tools (e.g., update_global_source, create_global_section), so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites, and no indication of what happens to an existing source with the same name. The component type list is domain data rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageAInspect
Create a new (empty) page. For a page with content use build_page instead. type is a KIND (main/store/member/blog/custom/error/maintain) mapped to the numeric backend type; pass seo so it doesn't publish with an empty title. ONE page per site for main (homepage) / error / maintain, and slugs are unique per site — a duplicate is refused with the existing page_id to edit instead; only 'custom' pages can be created over and over.
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | SEO → settings.seo (title/description/keyword/favicon/thumbnail). Tokens {{name_page}}/{{name_site}} allowed. | |
| name | Yes | Page name | |
| slug | Yes | URL slug WITHOUT a leading slash, e.g. 'about', 'collections', 'cart'. A leading '/' is stripped automatically (the storefront matches the bare path segment, so '/cart' would 404). Homepage needs no slug (pass is_homepage:true). | |
| type | No | Page kind (main/store/member/blog/custom/error/maintain). store/member/blog need their data-source flag enabled — prefer build_page which auto-enables it. main/error/maintain are one-per-site; use 'custom' for extra pages. | |
| is_homepage | No | Set as homepage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a write (readOnlyHint=false) and non-destructive, so the safety profile is covered. The description goes further by disclosing the duplicate-slug refusal behavior and that the error surfaces the existing page_id, plus the side effect of publishing with an empty title unless seo is passed. It stops short of describing permissions or the success return payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the build_page alternative are front-loaded, followed by constraints. Information-dense and mostly waste-free, though the parenthetical re-listing of the type enum slightly duplicates the schema and the final sentence is packed with three separate rules.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param mutation tool with no output schema, the description covers the routing decision, the uniqueness constraints, and the empty-title pitfall. Missing only auth/permission requirements and the shape of the success response, which an agent could reasonably want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real meaning beyond it: type is a KIND mapped to a numeric backend type, the slug uniqueness/one-per-site rules that govern valid values, and the consequence of omitting seo. That is genuine semantic enrichment, not repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new (empty) page') and immediately scopes it against the sibling build_page for pages with content. The agent can distinguish it from other page tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool and the condition that selects it ('For a page with content use build_page instead'), plus hard constraints: one page per site for main/error/maintain, unique slugs per site, and only 'custom' repeatable. This is when/when-not/alternatives in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productAInspect
Create a product so the storefront has real merchandise (grid-product / slider-product bindings need this). Simple use: pass name + price (+ images, category_ids). One default variation with the price/stock is created for you. Advanced use: pass attributes (e.g. Color/Size) + variations for a multi-SKU product. Images must be HOSTED URLs — get them from search_images or upload_images first. The backend generates id, slug and publishes the product. SEO: set it afterwards with update_product({ product_id, seo }).
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU / custom_id for the simple case (auto-generated if omitted) | |
| name | Yes | Product name | |
| price | No | Selling price (used when you don't pass variations). Required unless variations are given. | |
| stock | No | Stock quantity for the simple single-variation case | |
| images | No | Hosted image URLs (search_images/upload_images). First image becomes the product thumbnail. | |
| attributes | No | Variant axes, e.g. [{name:'Color',values:['Đen','Trắng']},{name:'Size',values:['S','M','L']}] | |
| variations | No | Explicit per-SKU variations. Omit to auto-build one from price/stock/sku. | |
| description | No | Full product description (HTML allowed) — binds to product::description on the detail page. | |
| category_ids | No | Product category IDs to file the product under (from create_product_category / list_categories) | |
| original_price | No | List/compare-at price for the simple single-variation case | |
| short_description | No | Short description / tagline (HTML allowed) — binds to product::short_description on cards + the detail page. Set this so cards aren't blank. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/non-destructive; the description adds real behavioral context the schema doesn't state: the backend auto-generates id and slug, auto-publishes, and synthesizes one default variation with the price/stock for the simple case. It does not cover permissions or error/rollback behavior, so it falls just 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the simple/advanced split, then constraints, then SEO follow-up in short labeled clauses; density is high and little is wasted. It runs slightly long with the SEO and images reminders, but each clause carries actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter create tool with no output schema, it covers the two viable calling patterns, required-vs-optional inputs, image sourcing prerequisite, and the auto-generation/publish side effects an agent must anticipate. Nothing essential to a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds the conditional relationship that price is only needed when variations are omitted and that images come specifically from search_images/upload_images. It clarifies the two mutually exclusive invocation shapes rather than just restating fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (create a product) and immediately differentiates itself from siblings by framing the simple vs advanced paths and pointing SEO changes at update_product. An agent can distinguish this from update_product, delete_product, and create_product_category without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly splits 'Simple use' (name + price + images + category_ids) from 'Advanced use' (attributes + variations), tells the agent to call search_images/upload_images first for hosted URLs, and routes SEO to update_product afterwards. Both the when and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_product_categoryAInspect
Create a product category (so grid-category / a category page has something to show, and products can be filed under it). Returns the new category id — pass it to create_product's category_ids. Image must be a hosted URL. SEO: set it afterwards with update_product_category({ id, seo }).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name | |
| image | No | Hosted image URL for the category card | |
| parent_id | No | Parent category id for a sub-category | |
| description | No | Category description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description still adds real context beyond that: it discloses that the call returns a new category id and how to consume it, plus the hosted-URL constraint on image. It does not mention auth requirements, uniqueness constraints on name, or failure behavior, keeping it shy 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and rationale, then the return-value contract and two constraints. The parenthetical explaining why a category is needed is slightly discursive but still earns its place as motivation; nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by stating what is returned (the new category id) and how downstream tools consume it. Combined with full schema coverage and non-destructive annotations, an agent has enough to call this correctly; only edge cases like duplicate names or error responses are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the 4 parameters is already documented, so the baseline is 3. The description's only parameter-level addition ('Image must be a hosted URL') restates the schema, and parent_id/description are never elaborated on, so it does not meaningfully exceed what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a product category') and immediately distinguishes it from sibling operations by naming the follow-up tools (create_product, update_product_category) and the domain it belongs to versus create_blog_category. An agent can identify this as the category-creation entry point without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit workflow routing: the returned id goes to create_product's category_ids, and SEO is set afterwards via update_product_category({ id, seo }). This tells the agent both when to call it and which sibling to use for the adjacent post-creation steps, rather than doing everything in one call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_siteAInspect
Create a brand-new storefront site for the current account, then (by default) switch to it and return an EMPTY, CLEAN site (no sample products/categories) ready for element composition. The backend auto-seeds off-theme sample products + categories (and a sample blog); by default this tool DELETES that seed right after creating the site (keep the non-deletable default "All" category) so you start from a blank, on-theme store. Pass keep_seed:true to keep the sample data. The site has NO pages — after this, compose a homepage from elements: get_build_guide → new_section/new_element → build_page (type:'main', is_homepage:true). Note: free accounts are limited to 4 sites (creation fails with a quota error past that).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name of the new site, e.g. 'My Coffee Shop' | |
| slug | Yes | URL-safe site slug (lowercase letters, digits, hyphens), e.g. 'my-coffee-shop'. Becomes the preview subdomain and must be unique. | |
| keep_seed | No | Keep the backend's sample products/categories/blog instead of auto-deleting them. Default false = start from a clean, empty site. | |
| switch_to | No | Switch the session to the new site after creating it (saved for next session). Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes well beyond by disclosing the backend auto-seed of sample products/categories/blog, the default deletion of that seed (retaining the non-deletable 'All' category), the session switch behavior, the absence of any pages, and the free-account 4-site quota failure. This is exactly the non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Reasonably front-loaded, leading with the create-and-switch action before the seeding nuance. It is information-dense and most sentences earn their place, though the parenthetical about the 'All' category and the step-by-step workflow add length that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explicitly states what is returned (an EMPTY, CLEAN site with no pages) and what the caller must do next to make it usable. For a creation tool with four parameters, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it explains the consequence of keep_seed:true (keep sample data) versus the default deletion, rather than merely restating the flag. It does not expand on name/slug syntax beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a brand-new storefront site for the current account') and immediately scopes it as an empty/clean site rather than a template-based one, which distinguishes it from the sibling create_site_from_template. An agent knows exactly what this produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (start from a blank on-theme store) and an explicit follow-on workflow (get_build_guide → new_section/new_element → build_page). It does not explicitly name create_site_from_template as the alternative for pre-populated sites, so the sibling routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_site_from_templateAInspect
Create a NEW site from a marketplace TEMPLATE (the dedicated "use this template" API). Clones the template's pages, global sections, cart, popups, styles and fonts into a fresh site. Pick a template with semantic_search_themes / list_template_themes, then pass its theme_id here. Switches to the new site so you can immediately edit layout/content with update_page_element(s), colours/fonts via the site-style tools, then publish_site.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new site | |
| slug | No | URL-safe slug for the new site (auto-generated if omitted) | |
| theme_id | Yes | Marketplace theme id (from semantic_search_themes / list_template_themes) | |
| switch_to | No | Switch the session to the new site after creating it (saved for next session) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: it discloses exactly what content is cloned into the fresh site and that the session switches to the new site so you can edit immediately. This is consistent with readOnlyHint=false / destructiveHint=false (additive, non-destructive creation) and enriches the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the core action, then prerequisites, then follow-on workflow. No filler; the cloning list is informative rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param, no-output-schema mutation tool with annotations present, the description covers prerequisites, side effects, and next steps. It could be slightly richer on what the call returns (e.g., the new site id), but it is well-rounded for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, slug, theme_id, and switch_to. The description reinforces theme_id's source and the switch behavior but adds little syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (create a NEW site from a marketplace TEMPLATE) and explicitly notes it is the dedicated 'use this template' API, distinguishing it from the sibling create_site. The cloning scope (pages, global sections, cart, popups, styles, fonts) makes the behavior concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly names the prerequisite discovery tools (semantic_search_themes / list_template_themes) and the ordering ('pick a template ... then pass its theme_id here'), plus follow-on steps (update_page_element(s), site-style tools, publish_site). It doesn't explicitly contrast with create_site for a blank site, so an explicit when-not is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_functionAInspect
Run JS code in debug mode (without deploying). Returns execution result and console logs
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Test parameters | |
| content | Yes | JS code to debug | |
| function_name | Yes | Function name to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, which is a thin signal, so the description carries most of the burden. It usefully discloses that nothing is deployed and that execution result plus console logs are returned, but says nothing about execution side effects, timeouts, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, zero filler, with the core action and the key constraint front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does briefly cover the return values (execution result and console logs). Parameters are fully documented in the schema, so the only minor gap is the lack of any note on execution semantics or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with three well-documented parameters (content, function_name, params), so the schema does the heavy lifting. The description adds no additional meaning about how content and function_name relate or how params are passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run JS code'), plus a scoping qualifier ('in debug mode, without deploying') and the return content. It is clear what the tool does, though it never names the closely related sibling run_function, so differentiation has to be inferred from 'without deploying'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(without deploying)' implies this is the safe, non-deploying counterpart to run_function, which is useful implied guidance. However, there is no explicit 'use this when.../use X instead' statement, so the agent must infer the routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_articleADestructiveInspect
Delete blog articles (soft delete — they disappear from the site)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Article ID | |
| ids | No | Several article IDs to delete in one call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds genuinely new context: this is a SOFT delete that merely removes articles from the site, implying the content survives server-side. That materially tempers an otherwise alarming destructive annotation. It stops short of 5 because it doesn't state whether the soft delete is reversible, how bulk deletes behave, or any confirmation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the most decision-relevant fact (soft delete) is placed immediately after the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter delete with no output schema and annotations carrying the safety profile, the description covers purpose and the key soft-delete nuance. It leaves minor gaps: reversibility of the soft delete and any confirmation step, but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both id and ids documented in the schema, so the baseline is 3. The description adds no syntax, ordering, or interaction detail between single and multiple delete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Delete") and resource ("blog articles"), which cleanly separates it from delete_page, delete_product, delete_collection and other delete siblings. The parenthetical narrows scope further. It does not explicitly contrast against siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative routing (e.g., delete_page for pages, or an archive tool for reversibility). The soft-delete note informs behavior but gives no guidance on choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionADestructiveInspect
Delete a collection (table) and all its records by id. Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | Collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the blast radius ('all its records', i.e., cascading data loss) and the irreversibility of the operation, which the annotations do not state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the destructive scope and irreversibility front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema and annotations covering the safety flags, the description is nearly sufficient. A note on confirmation requirements or whether deletion can be undone via restore would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single documented required parameter (collection_id), so the schema already carries the parameter semantics. The description only restates 'by id' and adds nothing about format or source of the id; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete), resource (collection/table), scope (all its records), and the identifying parameter (by id). It does not distinguish itself from the numerous sibling delete tools (delete_page, delete_product, delete_article, delete_global_section), but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over alternatives such as delete_page or delete_product, and no prerequisites or preconditions (e.g., confirm mode, ownership) are mentioned. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_global_sectionADestructiveInspect
Delete a global section (Header/Footer/block) and remove its node from every page source. Two-step safety: dry_run=true (default) shows which pages would change; dry_run=false performs the atomic save.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview (true) or perform the delete + page cleanup (false). | |
| section_id | Yes | The global section's section_id (the section node id) — from list_global_sections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=true; the description adds the crucial blast radius (the node is removed from every page source, not just one page) and that the save is atomic. It also explains the safe default of preview mode, which an agent needs to avoid accidental mass deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the destructive scope front-loaded and the safety workflow second. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 2-param tool with no output schema, the description covers the main risks: cascade scope, atomicity, and preview-first default. It omits whether the operation is reversible/undoable and any permission prerequisites, which would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds concrete meaning to dry_run by explaining what the preview actually returns (which pages would change) and that false performs the atomic save. section_id gets no extra detail beyond the schema's pointer to list_global_sections.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (global section, clarified as Header/Footer/block) plus the cascading scope 'remove its node from every page source'. This distinguishes it from nearby siblings like delete_page and delete_global_source, which operate on different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly documents the intended two-step workflow: dry_run=true (default) previews which pages change, dry_run=false commits the delete. It does not explicitly compare against alternatives (e.g., removing a section via page-level edits), so it stops just short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_global_sourceBDestructiveInspect
Delete a global source and its published version
| Name | Required | Description | Default |
|---|---|---|---|
| global_source_id | Yes | Global source ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description contributes one genuinely useful behavioral fact beyond that: deletion cascades to the published version. It stops short of stating irreversibility or any permission requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single nine-word sentence with the destructive verb front-loaded and no filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations carrying the safety profile and no output schema to explain, the description covers the essential cascade effect. What remains missing is modest: irreversibility/recovery and whether the target must be in a particular state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, so the schema fully documents global_source_id. The description adds no format, naming, or ID-sourcing detail beyond what the schema already says, which is the baseline case for a fully documented single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) plus resource (global source) and adds scope detail that the resource's published version goes with it. This distinguishes it from get_global_source_detail / update_global_source, though it never explicitly contrasts with the similarly named delete_global_section sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., must the source be unpublished first?), and no reference to alternatives such as unpublishing/updating instead. The agent must infer the occasion entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageCDestructiveInspect
Delete a page
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds nothing beyond that - it never states that deletion is irreversible, whether child pages/elements are removed, or what happens to drafts, which is the information an agent would actually need beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single three-word phrase with zero filler is maximally front-loaded, but it is under-specified rather than genuinely concise - there is no second sentence earning its place by adding the destructive semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, likely irreversible operation with no output schema and no annotations describing consequences, the description should at minimum warn about permanence and side effects. The safety annotation covers the hint flag, but the operational consequences of calling it are left entirely unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single page_id parameter is documented as "Page ID to delete" in the schema, so the baseline of 3 applies. The description adds no format, source, or lookup guidance for the ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Delete a page" names a specific verb and resource, so the basic purpose is legible, but it offers no scope detail (permanent vs. draft, cascading effects) and does nothing to distinguish itself from the many sibling delete tools such as delete_article, delete_product, or delete_global_section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what preconditions must hold, or which alternatives exist (e.g., clear_page_draft or delete_global_section). The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_productBDestructiveInspect
Delete one or more products by id.
| Name | Required | Description | Default |
|---|---|---|---|
| product_ids | Yes | Product ids to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the bar is lower. The description adds only the batch-capability detail; it does not disclose whether deletion is permanent or reversible, what happens to related records (orders, categories), or what confirmation/authorization is required for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the verb and resource with zero filler. There is nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering the safety profile, the description is minimally viable. It omits the consequences an agent needs to act responsibly (permanence, cascading effects, batch partial-failure behavior), which matters more here than for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single self-documented array parameter, so the schema carries the semantics. The description's 'one or more' and 'by id' merely restate the array-of-ids shape without adding format, limit, or partial-failure behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (products) with the identifier basis (by id), and the phrase 'one or more' signals batch semantics that distinguish it from single-item paths. It doesn't name a sibling to contrast against (e.g., delete_product_category), but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g., required permissions, whether the product must be unpublished first), and no mention of alternatives such as update_product or set_product_published. An agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_product_categoryBDestructiveInspect
Delete one or more product categories by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Category ids to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is conveyed structurally. The description adds that multiple ids can be deleted in one call, but omits what happens to products assigned to a deleted category, whether the operation is reversible, or whether partial failures are possible — meaningful gaps for a destructive batch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eleven-word sentence that front-loads the verb and resource with no filler. Nothing is wasted, though it is so terse that it also fails to carry usage or behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage and destructive annotations, the essentials are present. What is missing is the domain consequence of deletion (cascade vs. rejection when products reference the category), which an agent would want before calling a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'ids' parameter is documented as 'Category ids to delete'. The description's 'by id' phrasing is consistent but adds no format, limit, or ordering detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('Delete ... product categories') and adds scope detail ('one or more', 'by id'), so an agent knows it is a batch delete keyed on category ids. It does not distinguish itself from siblings like delete_product, delete_collection, or delete_blog_category, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus delete_blog_category or update_product_category, and no mention of prerequisites such as confirming the categories are empty or that deletion is permanent. Usage must be entirely inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_http_functionAInspect
Edit the HTTP function file by function name — best for targeted changes (fix a bug, rename, add one function). For writing multiple new functions or major refactors, use update_http_function with full content instead. Actions:
"replace_function": replace an ENTIRE function by name with new code. Server finds function boundaries automatically.
"add": append new function code at end of file.
"remove": remove a function by name.
"update_imports": replace the import block (lines before first export). Returns updated function list after edit.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | New function code (for replace_function and add) or new import block (for update_imports) | |
| action | Yes | Edit action | |
| function_name | No | Target function name (for replace_function and remove) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, confirming mutation. The description adds real behavior beyond that: replace_function replaces the entire function and the server finds boundaries automatically, add appends at end of file, remove deletes a function, update_imports targets lines before the first export, and the return value is the updated function list. It does not mention whether edits are reversible or versioned, which is a minor gap for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the sibling comparison before the action breakdown. The bulleted action list is scannable and each line earns its place, though the total length is on the longer side.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly states the return value (updated function list). It covers all four actions, param pairing, and the sibling alternative. Safety/undo semantics for the destructive remove/replace paths are the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents action, code, and function_name. The description restates the param-to-action pairing in prose but adds little syntax or constraint detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (edit), resource (HTTP function file), and scope (by function name), then immediately distinguishes itself from update_http_function. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names when to use this tool (targeted changes: fix a bug, rename, add one function) and the alternative for the opposite case (multiple new functions or refactors → update_http_function with full content). The action list further clarifies per-mode usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_customerCRead-onlyInspect
Find a customer by ID, phone number, or email
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Search field | |
| value | Yes | Search value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds nothing behavioral beyond that: it does not say whether a missing customer errors or returns empty, whether ID/phone/email matching is exact, or whether multiple matches are possible. With no output schema, that gap matters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the lookup keys are listed immediately after the verb. It is efficient, though thin rather than deliberately minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and a safety annotation, the description is minimally sufficient. It leaves unaddressed the key behavioral question an agent faces: what a lookup returns when nothing matches or when phone/email formats vary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 'by' enum documents the three accepted fields, so the schema does the heavy lifting. The description merely restates those same keys without adding format or matching-semantics detail, which is baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as list_customers for browsing or a search tool. The agent must infer that this is a single-record exact-match lookup rather than a filtered list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_promotionsARead-onlyInspect
Get all currently active promotions (is_activated=true and within start_time/end_time range)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's main added value is operationalizing 'active' as is_activated=true plus a start/end time window, which prevents a misread of the filter. It says nothing about return volume, ordering, or pagination for what could be a large set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the resource and the defining filter front-loaded; there is no filler and nothing that could be cut without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read with no output schema and a one-line annotation, the description supplies the one thing that matters: what 'active' means. Missing only secondary details such as result ordering or whether results are capped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to convey; the schema is empty and nothing in the description contradicts it. Baseline 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('promotions') and pins down the scope with the parenthetical definition of 'active' (is_activated=true and within start_time/end_time). This implicitly separates it from sibling readers like list_promotions, search_promotions, and get_promotion, though none of those siblings are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'currently active' predicate implies when to reach for this tool versus an unfiltered listing, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. Usage must be inferred from the scope qualifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appARead-onlyInspect
Get one installed app by its type code (returns null if not installed). App type codes: 0=product_review, 1=articles_review, 2=automation, 3=telegram, 4=affiliates, 5=multilingual, 6=appointment, 7=send_email, 8=botcake, 9=sale_channel, 10=product_design, 11=auth_otp, 12=personal_product_design, 14=course, 15=zalo_mini_app, 16=cms, 17=recaptcha, 18=pwa. You may pass the number or the name.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | App type — a code (e.g. 2) or a name (e.g. "automation"). Codes: 0=product_review, 1=articles_review, 2=automation, 3=telegram, 4=affiliates, 5=multilingual, 6=appointment, 7=send_email, 8=botcake, 9=sale_channel, 10=product_design, 11=auth_otp, 12=personal_product_design, 14=course, 15=zalo_mini_app, 16=cms, 17=recaptcha, 18=pwa |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds a genuinely useful behavioral detail beyond that: it returns null when the app is not installed, and that the type argument accepts either the numeric code or the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded, but the 18-item code enumeration is fully duplicated from the schema's parameter description, making the bulk of the text redundant rather than informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only getter with full schema coverage and no output schema, the description covers purpose, the not-installed null case, and accepted input forms. Only the shape of a successful app object is left unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's description already lists every code. The description's code list and the 'number or name' note merely duplicate the schema, adding no meaning the schema does not already carry. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one installed app') with singular scope that cleanly separates it from list_apps, install_app, uninstall_app, and update_app. An agent can pick the correct sibling without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool returns but never says when to reach for it over list_apps, nor any prerequisite (e.g. installed state, site/workspace context). No when/when-not guidance and no named alternative are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleBRead-onlyInspect
Get article details by ID (includes the full HTML content)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Article ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safe-read profile, and the parenthetical adds genuinely useful context that the response carries full HTML content (volume/payload expectations). It stops short of permission needs, content-size caveats, or error behavior for missing IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence, front-loaded with the action and resource, with the payload note in a parenthetical rather than padding. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotation-backed safety and no output schema, the description covers action, identifier, and what comes back. Only a brief note on when to prefer it over list_articles would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented in the schema as 'Article ID'. The description's 'by ID' simply echoes that; no format, type, or resolution details are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: retrieves a single article by ID, and clarifies the payload includes full HTML. It is easily distinguished from list_articles/create_article/update_article by name, but the description itself does not name those siblings or contrast scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_articles or search alternatives, no prerequisites, and no exclusions. The agent must infer that this is the single-record fetch from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_guideARead-onlyInspect
Get the BuilderX page authoring guide: page shape, the grid layout model, styling, breakpoints, forms/data, and the build workflow. Read this before building or heavily editing a page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe, non-mutating read. The description adds the useful prerequisite framing ('read this before building'), but says nothing about whether the guide is static or reflects current site state, how large the payload is, or whether it should be re-read per session. Adequate, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first defines scope by content type, the second states the triggering condition. The prerequisite instruction is front-loaded after the scope statement with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only documentation fetch with no output schema, the description covers what an agent needs: what the guide contains and when to fetch it. Minor residual gap is whether the content is site-specific or generic, but nothing required to select and call the tool is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter meaning for the description to add. Nothing is missing or misleading on this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the BuilderX page authoring guide') and then enumerates the exact subject matter covered: page shape, grid layout model, styling, breakpoints, forms/data, build workflow. An agent can distinguish this from sibling guide/inspection tools like get_intake_guide or get_page_schema without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: 'Read this before building or heavily editing a page,' which ties invocation to a concrete task state. It stops short of naming alternatives or stating when it is unnecessary (e.g., for light edits), so it is clear context rather than a full decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionBRead-onlyInspect
Get a specific collection's details including full schema (field names, types, constraints, references) and records
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safe-read profile, so the description gets a lower bar. It usefully discloses the response content (full schema plus records), which is real added value, but omits that records may be returned unbounded/unpaginated and says nothing about behavior when the id does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the head verb and resource first, followed by the payload contents. The parenthetical enumeration is slightly dense but every element earns its place by telling the agent what comes back.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by listing the schema facets and records. What is missing is scale/volume behavior for the records portion and error behavior for an invalid id, which would matter for an agent fetching a record-bearing collection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents 'Collection ID' fully. The description adds no format hints (e.g., slug vs numeric id) beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a specific collection') and enumerates what the payload contains (schema fields, types, constraints, references, plus records). This clearly separates it from create_collection/update_collection_columns, but it never names or contrasts with the closest siblings list_collections and query_collection_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as list_collections (for enumeration) or query_collection_records (for filtered record retrieval). The agent must infer from the name that this is the 'one collection by id' lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_combo_itemsBRead-onlyInspect
Get items (products/variations) and bonus products that compose a combo. Returns combo_items (required items with count) and bonus_items (free gifts)
| Name | Required | Description | Default |
|---|---|---|---|
| combo_product_id | Yes | Combo product ID | |
| is_variation_bonus | No | Whether bonus items are variation-based |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description goes further by naming the two return groups (combo_items with counts, bonus_items as free gifts), which is useful since no output schema exists, but it says nothing about pagination, empty results, or error behavior for an invalid combo ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, return shape stated up front, zero filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description covers what is fetched and the shape of the response, which is enough for correct invocation. Minor gaps remain around the is_variation_bonus effect and empty/error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two params, so the schema already documents combo_product_id and is_variation_bonus. The description adds no syntax, format, or semantics beyond the implied combo linkage, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (items/bonus products composing a combo), and clarifies that it returns the components of a combo rather than the combos themselves. It is distinguishable from list_combos, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what is fetched but gives no when-to-use, no prerequisite framing (e.g. 'given a combo_product_id from list_combos'), and no guidance on choosing this over list_combos or get_product. Usage is only inferable from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_contextARead-onlyInspect
Show current connection context: which site_id, API URL, session, and account info. Call this first to confirm you're working on the right site
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true the safety profile is already covered, so the bar is lower, and the description still adds real value by disclosing the four pieces of state it surfaces (site_id, API URL, session, account). This is meaningful because there is no output schema, so the description is the only signal about what comes back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste: the first defines the payload, the second gives the ordering advice. The most actionable instruction ('call this first') is placed where it will be read immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only, no-output-schema tool, the description covers the essentials: what it returns and when to call it. The exact shape of the returned payload (field names, nesting) is still unspecified, but that is a minor gap given the tool's diagnostic nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about arguments, and it correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Show') and resource ('current connection context') and enumerates exactly what that context contains: site_id, API URL, session, and account info. This is far more specific than a tautology, though it never names or contrasts with adjacent siblings like get_site_info or list_my_sites, which also touch on site identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first to confirm you're working on the right site' gives an explicit sequencing directive and the goal that motivates the call, which is exactly what an agent needs before mutating a site. It does not state when *not* to use it or point at alternatives, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_elementARead-onlyInspect
Get the full detail of an element type: category, container flag, summary, an ATTRIBUTES reference (the meaningful specials/config keys + their purpose/allowed values, events, and dataset binding targets), and a live skeleton node (the authoritative default shape) you can copy and edit. Read this before authoring/editing an element so you set the right keys.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Element type, e.g. 'text', 'button', 'grid-product' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so safety is covered. The description goes beyond that by disclosing the shape and intent of what it returns (an authoritative default skeleton you can copy and edit, plus meaningful config keys and allowed values), which materially helps the agent use the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler: the first lists the return contents, the second states the usage rule. Slightly dense parenthetical enumeration, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does it well by naming the constituent parts (category, container flag, ATTRIBUTES, skeleton node). It is nearly complete for a single-param reference lookup; only minor details like pagination or size limits are absent, which are unlikely to matter here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'type' parameter is documented with examples ('text', 'button', 'grid-product'). The description reinforces 'element type' but adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get the full detail of an element type') and enumerates exactly what is returned: category, container flag, summary, ATTRIBUTES reference, and a live skeleton node. This clearly distinguishes it from list_elements (enumeration) and get_page_element (an instance on a page).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to use it: 'Read this before authoring/editing an element so you set the right keys.' That is a clear usage context, though it does not name an alternative tool or state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_versionsARead-onlyInspect
View version history of a CMS file. Each version includes its saved content — to restore, pass that content back to update_http_function (the http_function file) or update_cms_file, or use restore_file_version.
| Name | Required | Description | Default |
|---|---|---|---|
| cms_file_id | Yes | CMS file ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds genuinely useful context: each version carries its saved content, and that content is what gets fed back to mutation tools. The caveat that update_http_function applies specifically to the http_function file is a helpful non-obvious detail. It stops short of describing ordering or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the tool's function leads and the actionable restore path follows. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by explaining what a version contains (its saved content). Combined with the restore routing, an agent has enough to call it and act on results; only return ordering/shape details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema fully documents cms_file_id. The description adds no format, ID-source, or filtering detail beyond it, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('View version history of a CMS file'), which an agent can distinguish from sibling tools like get_page_versions or save_file_version. It never explicitly contrasts itself with those siblings, but the resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear follow-up workflow: to restore, pass the version's saved content to update_http_function (for the http_function file) or update_cms_file, or call restore_file_version. This effectively tells the agent when to use each downstream alternative, though it doesn't state when this tool itself should be preferred over other history/inspection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_sectionARead-onlyInspect
Get one global section as a COMPACT tree (3-5x fewer tokens than raw JSON). Each line: ID [type] "text" .class [Nbind] [Nev] (children_count). Use this to learn how a real Header/Footer/block is composed before building your own.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | Return the FULL raw section JSON (large) instead of the compact tree — delivered via the large-result cache so you can split-read it with read_cached_result. | |
| global_section_id | Yes | Global section ID (from list_global_sections) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description adds real value: it discloses the compact-tree output shape, the per-line format, and the 3-5x token saving versus raw JSON. It does not cover pagination or limits, but explains the tradeoff against the raw option.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with purpose then format then recommended use. Every sentence earns its place, including the dense but purpose-relevant line-format legend.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly shoulders the burden of describing the return format via the per-line legend, and the raw parameter is covered in the schema. Complete enough for an agent to call it, though edge cases like empty sections or very large trees are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both global_section_id and raw fully documented in the schema, so the baseline is 3. The description's mention of the compact format does not add syntax or meaning beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get), a singular resource (one global section), and the output representation (COMPACT tree), which cleanly distinguishes it from the sibling list_global_sections. An agent can tell what it returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names a use case — 'learn how a real Header/Footer/block is composed before building your own' — which routes the agent toward the tool for pre-build reference. It does not state when NOT to use it or name a direct alternative, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_section_elementARead-onlyInspect
Get full detail (style, config, specials, events, bindings, responsive bp1..bp4, children IDs) of a single element inside a global section.
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes | Element ID (e.g. 'MENU-1', 'TEXT-3') | |
| global_section_id | Yes | Global section ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered; the description adds genuine value by disclosing the returned payload categories (style, config, specials, events, bindings, responsive bp1..bp4, children IDs). It does not cover pagination or auth, but for a read-only fetcher this is solid disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the enumerated detail is the information an agent needs and every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description's field enumeration is important and largely compensates by telling the agent what is returned. It is nearly complete for a two-param read tool, missing only pagination/error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents both IDs, including the element_id format example ('MENU-1'). The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get full detail') and resource ('a single element inside a global section'), and the parenthetical enumerates the exact fields returned. It implicitly distinguishes from get_global_section (whole section) and search_global_section_elements (search), but does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'of a single element inside a global section' implies when this is used (retrieving one element by ID), but there is no explicit when-to-use/when-not guidance or named alternative such as search_global_section_elements for discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_source_contentsBRead-onlyInspect
Get multilingual contents for global sources by component type
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | Component type (e.g. "cart-droppable", "popup") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's contribution is limited to confirming it returns multilingual content. It says nothing about return shape, pagination, or whether missing components yield empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is terse to the point of being a fragment, but nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with annotations and no output schema, the definition is adequate but thin: it doesn't describe the structure or scope of the 'multilingual contents' returned, which the absent output schema leaves undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single well-documented 'component' parameter including examples, so the schema carries the semantics. The description's 'by component type' adds only marginal meaning beyond it; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource+scope: 'Get multilingual contents for global sources by component type'. This distinguishes it from most siblings, though it doesn't clarify how it differs from close relatives like get_global_source_detail or update_global_source_contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and does not name any alternative among the many global-source siblings. The agent must infer its role purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_source_detailARead-onlyInspect
Get full detail of a global source — compact tree view showing all elements. Each line: ID [type] "text" .class [events] [bindings] (children_count). Provide component for faster lookup; omit if you already called list_global_sources.
| Name | Required | Description | Default |
|---|---|---|---|
| component | No | Component hint for faster lookup (e.g. "popup", "cart-droppable") | |
| global_source_id | Yes | Global source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description goes beyond that by disclosing the exact return format ("ID [type] text .class [events] [bindings] (children_count)"), which is valuable since there is no output schema. It still does not mention size limits or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose before the output-format details. The dense line-format string earns its place by describing the return shape, though it is harder to parse than a short prose summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by explaining the tree line format; annotations cover safety and the schema covers both params. An agent has enough to call it correctly, though the relationship to get_global_source_contents remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already explains the component hint, so the baseline is 3. The description adds the marginal insight that component can be omitted after calling list_global_sources, but does not enrich global_source_id beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get full detail of a global source") and even describes the output shape (compact tree view of all elements). It does not differentiate from the close sibling get_global_source_contents, which sounds like it could return similar detail, so sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Provide component for faster lookup; omit if you already called list_global_sources" gives one actionable condition tied to a sibling, but it is guidance about a parameter rather than when to choose this tool over alternatives like get_global_source_contents. Usage is implied rather than explicitly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_source_elementBRead-onlyInspect
Get full detail of a single element (style, config, specials, events, bindings, responsive, children).
| Name | Required | Description | Default |
|---|---|---|---|
| component | No | Component hint for faster lookup | |
| element_id | Yes | Element ID (e.g. 'TEXT-3', 'BUTTON-1') | |
| global_source_id | Yes | Global source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the useful detail of which facets are returned, but says nothing about permissions, lookup cost, or what happens when an element ID is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the parenthetical enumeration is dense and directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description's enumeration of returned fields carries meaningful weight, and annotations cover the safety profile. It is complete enough for a low-complexity read tool, though error/empty-result behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only 3 parameters, so the schema already documents global_source_id, element_id, and the optional component hint. The description adds no additional meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (full detail of a single element in a global source), and enumerates the returned facets (style, config, specials, events, bindings, responsive, children), which clearly separates it from the plural 'search_global_source_elements'. It does not name a sibling explicitly, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance. The word 'single' implicitly contrasts with the search_global_source_elements sibling and get_global_source_detail, but the agent must infer that routing decision from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_http_functionARead-onlyInspect
Get the main HTTP function file. Choose the right mode for your task:
overview=true: function names + line ranges only, NO code body. Use for: browsing, understanding structure, finding which function to read.
overview=false (DEFAULT): full code + collection schemas. Use for: writing new features, refactoring, understanding full context. Tip: for small fixes, use overview first then get_http_function_snippet to read just that function. Add include_guide=true on first call to get the coding guide
| Name | Required | Description | Default |
|---|---|---|---|
| overview | No | true=function list only, false=full code (default) | |
| include_guide | No | Include coding guide (only needed once) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true; the description adds real behavioral context by disclosing exactly what each mode returns (names + line ranges vs. full code + collection schemas) and which mode is default. It doesn't mention permissions or rate limits, but for a read-only getter the return-shape disclosure is the salient behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then uses bullets to separate the two modes, followed by a tip and guide flag. No sentence is wasted and the structure matches how an agent would reason about the choices.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully — it spells out the return content of both modes. Combined with complete parameter and mode guidance and a sibling pointer, the definition is sufficient to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes well beyond the terse schema text ('true=function list only, false=full code'). It explains what overview actually returns, notes the default, and describes include_guide's one-time nature, materially enriching both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the main HTTP function file') and immediately differentiates itself from the sibling get_http_function_snippet, which it names. An agent can distinguish it from the many other 'get_*' tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly maps each mode to a task: overview=true for browsing/structure discovery, overview=false for writing/refactoring. It also names the alternative (get_http_function_snippet) and the condition (small fixes) that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_http_function_snippetARead-onlyInspect
Read specific function(s) by name. Much more token-efficient than reading the full file
| Name | Required | Description | Default |
|---|---|---|---|
| function_names | Yes | Function names (e.g. ['get_Products', 'post_CreateOrder']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, and the description's 'Read specific function(s)' is consistent with that. The additional token-efficiency statement is useful behavioral context, but the description does not disclose return format, auth needs, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The main action is front-loaded and the token-efficiency benefit is stated immediately after, making the description easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one well-documented parameter and readOnlyHint annotations, the description is nearly complete enough to select and invoke correctly. It could mention the return shape since there is no output schema, but that omission is minor for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single function_names parameter is already well documented in the schema with an example. The description's phrase 'by name' adds minimal meaning beyond the schema, so the baseline of 3 applies when the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read specific function(s) by name.' It also distinguishes itself from reading the full file, which helps separate it from broader file-read siblings. It does not name the sibling tool get_http_function directly, so it is clear but not fully differentiated by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context by saying it is much more token-efficient than reading the full file, implying use it when only specific functions are needed. It does not explicitly name the alternative tool or state when not to use this tool, so guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intake_guideARead-onlyInspect
Get the INTAKE questionnaire + build flow to run BEFORE creating a new site/store/page. Call this at the start of any fresh build: ask the user this one short batch (plain words, with defaults), restate the plan, get a yes, THEN build. Skip only for tiny edits, data questions, or when the user already gave the brief / says 'just do it'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, and the description is consistent with that (fetching a guide mutates nothing). It adds genuine behavioral context beyond the annotation: what the tool returns (questionnaire + build flow) and how it fits the workflow. It stops short of describing format or size of the returned guide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the core action is front-loaded and the skip conditions follow immediately. Every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden and does state what is returned (questionnaire + build flow) and the workflow it drives. Minor gap: it does not clarify the relationship to get_build_guide, a plausible sibling that could be confused with it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 per the rubric. There is nothing parameter-wise for the description to compensate for, and it correctly implies no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Get the INTAKE questionnaire + build flow') with a clear temporal scope ('to run BEFORE creating a new site/store/page'). It is distinguishable from build-time siblings, though it does not explicitly name alternatives like get_build_guide, so differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call it ('at the start of any fresh build'), the exact procedure (ask one short batch, restate plan, get a yes, then build), and the exclusions ('Skip only for tiny edits, data questions, or when the user already gave the brief / says just do it'). This is a textbook when/when-not definition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-onlyInspect
Get full order details by ID: customer info, items, payment, shipping, discounts, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description usefully discloses the breadth of returned data (customer info, items, payment, shipping, discounts), but says nothing about authorization requirements, not-found behavior, or pagination, keeping it at a baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the core action and then maps out the return contents. No filler, though the trailing 'etc.' slightly weakens the enumeration's precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry return-value meaning – and it does, listing the major fields returned. For a one-parameter read tool this is close to complete, with the only gap being the vague 'etc.'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented as 'Order ID'. The description adds no format or syntax detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('order details') scoped by ID, and enumerates the returned sub-resources (customer, items, payment, shipping, discounts). It implicitly distinguishes itself from the singular/plural sibling list_orders via 'by ID', but never explicitly contrasts the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'by ID' – an agent infers it applies when an order ID is known. There is no explicit when-to-use, when-not-to-use, or reference to alternatives such as list_orders or count_orders_by_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_draftARead-onlyInspect
Inspect a local page draft: its meta, the section ids, total section count, and (if a commit is in progress) the page_id + committed_count.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | Draft id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the bar is lower; the description still adds real value by disclosing the conditional output shape (page_id + committed_count appear only when a commit is in progress). It doesn't mention auth or rate limits, but the read-only nature and conditional return are well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the enumerated fields follow the verb and the conditional clause is placed last, which is exactly where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-param tool with no output schema, the description usefully enumerates the returned fields and their conditional nature, so an agent knows what to expect. Only the absence of routing guidance to sibling draft tools keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single draft_id parameter documented as 'Draft id', so the schema carries the burden. The description's phrase 'a local page draft' implies the id refers to a local (not published) draft but adds no format or sourcing detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inspect') and resource ('a local page draft') and enumerates the concrete data returned (meta, section ids, section count, and commit progress fields). This clearly separates it from list_page_drafts (plural listing) and commit_page_draft, though it never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool returns but gives no when-to-use or when-not-to-use guidance, and never names alternatives like list_page_drafts or get_page_source. The parenthetical about an in-progress commit hints at context but is not an actionable usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_elementARead-onlyInspect
Get full detail of a single element by its ID (e.g. 'TEXT-3', 'BUTTON-1', 'SECTION-2'). Returns style, config, specials, events, bindings, responsive, and children IDs
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page ID | |
| element_id | Yes | Element ID (e.g. 'TEXT-3', 'BUTTON-1') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read, so the bar is lower. The description adds real value by enumerating the returned facets (style, config, specials, events, bindings, responsive, children IDs), which is the main behavioral context an agent needs here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and zero filler. The return-field list is compact and earns its place given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by summarizing what is returned. Combined with readOnlyHint and full param coverage, an agent has enough to invoke it correctly, though the missing sibling disambiguation is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are fully documented, so baseline 3 applies. The ID examples in the description largely duplicate the examples already present in the element_id schema field, adding little beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get full detail') and resource ('a single element by its ID') with concrete ID examples ('TEXT-3', 'BUTTON-1'). It is distinguishable from list_elements/search_page_elements, though it never names the near-identical sibling get_element to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by saying it fetches full detail for a single element when you have its ID. There is no explicit when-to-use/when-not guidance and no mention of alternatives such as get_element or list_elements, despite several highly similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_schemaARead-onlyInspect
Get the authoritative JSON Schema (Draft 2020-12) for a page source { sections: [...] } — the structural contract for every node (id/type/specials/runtime{style,config}/children/events/bindings) in the CSS-grid model. Use it as the shape to emit; validate_page enforces the semantic rules.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds genuinely beyond that: it characterizes the return as the authoritative contract, names the draft version, and enumerates the node fields (id/type/specials/runtime{style,config}/children/events/bindings) in the CSS-grid model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action and resource before the contract details and the validate_page pointer. The parenthetical field list is information-rich rather than filler, though it slightly burdens the sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of conveying the return value, and it does so by describing the schema shape and its node fields. For a zero-param read tool this is close to complete, with only the draft/version dependency left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument fetch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource (the authoritative JSON Schema for a page source), and scopes it precisely as the Draft 2020-12 structural contract. It contrasts cleanly with sibling validate_page, which the agent can distinguish without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent how to apply the result ('Use it as the shape to emit') and names the complementary alternative validate_page with its distinct role (semantic rule enforcement). No explicit 'when not to use' is given, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_sourceARead-onlyInspect
Get page source overview: section count, element type counts, and all custom CSS classes. Use this first, then use search_page_elements to find specific elements
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful behavioral context by specifying what data the overview returns (counts plus custom CSS classes), which tells the agent what to expect without a formal output schema. It omits pagination or rate-limit behavior, keeping it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the useful scoping and return-content information is front-loaded, and the routing guidance follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by listing what the response contains, and the annotation covers the read-only safety profile. It is nearly complete for a one-parameter read tool, though it stops short of describing the response's structure or shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single page_id parameter is already documented by the schema. The description adds no syntax or format meaning beyond the schema, matching the baseline 3 when schema fields do the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get page source overview') and enumerates the exact return contents (section count, element type counts, custom CSS classes). It explicitly distinguishes itself from the sibling search_page_elements, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes an order: 'Use this first, then use search_page_elements to find specific elements.' This names the alternative and the condition that selects it. However, it does not mention other plausible alternatives such as get_page_schema or list_page_contents, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_versionsCRead-onlyInspect
View version history of a page
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Page ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so safety is covered externally. The description adds nothing beyond that: no pagination or result-limit behavior, no ordering (newest-first?), no indication of whether the current live version is included, and no note about how many versions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification rather than true economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotations covering safety, this is roughly adequate. Because there is no output schema, the description should have hinted at the returned structure (version identifiers, ordering), which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single required parameter page_id with 100% schema description coverage, so the schema already documents it. Baseline 3 applies; the description contributes no extra meaning such as ID format or how to obtain a page_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'View version history of a page.' The 'page' qualifier implicitly separates it from get_file_versions and save_file_version, but it never explicitly names or contrasts those siblings, and it doesn't say what 'version history' contains (IDs, timestamps, authors).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no alternatives offered. An agent cannot tell from this text whether it should call get_page_versions, get_page_source, or list_page_drafts to inspect a page's prior states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyInspect
Get full product details by ID: name, description, price, variations, images, attributes, SEO, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read operation, so the description's main added value is listing the returned fields. It adds useful detail about what data comes back but does not cover error behavior, permissions, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, then efficiently listing returned fields. It is appropriately sized for a simple lookup tool and contains no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage and a readOnlyHint, the description supplies enough context. It gives a useful field list despite no output schema, though the 'etc.' leaves the return shape slightly open-ended.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter is already documented as 'Product ID' in the schema. The description's 'by ID' adds no new syntax or format details beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('get product') and explicitly scopes it to 'by ID', which distinguishes it from list_products and search_products. It also enumerates the returned fields, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the tool is for when the agent already has a product ID, but there is no explicit guidance on when to prefer it over siblings like list_products or search_products. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotionARead-onlyInspect
Get full promotion details by ID: name, type, schedule, discount rules, coupon settings, items, bonus products, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Promotion ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, so the description only needs to add context. It adds value by enumerating what the record contains, but says nothing about behavior on an unknown/invalid ID, auth requirements, or payload size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact, front-loaded sentence with no preamble. The trailing 'etc.' slightly weakens the otherwise precise field enumeration, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields so an agent knows what to expect. For a simple one-parameter read tool this is largely sufficient; only error/auth behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already carries the semantics; the description's 'by ID' merely restates it. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get full promotion details by ID') and enumerates the payload (name, type, schedule, discount rules, coupon settings, items, bonus products). It clearly distinguishes a single-record fetch from the list/search siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by ID' – call it when you already have a promotion ID. There is no explicit when-to-use or when-not-to-use guidance, and the closely related siblings (get_active_promotions, search_promotions, list_promotions) are not referenced for disambiguation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotion_itemsARead-onlyInspect
Get products/variations/categories attached to a promotion. Returns items with discount details (fixed_prices, level_info, coupon_item_info)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Promotion ID | |
| page | No | Page number | |
| limit | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful context about the returned item structure, mentioning fixed_prices, level_info, and coupon_item_info, but does not describe pagination behavior or whether there are any rate or auth constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action and scope are front-loaded, and the parenthetical return detail is compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a simple schema and no output schema, the description is almost complete: it explains what is retrieved and names key return fields. Minor missing detail about pagination or response shape keeps it from being fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, page, and limit. The description adds no additional syntax, format, or constraints beyond indicating that id refers to a promotion. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting products, variations, or categories attached to a promotion. It also names the kind of data returned (discount details), which clearly distinguishes it from sibling promotion tools like get_promotion or list_promotions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description—use this when you need items attached to a promotion—but there is no explicit guidance about when to choose this tool over get_promotion, get_active_promotions, or search_promotions. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_custom_codeARead-onlyInspect
Get custom code of the site (CSS/JS). Two modes:
Default: returns ALL 4 code fields (full content)
With field filter: returns only the specified field(s) — saves tokens when you only need CSS or JS Add include_guide=true on first call to get the coding guide
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Only return specific fields (e.g. ['code_custom_css']). Omit to get all 4 fields | |
| include_guide | No | Include the custom code coding guide (only needed on first call) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safe-read profile, and the description adds behavioral detail beyond that: the default returns ALL 4 fields in full, filtering reduces payload, and the guide is a first-call-only artifact. It omits anything about response size limits or ordering, which keeps it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by a compact two-mode breakdown and a single advisory line. Efficient and scannable, with only mild redundancy between the bullet text and the parameter schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, zero-required, read-only tool with no output schema, the description covers the mode selection and the optional guide flag adequately. An agent can call it correctly on the first try; only the shape of the returned code payload is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real context the schema lacks: why to filter (token savings) and the 'only needed on first call' nuance for include_guide. It stops short of naming the field values, which the schema's enum already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get custom code of the site (CSS/JS)') and breaks the tool into two named modes, so an agent immediately understands what comes back. It does not explicitly contrast with nearby siblings like get_page_source or update_site_custom_code, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance for each mode: omit the filter for full content, pass fields to save tokens, and set include_guide=true on the first call. No exclusion criterion against alternative retrieval tools is given, but the conditional usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_infoARead-onlyInspect
Get full site information: name, domain, settings (colors, typography, layout, language, payment methods, etc.) and preview_img — the latest homepage screenshots (1920_1080 desktop / 430_932 mobile), refreshed after publish_site.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already conveys safety, so the description's added value is elsewhere: it discloses the return surface and, importantly, freshness semantics ('preview_img — the latest homepage screenshots ... refreshed after publish_site') plus exact viewport variants. It stops short of stating any auth, quota, or failure behavior, but for a zero-param read tool that gap is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the primary payload and then the preview image detail. The parenthetical enumerations are dense but every item (colors, typography, layout, language, payment methods; 1920_1080 / 430_932) conveys concrete return content rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no input parameters, and only a readOnlyHint annotation, the description carries the full burden of describing what comes back — and it does, naming the top-level fields, the settings categories, and the image variants. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4 and there is nothing the description could add. It correctly avoids inventing pseudo-parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Get full site information') immediately followed by an enumeration of the exact fields returned (name, domain, settings sub-fields, preview_img). This tells an agent how it differs from neighbors like list_my_sites (inventory) and get_current_context (ambient state).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the note that screenshots are 'refreshed after publish_site' hints at when the data is freshest, but there is no explicit when-to-use, when-not-to-use, or named alternative versus list_my_sites / get_current_context. The agent must infer that this is the detail-fetch for the active site.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_cartARead-onlyInspect
Get all cart global sources with compact tree view. Shows full element hierarchy — no need to call get_global_source_detail separately.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. With no output schema, the description's disclosure that results come as a compact tree with full element hierarchy is genuinely useful behavioral context, but it stops short of covering volume, scoping (which sources count as 'cart'), or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and the second sentence adds a distinct routing benefit rather than restating the first. No waste, though the wording is slightly loose around 'cart'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool this is close, and the description partially compensates for the missing output schema by describing the tree view. Still, it leaves 'cart' undefined and does not indicate result scope or size, so an agent cannot fully predict what it receives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline is 4. There is nothing parameter-wise for the description to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get all cart global sources') plus the output shape ('compact tree view'), so the agent knows what it returns. It partially differentiates from siblings by referencing get_global_source_detail, though the ambiguous term 'cart' and the overlap with list_global_sources keep it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers one routing hint — that a separate call to get_global_source_detail is unnecessary — which implies this is a one-stop retrieval. However it never states when to prefer it over the very similarly named list_global_sources or how it differs, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_htmlARead-onlyInspect
Parse reference HTML into a structural blueprint (title, headings, paragraphs, images, buttons, colour palette) you can rebuild as BuilderX sections with new_section. Not a 1:1 clone.
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | Raw HTML to analyse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read, so the description's job is lighter. It adds real value by disclosing the shape of the extracted blueprint and the scope caveat that the result is not a 1:1 clone, which sets expectations about fidelity. It omits any input-size limits or handling of malformed HTML.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and output, with the scoping caveat placed last where it belongs. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly compensates by listing the blueprint contents it returns. Combined with the read-only annotation, an agent has enough to call it correctly; only the downstream usage pattern could be spelled out further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter and 100% schema description coverage, the schema already documents the 'html' field as raw HTML to analyse. The description reinforces that the input is reference HTML but adds no syntax, size, or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Parse) and resource (reference HTML) and enumerates the exact blueprint fields it produces (title, headings, paragraphs, images, buttons, colour palette). It also names the follow-on sibling new_section and rules out a common misconception with 'Not a 1:1 clone', so an agent can distinguish it from ingest_url and other ingestion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context (parse reference HTML to rebuild as BuilderX sections) and routes to new_section as the next step, which is a genuine workflow signal. It stops short of an explicit when-not-to-use clause, e.g. it never clarifies when to pick ingest_html over the sibling ingest_url.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_urlARead-onlyInspect
Fetch a public URL and parse it into a structural blueprint (see ingest_html). Note: client-rendered (React/Vue) pages may return little content.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public page URL to analyse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuine behavioral context by warning that client-rendered React/Vue pages may return little content, which is a useful limitation an agent would not otherwise know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with the action front-loaded and no wasted words. The parenthetical pointer to ingest_html is efficient, though the sentence is somewhat terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description covers the action, the output form (via ingest_html reference), and a key limitation. Auth or failure behavior beyond the client-rendered caveat is not addressed, but nothing essential for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented as 'Public page URL to analyse'. The description's 'public URL' phrasing is consistent but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Fetch a public URL and parse it') and the output form ('structural blueprint'), and points to the related ingest_html tool. It is clear what the tool does, though it does not sharply differentiate itself from the sibling ingest_html beyond the reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'public URL' implies the usage scope and the note about client-rendered pages gives a when-it-fails caveat. However, it does not explicitly state when to use this versus ingest_html or other ingestion siblings, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_appAInspect
Install (register) an application on the current site so its features become usable. For example, automations need the "automation" app installed first. App types: 0=product_review, 1=articles_review, 2=automation, 3=telegram, 4=affiliates, 5=multilingual, 6=appointment, 7=send_email, 8=botcake, 9=sale_channel, 10=product_design, 11=auth_otp, 12=personal_product_design, 14=course, 15=zalo_mini_app, 16=cms, 17=recaptcha, 18=pwa.
| Name | Required | Description | Default |
|---|---|---|---|
| app | Yes | App to install (by name) | |
| is_active | No | Activate the app on install |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so safety is largely covered. The description adds useful context beyond that: the effect of installing ('features become usable') and the dependency relationship between apps. It omits idempotency, behavior when already installed, and permission requirements, which is why it is not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is crisp and front-loaded, but the trailing enumeration of eighteen app types duplicates the schema enum and consumes most of the description's length. That bulk is not fully earned since the same values are already structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers purpose, effect, and the key dependency case, and annotations cover the safety profile. Remaining gaps are secondary details such as idempotency and what is_active does when the app is already present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters and the enum of app names. The description's numeric app-type mapping (0=product_review, etc.) is extra information but largely mirrors the enum values already present, and is_active is not explained at all. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (install/register) and resource (application on the current site) plus the outcome (features become usable). This clearly separates it from siblings like uninstall_app, update_app, and list_apps without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete when-to-use trigger: 'automations need the "automation" app installed first,' which tells the agent this is a prerequisite step. It stops short of naming the sibling alternatives (update_app, uninstall_app) or stating when NOT to install, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_toolAInspect
Run any WebCake tool by exact name with its arguments (discover names + schemas via search_tools). Arguments are validated before running. Use this for tools that are not loaded natively.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact tool name (from search_tools) | |
| arguments | No | Arguments object matching the tool's input schema |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint=false. The description adds that arguments are validated before running, which is useful behavioral context. It does not disclose auth needs, rate limits, error handling, or that the invoked tool's effects determine whether the operation is destructive, so it remains a partial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each earning its place: purpose, validation behavior, and usage condition. The core instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a meta-tool with no output schema and only readOnlyHint=false, the description provides adequate guidance: what it does, how to discover names, and when to use it. It could briefly state that execution behavior and errors come from the invoked tool, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters, including 'Exact tool name (from search_tools)' and 'Arguments object matching the tool's input schema'. The description repeats the search_tools discovery path but adds no syntax, format, or example beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what it does: run any WebCake tool by exact name with arguments. It distinguishes itself from search_tools by routing discovery there, and from natively loaded siblings by targeting tools 'not loaded natively'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for tools not loaded natively and directs discovery to search_tools. This gives a clear when-to-use condition and an alternative for the discovery step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsARead-onlyInspect
List the site's installed applications (type, status, settings). App type codes: 0=product_review, 1=articles_review, 2=automation, 3=telegram, 4=affiliates, 5=multilingual, 6=appointment, 7=send_email, 8=botcake, 9=sale_channel, 10=product_design, 11=auth_otp, 12=personal_product_design, 14=course, 15=zalo_mini_app, 16=cms, 17=recaptcha, 18=pwa.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description's added value is the disclosure of what the records contain (type, status, settings), which is genuinely useful given there is no output schema. It does not say whether disabled/uninstalled apps are included or whether the result is site-scoped, keeping it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by a compact code-to-name mapping. The second sentence is dense but every entry earns its place as the only available documentation of the type field, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly spends its budget describing the return payload and enumerating the type codes. It omits scope details (which site, whether archived apps appear), which is a minor gap for a simple listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4. The description adds no parameter semantics because there are none to add; the app-type code table describes output values rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('List the site's installed applications') and even previews the returned fields (type, status, settings). It is clearly separable in intent from get_app / install_app / update_app, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers you call this to enumerate installed apps, but there is no when-to-use, no when-not-to-use, and no reference to alternatives such as get_app for a single app. For a zero-parameter read tool this is minimally adequate rather than helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_articlesARead-onlyInspect
List blog articles (metadata only, without HTML content). Use get_article for the full content. Pass term to search by title/slug. Pass category_id to list the posts filed under one blog category — that view is the public one, so hidden posts and posts scheduled in the future are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| term | No | Search articles by title or slug | |
| limit | No | Items per page (default 20) | |
| category_id | No | Filter by blog category id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, so safety is covered. The description adds non-obvious behavior: category_id view is the public one and excludes hidden and future-scheduled posts. That visibility semantics is the kind of detail structured fields would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: scope, sibling routing, and parameter behavior. Front-loaded with the 'what' before the 'when'. Slightly wordy in the third sentence but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, sibling relationship, and the non-obvious visibility filtering. With no output schema, the description should ideally hint at the return shape (article fields, pagination envelope), and it only says 'metadata only' – a small remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page/limit/term/category_id are already documented. The description re-explains term and category_id without adding syntax, format, or default details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List blog articles') with a disambiguating scope note ('metadata only, without HTML content'). It also distinguishes itself from the get_article sibling directly, which is more than most list tools do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_article for full content, and explains when to use term vs category_id. It does not cover pagination usage or when to prefer search_products-style alternatives, but for a listing tool the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bindingsARead-onlyInspect
List every dynamic-data BINDING target: the datasets (product, cart_item, order, order_item, post, category, customer, customer_address, …) and their exact field names ('product::product_price', …), which page type each needs (store/member/blog), and how repeater children (grid-product, cart-items, post-list) bind per-item. Attach via new_element opts.bindings (ids auto-minted, e.g. opts.bindings=[{ target:'product::product_price' }]).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description adds value by disclosing the content shape: datasets, exact field-name syntax, page-type requirements, and repeater per-item binding. It omits pagination/volume characteristics, but for a finite list of binding targets that gap is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first clause before elaborating on datasets, field syntax, and the new_element handoff. Dense with parentheticals but each element earns its place; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes what is returned (datasets, field names, page types, repeater binding patterns) and how to use the result. Complete enough for a zero-param discovery tool, though it could note the payload shape more concretely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description adds no parameter semantics but none are needed; the schema is trivially empty and requires no compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a specific resource (every dynamic-data BINDING target), enumerating concrete examples (datasets like product/cart_item/order, field names like 'product::product_price'). No sibling tool covers binding targets, so it is clearly distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent through the workflow by naming the consumer: attach via new_element opts.bindings with a concrete example. It doesn't state explicit when-not-to-use conditions, but the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cached_resultsARead-onlyInspect
List the large results currently held in the session cache (id, label, size, age).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that results are session-scoped and transient, which is useful context beyond the annotation, but it says nothing about result limits or pagination for a listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the resource front-loaded and the payload fields parenthesized. Nothing is redundant or wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so via the field list. For a zero-parameter list tool this is largely sufficient, though it omits any note on result volume or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there are no argument semantics to explain and the schema is trivially empty. No compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the large results') and enumerates the returned fields (id, label, size, age), so the agent knows exactly what it gets. It does not explicitly name the companion read_cached_result, so the sibling relationship is only implied rather than called out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently held in the session cache' hints at context, and the pairing with read_cached_result is implied by naming, but the description gives no explicit when-to-use guidance or mention of the alternative. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBRead-onlyInspect
List all product categories of the site
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds no further behavioral context such as pagination, sorting, hierarchy, or return behavior beyond the vague word 'all'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no redundant or filler content. It is appropriately sized for a simple zero-parameter list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool, the description is sufficient to invoke it correctly and identifies the resource scope. It could be stronger by briefly noting the return shape or ordering, especially since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The empty schema fully covers the input surface, and the description does not need to explain parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (product categories), with scope limited to the site. It clearly distinguishes product categories from blog categories, but does not name or differentiate against siblings such as list_products or create_product_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The intended usage is only weakly implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cms_filesBRead-onlyInspect
List all CMS files (HTTP functions, cron jobs, ...) for the site
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, so the description's burden is lighter. It adds scope information (all files, including HTTP functions and cron jobs) but says nothing about result size, pagination, or whether hidden/draft files are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and scope front-loaded and zero filler. It is efficient, though it is terse enough that it borders on under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, a lightweight description is appropriate, and the enumeration of file kinds plus site scoping covers what an agent needs to decide to call it. The remaining gap is minor: no indication of ordering or result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to compensate for. The description correctly does not invent parameter semantics that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (CMS files), with concrete examples ('HTTP functions, cron jobs, ...') that clarify what counts as a CMS file. It partially distinguishes itself from siblings like get_http_function and get_file_versions, but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for the site' implies it operates on the current site context, but there is no guidance on when to use this versus get_http_function, update_cms_file, or get_file_versions. No prerequisites, no exclusions, no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsARead-onlyInspect
List all database collections (tables) for the site. Returns collection names, table names, and field counts. Use get_collection for full schema details
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| term | No | Search by collection name | |
| limit | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries the rest. It usefully discloses the return payload (collection names, table names, field counts), telling the agent not to expect full schema. It does not explain pagination behavior despite page/limit parameters, and 'List all' is in mild tension with a paginated endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose and return contents, then the routing hint last. No filler or restated naming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the returned fields, and with annotations covering the read-only nature and 100% schema coverage on parameters, most agent needs are met. The remaining gap is pagination/default-limit behavior for a tool whose schema exposes page and limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — page, term, and limit are each documented in the schema itself — so the baseline 3 applies. The description adds nothing about search-by-name or pagination semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all database collections (tables) for the site') and immediately disambiguates from the sibling get_collection, which returns full schema. An agent can distinguish it from get_collection, create_collection, and query_collection_records without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use get_collection for full schema details,' which implies this tool is for lightweight name/field-count discovery. It stops short of spelling out the inverse condition (e.g., when to prefer this over query_collection_records or list_pages), so it is clear context rather than a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_combosARead-onlyInspect
List all combo/bundle products of the site. Use get_combo_items for combo composition details
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| term | No | Search by combo name | |
| limit | No | Items per page (default: 20) | |
| include_guide | No | Include combo type reference guide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe read-only nature of the operation. The description adds the site-wide scope but says nothing about pagination behavior, authentication needs, or return format. With annotations covering the safety profile, a baseline 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by a clear routing instruction to the sibling tool. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with a fully documented schema and no output schema, the description is nearly complete: it states what is listed and where to get related details. A minor gap remains around return format or pagination behavior, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, term, limit, include_guide) are already fully documented in the schema. The description adds no syntax, default, or format details beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('combo/bundle products') with scope ('of the site'), and explicitly distinguishes itself from the sibling get_combo_items by assigning composition details to that tool. An agent can tell what this tool returns without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_combo_items for combo composition details, which is the most relevant alternative. However, it does not state when-not to use this tool versus other listing tools like list_products or search_products, leaving some sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersARead-onlyInspect
List/search the site's customers (browse or segment). Pass term to search by name/phone/email. Returns name, phone, email, order_count, purchased_amount, reward_point, tags, last_order_at. Use find_customer for an exact id/phone/email lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| term | No | Keyword — searches name / phone / email | |
| limit | No | Items per page (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful behavior beyond that: the exact fields returned (order_count, purchased_amount, reward_point, tags, last_order_at), which matters since there is no output schema. It is silent on pagination defaults, though the schema covers page/limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler: purpose first, parameter hint second, return shape third, alternative last. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the explicit return-field list is exactly what an agent needs to interpret results, and the find_customer pointer closes the routing question. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented. The description's 'Pass term to search by name/phone/email' largely restates the schema's term description rather than adding new semantics. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('List/search the site's customers') and explicitly frames two modes (browse vs. segment). It also names the sibling it is not (find_customer), so an agent can distinguish it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (find_customer) and the exact condition that selects it ('exact id/phone/email lookup') versus this tool's keyword search. Both when-to-use and the sibling routing are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_elementsARead-onlyInspect
List all BuilderX element/component types you can place on a page, grouped by category with a one-line summary and whether each is a container.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety. The description adds meaningful return-shape context beyond that annotation: results are grouped by category, each entry has a one-line summary, and each indicates whether it is a container. This is useful behavioral context, though it does not cover auth needs, pagination, or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and it front-loads the core action and resource. Every clause adds concrete detail about the returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries most of the burden for explaining what is returned, and it does so by describing grouping, summaries, and container status. It could still mention pagination or site scoping, but it is largely complete for a simple catalog-list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so there are no parameter semantics for the description to clarify. Per the baseline rule, a zero-parameter tool scores 4 here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('BuilderX element/component types you can place on a page'), and its scope clearly differs from sibling tools that retrieve or mutate existing page elements. It does not explicitly name a sibling alternative, so it falls short of full 5-level sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'you can place on a page' gives context, but there is no explicit guidance about when to use this tool versus alternatives like get_element, search_page_elements, or get_page_schema. No when-not conditions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsARead-onlyInspect
List every interaction EVENT you can attach to a node: the triggers (eventName: click/hover/success/submit/…) and the actions (open_page, scroll_to, toggle, open_popup, add_to_cart, buy_now, phone_call, open_link, …) with the exact extra fields each action needs. Attach via new_element/new_section opts.events (ids are auto-minted, e.g. opts.events=[{ action:'add_to_cart', open_page:'cart' }]).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read. The description adds the useful fact that ids are auto-minted and that each action demands specific extra fields, but it says nothing about this tool's own operational behavior — output shape, result size, caching, or whether the catalog is site-specific — so it adds only modest context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, and the attach mechanism plus example follow in the same compact block. It is dense with parenthetical '…' enumerations, which cost a little readability but every element (triggers, actions, required fields, attach path, example) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalog tool with no output schema, the description carries the return-content burden well: it says the listing covers triggers and actions with the exact extra fields each action needs. It would be complete if it clarified the exact response format (flat list vs. grouped by trigger) given there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters the baseline is 4, and the description usefully compensates by explaining the shape of the event objects referenced elsewhere (action plus required extra fields, trigger eventName values). That is meaningful semantics even though it describes the payload of new_element/new_section rather than a parameter of this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource — 'List every interaction EVENT you can attach to a node' — and immediately enumerates what those events are (triggers and actions), so an agent knows exactly what it gets back. It implicitly separates itself from the many sibling list_* tools by scoping to page-element event catalogs, though it never names a sibling alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states how the results are consumed — attach via new_element/new_section opts.events — and gives a concrete call example (opts.events=[{ action:'add_to_cart', open_page:'cart' }]), which tells the agent when this catalog is relevant. It stops short of an explicit when-not-to-use or a 'call this before X' instruction, so it is strong context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_global_sectionsARead-onlyInspect
List reusable global sections (Header, Footer, shared content blocks) — SLIM summary only. Each entry: id, name, slot (header/footer/block), element count + type histogram + custom classes. The full element tree is large, so it is NOT returned here — drill in with get_global_section (compact tree), search_global_section_elements, or get_global_section_element.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries most of the behavioral burden and does so well: it discloses the deliberate SLIM response shape, enumerates each returned field (id, name, slot, element count, type histogram, custom classes), and explicitly warns that the element tree is NOT returned. No pagination or rate-limit detail, but the output-behavior disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and the SLIM constraint in sentence one, then describes the entry shape, then states the exclusion and the alternative routing. Three tight sentences with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields and explicitly naming what is omitted and where to get it. For a zero-parameter list tool this is complete enough to call correctly and to decide whether a follow-up drill-in is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters (schema coverage 100%), so there is nothing for the description to disambiguate; baseline 4 applies. No misleading param claims are made.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List reusable global sections') plus concrete examples (Header, Footer, content blocks), which makes the object unmistakable. It explicitly distinguishes itself from the drill-in siblings (get_global_section, search_global_section_elements, get_global_section_element), so an agent can separate listing from inspection without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states this returns a SLIM summary and routes the agent to three named alternatives for the full element tree, with the reason ('the tree is large'). It does not fully clarify when to pick search_global_section_elements versus get_global_section_element, but the when-to-use and when-not-to-drill-here guidance is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_global_sourcesARead-onlyInspect
List global sources (cart, popup, etc.). Returns compact summary per source. Always provide component to filter by type — the API may not return all types without a filter.
| Name | Required | Description | Default |
|---|---|---|---|
| component | No | Filter by component type (e.g. "cart-droppable", "popup"). Recommended to always provide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already covers the safety profile, so the bar is lower, and the description still adds real value: the return shape ('compact summary per source') and the API quirk that unfiltered calls may not return all types. That quirk is exactly the kind of behavioral trait that prevents a wrong call, though pagination/limits remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with zero filler: what it lists, what it returns, and the one thing to do when calling it. Nothing is buried or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully signals the compact-summary return, and there is only one optional param which the schema fully documents. Complete enough to call correctly, with only minor gaps around result size or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes beyond the schema by giving example values ('cart', 'popup') and the reason the filter matters — that the API may silently drop types without it. That rationale is meaning the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List global sources') and grounds it with examples ('cart, popup'), which distinguishes it from the detail/contents siblings like get_global_source_detail. It never names an alternative explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete, actionable guidance — always pass 'component' because the API may omit types without a filter — which is a real usage condition rather than boilerplate. It stops short of saying when to prefer this over get_global_source_detail or search_global_source_elements, so it is clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_sitesARead-onlyInspect
List all sites accessible by the current account. Use this to find a site_id before switching
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| term | No | Search by site name | |
| limit | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds the site_id discovery purpose but says nothing about pagination behavior, rate limits, or result set size for an account with many sites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, with the workflow hint second. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated read whose safety profile is carried by annotations and whose params are fully documented in the schema, the description is close to sufficient. A note on pagination or typical volume would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – page, term, and limit are each documented in the schema. The description adds no parameter syntax or filtering detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List all sites accessible by the current account" gives a specific verb+resource and scopes it to the current account. It doesn't explicitly differentiate from adjacent tools like get_site_info or list_tool_groups, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this to find a site_id before switching" gives a concrete usage context tied to switch_site. It stops short of stating when-not to use it or naming alternatives, but the workflow intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersARead-onlyInspect
List orders of the site (metadata only). Use get_order for full details including items
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Items per page | |
| status | No | Filter by status: 0=new, 1=submitted, 2=shipped, 3=delivered, 4=returning, 5=returned, 6=canceled, 7=removed, 8=packing, 9=pending, 11=waiting, 12=wait_print, 13=printed, 15=part_returned, 16=received_money, 17=wait_submit, 20=ordered, 22=draft, 50=blocked. Omit or -1 = all (except removed/blocked). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description usefully adds that only metadata is returned and that items require get_order, but says nothing about pagination behavior or the shape of the metadata, leaving the return contract partly implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and its scope front-loaded, then the routing hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by stating that results are metadata-only and where to get full details. It is close to complete, though pagination semantics for page/limit remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a thoroughly enumerated status mapping, so the schema carries the parameter burden. The description adds no filter syntax or pagination hints beyond what the schema already provides, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List orders of the site') and immediately scopes the response ('metadata only'). It distinguishes itself from the sibling get_order by contrasting what each returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative get_order and the condition that selects it ('for full details including items'). It does not address count_orders_by_status, but the core when-to-use guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_page_contentsARead-onlyInspect
List multi-language contents (translations) of the site's pages and global sections. Pass page_id + language_code to read one page's translation.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | No | Page ID — narrows the result to that page | |
| language_code | No | With page_id: return just that language's content map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds that the tool spans both pages and global sections and returns content maps for translations, which is genuinely useful context. It still omits return shape, pagination, and ordering behavior, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler: the primary enumeration is front-loaded and the narrowing instruction follows. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with full schema coverage, no output schema, and two optional params, the description covers purpose, scope, and the key invocation pattern. It stops just short of explicitly routing the agent away from similar listing tools, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema (including the combination semantics of page_id + language_code). The description restates that combination but adds no syntax, format, or default-value detail beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('List') and resource ('multi-language contents (translations) of the site's pages and global sections'), which is clearer than a bare 'contents' listing. It hints at the scope (pages + global sections) but does not name or differentiate from close siblings like list_pages or get_page_source, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a concrete invocation pattern ('Pass page_id + language_code to read one page's translation'), implying when to narrow the query. However there is no explicit when-to-use vs when-not, and no mention of alternatives such as list_pages for page metadata, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_page_draftsARead-onlyInspect
List local page drafts for the current site (summaries only: id, name, slug, type, section count, commit progress, updated_at).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful value by enumerating the returned fields ('id, name, slug, type, section count, commit progress, updated_at'), which effectively stands in for a missing output schema, but it says nothing about ordering, pagination, or what 'local' drafts mean versus remote state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the scope ('current site') front-loaded and the return contract packed into one parenthetical. No filler, no redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read tool with no output schema, the description covers purpose, scope, and return fields, which is nearly everything needed to invoke it. The remaining gap is workflow context: how results feed into get_page_draft or commit_page_draft is never stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. The description correctly omits any parameter talk rather than inventing one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List local page drafts') and scopes it to the current site, so the agent knows exactly what is returned. The parenthetical 'summaries only' implicitly separates it from get_page_draft (which returns a full draft), but the sibling is never named, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement and no named alternatives. The draft-workflow siblings (get_page_draft, commit_page_draft, clear_page_draft, add_draft_section) are left for the agent to reason about; nothing says whether this is the entry point for enumerating drafts or a status check after edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesARead-onlyInspect
List all pages of the site (metadata only, without source)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description usefully adds that only metadata is returned and source is excluded, but says nothing about pagination, result limits, or ordering, which matters for a list-everything tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the key constraint in parentheses. No filler, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with no output schema, the definition covers purpose and return scope adequately. Minor gap: no note on pagination or what metadata fields are returned, though the low complexity makes this a small omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to clarify; baseline 4 applies. The parenthetical is about output scope rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (pages) and adds scope qualifiers 'metadata only, without source' that differentiate it from source-fetching siblings like get_page_source. It does not name an alternative explicitly, but the parenthetical does the disambiguation work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (call this to enumerate pages) and the 'without source' note hints that get_page_source is the tool for source content, but there is no explicit when-to-use statement or named alternative. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-onlyInspect
List products of the site (metadata only: id, name, slug, price, image, status). Use get_product for full details
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| term | No | Search by product name | |
| limit | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful return-scope context by stating results are "metadata only" and enumerating the fields, telling the agent it will not get full product detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, zero filler, with the return scope front-loaded and the alternative pointer at the end. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully lists the returned fields, and pagination parameters are covered by the schema. It is largely complete for a list tool, though it omits pagination/default behavior and the search-vs-list boundary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, term, and limit are already documented in the schema. The description adds nothing about parameter format or defaults, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List products of the site") and enumerates the metadata fields returned. It clearly contrasts with get_product for full details. However, it does not distinguish itself from the sibling search_products, which likely overlaps given the 'term' search parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to get_product for full details, which is useful. But it gives no explicit guidance on when to choose this over search_products or list_categories, so usage is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promotionsARead-onlyInspect
List all promotions/discounts of the site (metadata only). Use get_promotion for full details
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| limit | No | Items per page (default: 20) | |
| include_guide | No | Include promotion type reference guide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the description's marginal contribution is the '(metadata only)' disclosure, which usefully tells the agent the response will not contain full promotion details. Beyond that it says nothing about pagination behavior or result volume, and with no output schema it could carry more of that burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler; the scoping fact ('metadata only') is front-loaded and the pointer to the alternative follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only list tool, the description covers the essential: what it returns (metadata only) and where to go for depth. With no output schema, one might want a hint about the shape of the metadata or pagination expectations, but the essential decision inputs are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page, limit, and include_guide all documented including their defaults. The description adds no parameter-level meaning (e.g., what the 'promotion type reference guide' actually contains), so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all promotions/discounts of the site') plus a scope qualifier ('metadata only'), so the agent knows it is a lightweight enumeration. It routes away from get_promotion, but does not distinguish itself from closely related siblings such as search_promotions, get_active_promotions, or get_promotion_items, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to escalate: 'Use get_promotion for full details,' establishing this tool as the summary-level entry point. It gives no guidance on when to prefer it over search_promotions or get_active_promotions, so the routing guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_section_templatesARead-onlyInspect
Browse the designer-made section library (the editor's template picker): ready, styled blocks (hero, product showcase, testimonials, footer…) to start from instead of composing from scratch. No args → categories. With category_id and/or term → templates { id, name, thumbnail, kind }. Look at a thumbnail with invoke_tool('read_image', { url }), then insert a kind:"section" template with add_section({ page_id, template:{ category_id, id } }) and restyle it to the brand.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page (default 1) | |
| term | No | Search template names | |
| limit | No | Per page (default 12) | |
| category_id | No | Category id (from the no-arg call) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description's disclosure that the return shape varies by input (categories vs templates) and that templates carry { id, name, thumbnail, kind } adds real behavioral context beyond the safely-read signal. It could say more about scale/paging behavior, but is solid for a read-only browse tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, front-loaded sentences: purpose first, then input-dependent behavior, then the end-to-end workflow. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema tool with full param coverage, this description is complete: it covers purpose, input branching, return fields, thumbnail inspection, and the downstream insertion/restyle path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond: it explains the no-arg default behavior and that category_id must come from the no-arg call, plus how category_id/term combine — context the schema's terse strings do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Browse) and resource (designer-made section library / template picker) and enumerates concrete template kinds (hero, product showcase, testimonials, footer). It is clearly distinguishable from siblings like add_section (insertion) and list_elements without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit branch conditions: 'No args → categories' and 'With category_id and/or term → templates'. It also names the follow-on alternative workflow (read_image to preview, add_section to insert, then restyle), so an agent knows exactly when to use this versus the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_template_themesARead-onlyInspect
Search/list the public Webcake template marketplace (api.storecake.io). Use to match customer brief against existing templates by keyword. Returns id, name, preview_url, thumbnail, categories
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Keyword to search themes | |
| lang | No | Language code (default 'vi') | |
| page | No | Page number (default 1) | |
| limit | No | Items per page (default 12) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read, so the description's remaining value is the return payload (id, name, preview_url, thumbnail, categories) and the data source domain. It says nothing about pagination behavior or result limits, so this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose front-loaded, then usage, then return shape. Every sentence carries information and none repeats structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing the returned fields is genuinely useful and covers the main gap. It leaves pagination semantics (how page/limit interact, total counts) unaddressed, which is a minor omission for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so q, lang, page, and limit are all documented in the schema itself. The description adds no syntax, format, or default guidance beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: search/list the public Webcake template marketplace, and scopes it to keyword matching. This implicitly separates it from semantic_search_themes and list_themes, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear context of use ('match customer brief against existing templates by keyword'), which tells the agent when to reach for this tool. It stops short of naming alternatives (e.g. semantic_search_themes for concept-based lookup) or stating exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_themesARead-onlyInspect
List all custom themes of the site. Returns theme name, colors, typographies, transitions, and which one is active
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context by enumerating the returned fields (name, colors, typographies, transitions, active) — valuable since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the purpose front-loaded and the return content following. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only list tool with no output schema, describing the returned fields compensates well. It could still note pagination or whether results are scoped to the current site, but the definition is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. No parameter semantics are needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all custom themes of the site'), and the word 'custom' implicitly separates it from list_template_themes. It does not explicitly name the sibling it is not, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the closely related list_template_themes or semantic_search_themes. The agent must infer from the name alone that this is the plain enumeration call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_groupsARead-onlyInspect
List every WebCake tool group, how many tools it has, and whether it is loaded natively or reached on-demand via search_tools + invoke_tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, but the description adds useful output context: it reports every group, its tool count, and whether it is loaded natively or reached via search_tools + invoke_tool. It does not mention ordering, pagination, or result format details, but for a no-parameter read-only discovery tool this is solid additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It starts with the verb 'List' and packs the resource, returned count, and load-mode semantics into one efficient sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter, read-only listing tool with no output schema, the description adequately explains what will be returned and the native/on-demand distinction. The main gap is that it does not explicitly guide the agent on when to use this versus search_tools, but the core call semantics are complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The empty schema is consistent with the description, and per the rubric a zero-parameter tool receives a baseline of 4 when the description does not need to compensate for undocumented inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List every WebCake tool group.' It also names the returned attributes—tool count and native vs on-demand loading via search_tools + invoke_tool—so it is clearly distinguishable from sibling tools like search_tools, which operate on tools rather than groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a discovery tool for understanding available tool groups and their access mode, but it never explicitly says when to call it or when to prefer it over search_tools/invoke_tool. There are no exclusions or prerequisites, so usage is only implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_elementARead-onlyInspect
Build a single structurally-valid element node from the real builder factory. Returns the node — edit its specials/style, then place it in a section's children.
| Name | Required | Description | Default |
|---|---|---|---|
| opts | No | Factory opts: { text, src, width, height, style, config, specials, events, bindings, responsive, align }. align = horizontal placement in the grid cell: 'left'|'center'|'right'|'fill' (works on any element; buttons are content-width+centred by default — use align:'fill' to span the column). | |
| type | Yes | Element type (see list_elements) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds real behavioral context beyond that — the node is structurally valid, comes from the 'real' (non-mock) factory, is returned unpersisted, and must be edited and then placed into a section's children. It doesn't cover failure modes or the returned node's shape, keeping it from 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and return value, then the follow-up step. No filler; slightly compressed phrasing ('real builder factory') costs a bit of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param factory tool with no output schema, the description could say more about the returned node's structure (beyond naming specials/style) or how it relates to sibling builders. The schema covers inputs and it points at list_elements for types, so it is adequate but not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with rich descriptions for both `opts` and `type`, so the schema already does the heavy lifting. The description adds no parameter detail beyond the workflow hint, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Build a single structurally-valid element node from the real builder factory.' Clear what it produces and distinguishes from siblings like new_section/new_row by scoping to a single element. It doesn't explicitly contrast itself with those siblings, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a workflow ('edit its specials/style, then place it in a section's children'), which tells the agent what to do after calling it. However it never states when to prefer this over alternatives (new_section, add_section, new_page_skeleton) or what prerequisites exist, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_page_skeletonARead-onlyInspect
Return an empty but valid page source: { sections: [] }. Add sections built with new_section, then save with build_page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a tool that only manufactures an in-memory skeleton — no contradiction. Beyond the annotation, the description discloses the exact return payload `{ sections: [] }`, which is genuinely additive since no output schema exists, and it signals the object is inert until build_page persists it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, front-loaded with the return value and followed immediately by the forward workflow. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema helper, the description supplies both the return shape and the sequencing into new_section/build_page, which is everything an agent needs to call it correctly. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and it correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return an empty but valid page source') and even gives the exact payload shape `{ sections: [] }`, so there is no ambiguity about what comes back. It also names the sibling tools that consume or extend its output (new_section, build_page), distinguishing it from those siblings without the agent opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description spells out the three-step workflow: get the skeleton, add sections with new_section, then save with build_page. That is clear usage context and explicitly routes to the alternatives. It stops short of a 'when not to use this' statement (e.g., when starting from an existing page source via get_page_source), so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_rowARead-onlyInspect
Build a multi-column ROW container: children laid out SIDE BY SIDE (not stacked). This is how real pages build feature cards, category tiles, footer columns, a 2-col hero, etc. The row is RESPONSIVE — it auto-collapses to fewer columns on tablet/mobile (default tablet 2, mobile 1) so cards never become cramped slivers. Place the returned node as a child inside a section (section children still stack vertically; nest a row for horizontal layout). Example children: [{ "type":"container", "children":[{"type":"image","opts":{...}},{"type":"text","opts":{...}}] }, { ... }, { ... }]
| Name | Required | Description | Default |
|---|---|---|---|
| row_gap | No | Vertical gap (px) between wrapped rows (default 24) | |
| children | No | Child specs, one per column (laid out left-to-right) | |
| collapse | No | Columns to show per breakpoint, e.g. {bp3:2,bp4:1}. Default: tablet 2, mobile 1. | |
| col_widths | No | Explicit per-column unit objects (length = #children), e.g. [{unit:'fr',value:2},{unit:'fr',value:1}]. Default: equal columns. | |
| column_gap | No | Horizontal gap (px) between columns (default 24) | |
| container_opts | No | Optional factory opts for the row container node itself (e.g. { style:{...} }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true. The description adds meaningful behavior beyond that: the row is responsive and auto-collapses (tablet 2, mobile 1) to prevent cramped cards, and it returns a node to be placed elsewhere rather than mutating state directly. No contradiction with the read-only hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core concept and integration instruction in the first sentence. Uses ALL-CAPS emphasis and a couple of bold phrases that add slight visual noise, but every sentence carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by noting the return value is a node to be placed inside a section. Combined with the responsive/collapse behavior and the child-shape example, an agent has enough to invoke it correctly, though richer guidance on composing the returned node with sections would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so row_gap, collapse, col_widths, column_gap and container_opts are already fully documented in the schema. The description adds an example children array, which is marginally useful for the nested children param, but it does not explain the gap/collapse/width parameters beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Build a multi-column ROW container') and immediately contrasts the layout semantics against its sibling concept ('children laid out SIDE BY SIDE (not stacked)'). The distinction from column/stacked layout lets an agent tell it apart from new_section and new_element without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (feature cards, category tiles, footer columns, 2-col hero) and an explicit integration rule: place the returned node as a child inside a section, and nest a row for horizontal layout because section children stack vertically. Clear when-to-use context, though it does not name sibling tools like new_section or new_element explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_sectionBRead-onlyInspect
Build a complete section node with children laid out in the builder's vertical grid. Pass an array of element specs; each child is stacked top-to-bottom. Nest containers via the child's own 'children'. Example children: [{ "type":"text", "opts":{"text":"Welcome","style":{"fontSize":"40px"}} }, { "type":"button", "opts":{"text":"Shop now"} }]
| Name | Required | Description | Default |
|---|---|---|---|
| children | No | Child element specs, stacked vertically in the section | |
| section_opts | No | Optional factory opts for the section node itself |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this has no side effects. The description adds layout behavior beyond that (children stack top-to-bottom, nesting is done through the child's own 'children' array), which is useful, but it never states what the tool returns or that the built node is not persisted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by construction rules and a single compact example. Every sentence carries information, though the example is long relative to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object builder with a rich schema and readOnlyHint, most of what an agent needs is present. Still missing is the return shape (a section node spec?) and how the built node relates to add_section/add_draft_section, which would remove ambiguity about the next step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by giving a concrete worked example of the children spec ({type, opts:{text,style}}) that clarifies how element type and opts combine. That example adds real meaning beyond the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build a complete section node') and scopes it to the builder's vertical grid, which distinguishes it from page-mutating siblings like add_section. However, it never names an alternative tool, so the differentiation must be inferred from the builder wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to construct the node (pass an array, children stack, nest via 'children') but gives no when-to-use guidance: no mention of when to prefer this over new_row, new_element, new_page_skeleton, or add_section, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_siteAInspect
Publish the whole site live — snapshots all current page sources into the live (published) version. Note: BuilderX publishes at the SITE level, not per page; publishing makes every saved page go live. Two-step safety: dry_run=true (default) describes what will happen; dry_run=false actually publishes.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview (true) or publish for real (false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnlyHint=false, the description carries the behavioral burden well: it explains that publishing snapshots all current page sources into the live version, affects every saved page, and provides a two-step dry_run safety mechanism. This is exactly the kind of destructive/mutating context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then adds a scope note and safety note in three tight sentences. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema, lack of output schema, and sparse annotations, the description is complete: it covers scope, effect, side effects, and the dry_run safety model. No essential information for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes dry_run with 100% coverage, so the baseline is 3. The description adds meaning by emphasizing the default and the safety semantics: dry_run=true previews what will happen, while dry_run=false actually publishes. That is useful beyond the schema's short label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Publish the whole site live') and immediately clarifies the scope as site-level rather than per-page. This distinguishes it from page-editing siblings like update_page or update_page_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains that publishing happens at the site level and affects every saved page, giving strong context for when this tool is appropriate. However, it does not name alternative tools or explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_collection_recordsBRead-onlyInspect
Query records from a collection (custom data table) by table name. Supports paging + an optional where filter and order_by sort. (Uses the CMS api-key auth the records endpoint requires.)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Items per page | |
| where | No | Filter object, e.g. { status: 'active' } — matches records by field value. | |
| order_by | No | Field to sort by (e.g. 'inserted_at'). | |
| table_name | Yes | Collection table name (e.g. 'subscribers', 'custom_orders') — from get_collection.table_name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds one genuinely useful non-annotation fact: it requires the CMS api-key auth used by the records endpoint. Beyond that it says nothing about default page/limit behavior or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core purpose and the table-name scoping are front-loaded, followed by the supported capabilities and the auth note in a parenthetical. Two tight sentences with no filler; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 5-parameter tool with no output schema, the description covers purpose, paging, filter, sort and auth, which is close to adequate. It omits default paging behavior and any hint of the returned record shape, which an agent building a call would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (page, limit, where, order_by, table_name) are already documented with examples in the schema. The description only restates paging, filter and sort, adding no semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (query) and resource (records from a collection / custom data table) scoped by table name. An agent can tell it reads row data rather than collection metadata, distinguishing it from get_collection/list_collections. It does not name a sibling explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (reading collection records) but never states when to use this versus get_collection (which returns the schema/table name), list_collections, or the write-side siblings like new_row. Usage context is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_cached_resultARead-onlyInspect
Read a slice of a large cached result produced by another tool (look for "cached":true + a cache_id in its output). Page through with offset/length; the response reports next_offset + remaining_chars until done.
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | Number of characters to return (default 12000) | |
| offset | No | Start character offset (default 0) | |
| cache_id | Yes | The cache_id returned by the producing tool (e.g. "cache-3") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already declares the safe read profile, so the description's value-add is pagination behavior: offset/length paging and the next_offset + remaining_chars continuation signal. That is genuinely useful behavioral context beyond the annotation, though it doesn't cover e.g. cache expiry or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste; the core purpose is front-loaded and the paging mechanics follow immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by describing the continuation fields (next_offset, remaining_chars) that tell the agent when paging is done. Remaining gaps like cache lifetime or slice size limits are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so cache_id, offset, and length are already documented with defaults. The description only restates that offset/length drive paging, adding little semantic detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read a slice of a large cached result produced by another tool" gives a specific verb (read), resource (cached result), and scope (a slice). It clearly distinguishes itself from list_cached_results by being about reading content rather than enumerating cached items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition precisely (look for "cached":true + a cache_id in another tool's output) and explains the paging loop. It doesn't explicitly contrast against list_cached_results or say when-not to use it, but the context for invocation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_file_versionAInspect
Roll a CMS file back to a saved version in one step: reads the version's content and writes it back to the file. Omit version_id to restore the most recent snapshot. Tip: save_file_version on the current content first if you want an undo point.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | No | Which version to restore (from get_file_versions). Omit = latest snapshot. | |
| cms_file_id | Yes | CMS file ID to restore |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the rest of the burden and does so well: it discloses the read-then-write mechanism, the default behavior when version_id is omitted, and the destructive nature of overwriting current content via the undo-point tip. Auth requirements and exact return shape remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus a short tip, with the core action front-loaded ahead of the parameter default and the precautionary advice. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description is nearly complete: it explains the mechanism, the default, and the safety tip. Only the response/return behavior is left implicit, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description reinforces the version_id omission behavior but adds little syntax or format meaning beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('roll a CMS file back to a saved version') and explains the mechanism ('reads the version's content and writes it back'). It is clearly distinguishable from siblings like save_file_version and get_file_versions, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational guidance: omitting version_id restores the latest snapshot, and it advises calling save_file_version first to create an undo point. It stops short of explicit when-not or alternative-tool routing, but the context and precaution are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_functionBInspect
Run a deployed HTTP function. function_name excludes method prefix. Example: "get_Products" → function_name="Products", method="GET"
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | HTTP method | POST |
| params | No | Parameters | |
| function_name | Yes | Function name without method prefix (e.g. 'Products') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals this is a mutating operation, and the description adds nothing about side effects, whether POST/PUT/PATCH calls mutate data, auth requirements, or error behavior. For an execution tool that can perform writes, this leaves significant behavioral gaps beyond what the annotation provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action stated first and the naming convention immediately after. The example earns its place by disambiguating the required format; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description ideally should hint at what running a function returns, but it does not. It also omits the method default (POST) and any error/response context, leaving the definition adequate but incomplete for an execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes further by giving a concrete mapping example ("get_Products" → function_name="Products", method="GET") that clarifies how the method prefix must be stripped from function_name. This adds real meaning beyond the schema's terse property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Run a deployed HTTP function"), which is clearly an execution action distinct from the sibling edit/update/get HTTP function tools. It stops short of explicitly naming those siblings or the boundary between running vs. modifying, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the tool name and purpose; there is no explicit guidance on when to run vs. inspect (get_http_function), debug (debug_function), or edit a function. No prerequisites or exclusions are stated, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_file_versionAInspect
Save a version snapshot of a CMS file for rollback
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to save | |
| is_public | No | Mark as public version | |
| cms_file_id | Yes | CMS file ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, telling the agent this is an additive, non-destructive write. The description adds the useful semantic that the write is a rollback-able snapshot rather than a live edit. It does not disclose permissions needed, whether repeated calls create duplicate versions, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler. The verb, resource, and purpose are all conveyed without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with full schema coverage and annotations covering the safety profile, the description is nearly complete. The only gap is that it does not mention what a saved version yields (e.g., a version identifier) or how it relates to restore_file_version, but no output schema exists so return detail is optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (content, is_public, cms_file_id) are already documented in the schema. The description adds no format, constraint, or interaction detail beyond that, which matches the baseline of 3 when the schema carries the full load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save), resource (a CMS file version snapshot), and intent (for rollback), so the agent understands this is a snapshot-writing operation. It does not explicitly name the sibling tools it differs from (restore_file_version, update_cms_file, create_cms_file), so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for rollback' implies the usage context — capture a snapshot before changes so it can be restored later — which gestures at the sibling restore_file_version. However, there is no explicit when-to-use guidance, no prerequisites, and no statement of when this should be preferred over update_cms_file or create_cms_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_global_section_elementsARead-onlyInspect
Search/filter elements within a global section (Header/Footer/block) without dumping the whole tree. Filter by type, id substring, custom_class, text, or has_bind / has_events / has_custom_class.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter by element ID substring | |
| text | No | Filter by text content substring | |
| type | No | Filter by element type (e.g. 'menu', 'menu-item', 'container', 'image', 'text') | |
| limit | No | Max results (default 50) | |
| has_bind | No | Only elements with data bindings | |
| has_events | No | Only elements with events | |
| custom_class | No | Filter by custom class substring | |
| has_custom_class | No | Only elements with a custom class | |
| global_section_id | Yes | Global section ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description is not carrying the safety burden. It adds that results are filtered rather than a full dump, which is useful, but says nothing about truncation at the default limit of 50, result ordering, or what a returned element contains. With annotations covering safety, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste: the purpose and its rationale come first, the available filters second. Nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally characterize the return (result shape, truncation behavior at limit=50, how to fetch a single element's full detail via get_global_section_element). It only hints at truncation via 'without dumping the whole tree'. For a 9-parameter read tool this is serviceable but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 9 parameters is already documented in the schema. The description merely re-enumerates the same filter fields (type, id substring, custom_class, text, has_bind, has_events, has_custom_class) without adding syntax, matching semantics, or interaction rules between them. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (search/filter) and resource (elements within a global section), and adds the rationale 'without dumping the whole tree' which tells the agent this is the targeted-query option rather than a full-tree read. It does not explicitly distinguish itself from nearby siblings such as search_global_source_elements or list_elements, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without dumping the whole tree' implies the usage context (prefer this over enumerating everything), but there is no explicit when-to-use statement, no prerequisites, and no named alternative. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_global_source_elementsBRead-onlyInspect
Search/filter elements within a global source. No component param needed. Examples:
Find all buttons: type="button"
Find by class: custom_class="hero"
Find text: text="subscribe"
Data-bound only: has_bind=true
With events: has_events=true
With custom class: has_custom_class=true
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter by element ID substring (e.g. 'TEXT', 'BUTTON-3') | |
| text | No | Filter by text content substring | |
| type | No | Filter by element type (e.g. 'text', 'button', 'image', 'container', 'section') | |
| limit | No | Max results (default 50) | |
| has_bind | No | Only elements with data bindings | |
| component | No | Component hint for faster lookup (e.g. "popup", "cart-droppable") | |
| has_events | No | Only elements with events | |
| custom_class | No | Filter by custom class substring | |
| global_source_id | Yes | Global source ID | |
| has_custom_class | No | Only elements with custom class |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds only the assertion that no component parameter is required, which is mildly useful context, but says nothing about result limits (the 50 default), pagination, or the shape of the returned element set for a tool with 10 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the examples are scannable. The bullet list is slightly redundant with the schema descriptions, but each bullet maps a filter to a concrete use case rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter read tool with no output schema, the description covers filter usage adequately but omits the default result cap, pagination behavior, and any routing against the many neighboring element-search tools. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The examples add concrete sample values for the filter parameters (type="button", custom_class="hero", text="subscribe"), which is modest added value, but the semantics of each flag are already fully stated in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: search/filter elements within a global source. It is distinguishable from the similarly named search_global_section_elements and get_global_source_element by the 'within a global source' scope, though it never names those siblings explicitly. The odd 'No component param needed' line slightly muddies the scope since the schema does expose a component parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The six examples effectively demonstrate when each filter is useful (buttons, classes, text, bindings, events), which is better than nothing. However, there is no statement of when NOT to use this tool or which sibling to prefer for a single-element lookup or section-scoped search, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_imagesARead-onlyInspect
Search stock photos (Pexels) for a page/product. IMPORTANT: the storefront only renders images served from the WebCake CDN (image domains are whitelisted) — raw Pexels URLs will NOT display. By default this re-hosts each result on the WebCake CDN and returns a ready-to-use cdn_url (cached, so repeats are free). Use cdn_url for image src / product images. Requires the PEXELS_API_KEY environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Subject to search, e.g. 'coffee shop interior' | |
| upload | No | Re-host each result on the WebCake CDN and return cdn_url (default true — required for the image to show). Set false to only browse Pexels URLs. | |
| per_page | No | How many results (default 6) | |
| orientation | No | Preferred orientation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite readOnlyHint=true already covering the safety profile, the description discloses substantial behavior: default re-hosting on the WebCake CDN, caching so repeats are free, the domain-whitelist rendering constraint, and the PEXELS_API_KEY environment requirement. This is exactly the auth/side-effect context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then the critical rendering constraint, then defaults and the auth prerequisite. Dense but no filler; the uppercase IMPORTANT is slightly heavy-handed but serves a warning function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden well by naming cdn_url as the ready-to-use output and explaining caching. Combined with the auth prerequisite and the four documented params, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by tying the `upload` parameter to its consequence (re-hosting, ability to display) and introducing the returned `cdn_url` concept. It enriches the schema rather than repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search stock photos (Pexels)') with the target context ('for a page/product'). It is clearly distinguishable from the nearest sibling, upload_images, which handles the user's own uploads rather than external stock search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong context: the CDN whitelisting constraint tells the agent when this tool matters and warns that raw Pexels URLs won't render. It implies usage for page/product imagery but never names an explicit alternative (e.g. upload_images) or a when-not-to-use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_page_elementsARead-onlyInspect
Search/filter elements within a page source. Returns matching elements with full detail (id, type, style, text, classes, etc.). Examples:
Find all buttons: type="button"
Find elements with custom class: custom_class="hero"
Find text containing "subscribe": text="subscribe"
Find all data-bound elements: has_bind=true
Find all elements with events: has_events=true
Find all elements with custom CSS classes: has_custom_class=true
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter by element ID substring (e.g. 'TEXT', 'BUTTON-3') | |
| text | No | Filter by text content substring | |
| type | No | Filter by element type (e.g. 'text', 'button', 'image', 'container', 'section', 'form', 'input') | |
| limit | No | Max results (default 50) | |
| page_id | Yes | Page ID | |
| has_bind | No | Only elements with data bindings (product, category, blog) | |
| has_events | No | Only elements with events (click, submit, mouseenter, etc.) | |
| custom_class | No | Filter by custom class substring | |
| has_custom_class | No | Only elements that have a custom class |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that results come back 'with full detail (id, type, style, text, classes, etc.)', but omits pagination behavior, result caps beyond the schema default, and whether the search is substring vs exact (only implied).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the examples are formatted as a compact bulleted list. The bullet list is somewhat long relative to what it adds over the schema, but nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description does supply a return-format summary. The remaining gap is that limit/pagination semantics ('Max results (default 50)') are left to the schema and no guidance is given on iterating past the cap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented with examples. The description's examples (type="button", custom_class="hero", has_bind=true) largely restate what the schema already provides, adding only marginal value, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Search/filter elements within a page source', which is a clear read operation on a well-defined object. It does not, however, distinguish itself from nearby siblings such as list_elements, get_element, or search_global_source_elements, so the agent must infer the boundary from context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples implicitly show how to exercise each filter, which implies usage, but there is no explicit when-to-use guidance or naming of alternatives (e.g. list_elements vs this search). The agent must infer that this tool is the search-centric counterpart to get_element.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsBRead-onlyInspect
Search products by keyword. Returns matching products with basic info
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| term | Yes | Search keyword | |
| limit | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds only that results contain 'basic info', which weakly hints that fuller details require get_product, but says nothing about pagination defaults, result caps, or match behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with the core action first. The second sentence ('Returns matching products with basic info') is slightly redundant but still compact and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search with full schema coverage and no output schema, this is barely adequate. It never addresses pagination behavior or how results differ from list_products/get_product, which is the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so term, page, and limit are already documented in the schema. The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search products by keyword'), so the operation is unambiguous. However, it does not distinguish itself from the sibling list_products, leaving the agent to infer the keyword-vs-enumeration difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this instead of list_products, get_product, or search_promotions, nor any prerequisites (e.g., whether term supports partial matches). The description offers no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_promotionsBRead-onlyInspect
Search/filter promotions with advanced filters: by type, status (coming_soon/in_progress/finished), keyword, date range
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| term | No | Search by promotion name | |
| type | No | Filter by type: normal, same_price, coupon, coupon_id_multiple_times, discount_by_coupon_id, promotion_order, promotion_category, x_get_y_prod, x_get_y_category | |
| limit | No | Items per page | |
| status | No | Filter by time status: 1=coming_soon, 2=in_progress, 3=finished | |
| is_activated | No | Filter by active status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already tells the agent this is a safe, non-mutating read, so the description's burden is light. It adds the filter vocabulary but says nothing about pagination behavior, result ordering, or what happens when no filters are supplied — and it advertises a 'date range' filter that does not exist in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource and filter axes up front; every clause is doing work except the inaccurate 'date range' clause. Compact and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, all-optional search tool with no output schema, the description covers the main filters but omits anything about pagination defaults (page/limit) and return shape. Adequate but leaves gaps an agent must infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so page, term, type, status, limit, and is_activated are all already documented in the schema — the baseline 3 applies. The description adds no format or default detail beyond the schema, and its 'date range' claim references a parameter that is not present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search/filter) and resource (promotions) plus the available filter axes, so an agent knows this is the discovery tool for promotions. It does not, however, distinguish itself from the sibling list_promotions or get_active_promotions, which an agent would also plausibly reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Listing the filter dimensions implies when this tool is appropriate (narrowing a promotion set), but there is no explicit when-to-use vs. list_promotions versus get_active_promotions guidance, and no statement of prerequisites or defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsARead-onlyInspect
Find WebCake tools by keyword across the FULL catalog — including capabilities NOT loaded natively (marketing/CRM, translations, media, appointments, affiliate, reviews, domains/SEO/shipping, brands/tags/ribbons, courses, sale channels, automation…). Returns name, group, description and JSON input schema. Then run one with invoke_tool.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Restrict to a group name (see list_tool_groups) | |
| limit | No | Max results (default 8) | |
| query | Yes | Keywords, e.g. 'affiliate payout', 'translate product', 'add domain ssl', 'block phone' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint already tells the agent this is a safe read. Beyond that, the description discloses meaningful behavior: the search spans the entire catalog including capabilities absent from the native toolset, and it specifies exactly what is returned (name, group, description, JSON input schema). No pagination or ranking caveats are given, keeping it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, then the return contract and next step. The parenthetical capability list is long but earns its place by signalling the breadth of the catalog. Nothing is redundant, though the enumeration could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so ('name, group, description and JSON input schema'). Combined with the disabled-native feature hint and the invoke_tool handoff, an agent has enough to call it correctly; only ranking/pagination behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (query, group, limit) are already documented in the schema, including keyword examples. The description adds the concept of full-catalog scope but no syntax, format, or interaction detail for the parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb (find) and resource (WebCake tools) with an explicit scope: keyword search across the FULL catalog, including capabilities not loaded natively. The return contract ('name, group, description and JSON input schema') further nails down what the tool does, and it is clearly distinct from content-level searchers like search_products or search_promotions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case (locating tools not loaded natively) and a follow-up workflow ('Then run one with invoke_tool'), which routes the agent to the companion tool. It does not, however, explicitly contrast itself with list_tool_groups (only referenced indirectly in the schema) or state when NOT to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_search_themesARead-onlyInspect
Semantic search across the theme marketplace using bge-m3 embeddings (cosine similarity). Use when the brief is a natural-language description of industry + features (e.g. 'website mỹ phẩm có popup minigame và loyalty'), not just keywords. Returns top matches with theme_id, score, name, preview_url, thumbnail, description_vi/en
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of matches to return (default 5, max 10) | |
| query | Yes | Natural-language description of the desired website (industry + features) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=true, so the description carries most of the burden and does well: it discloses the retrieval mechanism (bge-m3 embeddings, cosine similarity) and the return shape, which is valuable because no output schema exists. It omits operational details such as rate limits or latency, keeping it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: mechanism, selection criterion with example, and return fields. The most decision-relevant information (what it is and when to use it) is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (theme_id, score, name, preview_url, thumbnail, description_vi/en), and annotations cover the safety profile. Only minor gaps remain, such as how the score should be interpreted or how results order against limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (query, limit with default/max) are fully documented in the schema. The description reinforces the intended query style but adds no syntax, format, or constraint information beyond what the schema already states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Semantic search across the theme marketplace') and even names the embedding model and similarity metric, so the agent knows exactly what kind of retrieval this is. It implies but never names the keyword-based siblings (list_themes, list_template_themes), so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use condition ('when the brief is a natural-language description of industry + features') with a vivid example, and contrasts it against keyword-style input. The alternative tool an agent should use for keyword lookups is left implicit rather than named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_product_publishedAInspect
Publish or unpublish one or more products quickly (without a full update).
| Name | Required | Description | Default |
|---|---|---|---|
| product_ids | Yes | Product ids | |
| is_published | Yes | true = publish (visible), false = hide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries most of the behavioral burden. It usefully discloses that this bypasses a full update, but for a mutation it never warns that setting false hides/unpublishes live products, nor whether the change is reversible or what permissions it needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key differentiator (no full update) front-loaded after the verb phrase. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter boolean toggle with a complete schema and no output schema, the description covers what the tool does and why it exists. It is slightly thin on mutation side effects and bulk-failure behavior, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there (product_ids, is_published with true=publish/false=hide). The description adds no parameter-level syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (publish/unpublish) on a specific resource (products), with scope "one or more" for bulk. The parenthetical "without a full update" differentiates it from update_product, so an agent can route between the two without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "quickly (without a full update)" cue tells the agent to prefer this over a full product update when only the published flag needs changing. It does not explicitly name update_product or state exclusions, but the usage context is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_page_draftAInspect
Start a page draft (no network). Build a multi-section page safely: cache each section with add_draft_section, then commit_page_draft persists it to the backend INCREMENTALLY (resumable on timeout). Use this instead of build_page for large/multi-section pages. The draft cache is DISPOSABLE (Redis on the remote server when REDIS_URL is set, in-memory otherwise; sliding ~2h TTL) — if a draft is ever lost, just re-send the sections, never a failure. ONE page per site for type main (homepage) / error / maintain, and slugs are unique per site: the draft is refused up-front with the existing page_id to edit instead. Only 'custom' pages can be created over and over.
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | SEO for this page → settings.seo (applied on commit). | |
| name | Yes | Page name | |
| slug | Yes | URL slug WITHOUT a leading slash, e.g. 'about', 'collections', 'cart'. A leading '/' is stripped automatically (the storefront matches the bare path segment, so '/cart' would 404). Store pages MUST use: category='collections', product='products', cart='cart', checkout='checkout', thank-you='complete'. Homepage needs no slug (is_homepage:true). | |
| type | No | Page kind. SPECIAL pages need a site data-source enabled on commit: store→use_store, member→use_member, blog→use_blog, error→use_error, maintain→use_maintain. 'main'/'custom' need nothing. | |
| is_homepage | No | Set as the site homepage on commit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false. The description goes well beyond: it discloses that start makes no network call, that the draft cache is disposable (Redis or in-memory, sliding ~2h TTL), that commit is incremental and resumable on timeout, and that loss is never fatal. It also explains the up-front refusal returning an existing page_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the key alternative, and every sentence carries useful content. It is dense with parentheticals (Redis/in-memory, TTLs, type lists) which are informative but slightly heavy on the reading path.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a draft-orchestration tool with no output schema and detailed input schema, the description covers the full lifecycle (start → add sections → commit), failure/resumption semantics, and creation constraints. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents name, slug, type, is_homepage, and seo in detail. The description adds the cross-cutting uniqueness rule for main/error/maintain types, which the schema does not state, but otherwise does not enrich individual parameter meanings beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a page draft') and immediately clarifies scope with '(no network)'. It explicitly distinguishes itself from siblings by naming add_draft_section, commit_page_draft, and build_page, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('Use this instead of build_page for large/multi-section pages'), the correct workflow order (cache sections with add_draft_section, then commit_page_draft), and the preconditions under which the draft is refused (one page per site for main/error/maintain, unique slugs). Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_siteAInspect
Switch to a different site by site_id. All subsequent tool calls will target the new site. The choice is saved to local database — next session will auto-connect to this site. Use list_my_sites first to find the site_id
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID to switch to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false. The description adds two important behaviors beyond that: all subsequent tool calls target the new site, and the choice persists to local database for auto-connect next session. This is meaningful side-effect disclosure not derivable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then side effects, then the prerequisite helper. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param switching tool with annotations, the description covers the action, session-wide consequence, persistence, and prerequisite discovery. No output schema exists, but the return is not crucial here; completeness is high though not exhaustive (e.g., what happens on invalid site_id).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the single site_id param is documented). The description says 'by site_id' and points to list_my_sites for finding it, which adds minimal value beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Switch to a different site') and its session-wide effect. Clearly distinguished from siblings like list_my_sites or create_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use list_my_sites first to find the site_id, giving a clear prerequisite and sequencing. It doesn't state when not to use it, but for a session-switching tool the guidance is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_confirm_modeAInspect
Toggle update confirmation mode. Controls whether update tools ask for user confirmation before saving.
"always_confirm" (default): Shows diff first, requires user approval before saving. Safer.
"auto_apply": Applies changes immediately without preview. Faster but riskier. Current mode is saved to database and persists across sessions.
Call this tool when the user says things like: → "tự động xác nhận" / "auto confirm" / "không cần hỏi" / "don't ask" / "apply directly" → mode: "auto_apply" → "hỏi trước khi lưu" / "luôn hỏi" / "always ask" / "confirm before saving" / "xác nhận trước" → mode: "always_confirm"
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Set to "always_confirm" (safe) or "auto_apply" (fast). Map user intent: "tự động"/"auto"/"không cần hỏi" → auto_apply, "hỏi lại"/"confirm"/"luôn hỏi" → always_confirm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, and the description adds real behavioral context: always_confirm shows a diff and requires approval, auto_apply applies changes immediately, and the mode is persisted to the database across sessions. It does not mention permission/auth requirements, which keeps it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and default are front-loaded, then modes are bulleted, then usage examples. The bilingual example list is somewhat verbose, but every block is functional and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter config tool with no output schema, the description covers defaults, per-mode behavior, persistence, and intent mapping. Complete enough to invoke correctly; minor gaps are only auth/permission details that are not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is already documented, so baseline is 3. The description goes further by explaining the semantic consequence of each value (safer diff-first vs. faster immediate apply), adding genuine meaning beyond the schema's terse mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Toggle update confirmation mode') and immediately clarifies the effect: 'Controls whether update tools ask for user confirmation before saving.' An agent can distinguish it from the many update_* siblings because it configures their confirmation behavior rather than editing content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly maps user utterances (including bilingual Vietnamese/English) to each mode value, e.g. 'don't ask' → auto_apply and 'always ask' → always_confirm. This is exactly the routing guidance an agent needs to pick the right enum value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_debug_renderCInspect
Toggle debug render mode for a CMS file
| Name | Required | Description | Default |
|---|---|---|---|
| cms_file_id | Yes | CMS file ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, so the agent knows this mutates state, and 'toggle' is consistent with that. Beyond that, the description adds nothing: it doesn't say whether the mode is per-session or persisted, what the resulting state is, or that toggling requires a prior debug render session. With a toggle (inherently non-idempotent) and no idempotent/destructive hints, this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler or redundancy. It is not padded, though it is arguably terse to the point of under-specification rather than maximally efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, only a single readOnlyHint annotation, and one parameter, the description carries most of the burden and delivers very little. It omits the effect of the toggle, its persistence, the resulting state, and how it interacts with the debug_function/run_function family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single cms_file_id parameter, so the schema already documents it. The description's 'for a CMS file' merely restates the parameter's target without adding format, source, or lookup semantics. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb (toggle) and resource (debug render mode for a CMS file), so the basic action is identifiable. However, 'debug render mode' is unexplained jargon, and nothing distinguishes it from the many debug/function siblings (debug_function, run_function, update_cms_file). It states what but not what it means in practice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to, or how it relates to alternatives like debug_function or update_cms_file. The only implied context is that a CMS file must exist. An agent must guess at the use case and any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uninstall_appADestructiveInspect
Uninstall (remove) an installed application from the current site.
Pass the app's subscription id — get it from list_apps (the id field) or get_app.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | App subscription id (from list_apps / get_app) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the destructive profile is covered by structured data. The description adds the 'current site' scope, which is useful, but says nothing about reversibility, whether app data is permanently deleted, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste; the action and scope come first, followed by the practical how-to for the id. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers purpose, scope, and the id source, which is enough to invoke correctly. A brief note on irreversibility would have closed the remaining gap, though annotations already signal destructiveness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents the id parameter with its source (list_apps / get_app). The description merely repeats that provenance, adding no syntax or format meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (uninstall/remove) and resource (an installed application) plus scope (from the current site). An agent can distinguish it from install_app, update_app, and update_app_review without inspecting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to obtain the required id (from list_apps `id` field or get_app), which is concrete prerequisite guidance. It stops short of stating when-to-use vs when-not relative to sibling lifecycle tools like update_app, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_appAInspect
Update an installed app's configuration. Pass the app subscription id and an attrs object
that is merged onto the subscription — usually { settings: {...} }, optionally { status }.
For the product-review app, prefer update_app_review (it also propagates shop_info).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | App subscription id (from list_apps / get_app) | |
| attrs | Yes | Fields to update, e.g. { "settings": { ... }, "status": 1 } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the write nature is already known. The description adds meaningful behavior beyond that: attrs is 'merged onto the subscription' (not replaced), with typical shape { settings } and optional { status }, plus the side-effect note that update_app_review propagates shop_info. Missing auth/permission requirements keeps it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, followed by the parameter contract and then the sibling routing. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter write tool with no output schema and only a minimal annotation, the description covers purpose, argument semantics, and sibling routing adequately. It leaves out permission/error behavior, which would be the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema cannot convey: that attrs is merged rather than replaced, and the conventional keys ('usually { settings: {...} }, optionally { status }'). That is genuine added value for a free-form additionalProperties object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an installed app's configuration') and explicitly differentiates from the near-named sibling update_app_review. An agent can distinguish this from install_app/uninstall_app/update_app_review without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: 'For the product-review app, prefer update_app_review.' That is a real when-to-use-this-vs-alternative statement. It does not, however, cover prerequisites or other cases (e.g. when to install vs update), so it is slightly short of full coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_reviewAInspect
Update the product-review app's settings (e.g. shop_info, auto-approve, display options).
Pass the review app's subscription id (get_app with type "product_review") and the full settings object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Review app subscription id (get_app type=product_review) | |
| settings | Yes | Review app settings object, e.g. { "shop_info": { ... }, "auto_approve": true } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already flags this as a mutation, so the bar is lower. The description earns credit for "Pass ... the full `settings` object," which hints at replacement semantics rather than a merge, but it does not spell out whether omitted keys are cleared, whether changes are reversible, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the purpose is front-loaded and the id-lookup instruction follows immediately. Every sentence carries weight, though the parenthetical field list is somewhat loose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with full schema coverage, an annotation flagging intent, and no output schema, the description covers purpose, how to obtain the id, and the expected settings payload. Only the write semantics (replace vs. merge, what gets destroyed) remain thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema and the description largely restates the id guidance. The "full settings object" phrasing adds a mild semantic nuance (whole-object replacement) but no field-level detail beyond the schema example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update the product-review app's settings") and names the kinds of fields affected (shop_info, auto-approve, display options). It is distinguishable from the generic update_app sibling by the product-review scope, though it never explicitly says how it differs from update_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds a useful retrieval hint for the id (get_app with type "product_review"), which is contextual guidance rather than pure when-to-use. It never states when to prefer this over update_app or what preconditions must hold for the review app to accept settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleAInspect
Update a blog article. Only the fields you pass are changed — each one becomes a command in the same dashboard pipeline create_article uses. NOTE: renaming regenerates the slug, so pass slug in the SAME call if you want a custom one (it is applied after the rename).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Article ID | |
| seo | No | SEO settings to change; other existing SEO tags are kept. Pass "" to clear a field. | |
| name | No | New title (regenerates the slug unless slug is also passed) | |
| slug | No | New custom slug | |
| tags | No | Article TAG IDs (uuids from the blog tag list) — not free text | |
| images | No | Hosted image URLs; the first is the cover image | |
| content | No | New HTML content (replaces the old content) | |
| summary | No | New summary / excerpt | |
| is_hidden | No | Hide from public | |
| category_ids | No | Blog category IDs to file the post under (added, existing ones are kept) | |
| published_at | No | Publish date, ISO/naive datetime (render_inserted_at) | |
| remove_category_ids | No | Blog category IDs to unfile the post from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries most of the burden and does it well: it discloses the partial-mutation model, ties each field to a create_article pipeline command, and flags that renaming regenerates the slug with ordering semantics for the slug param. It stops short of auth, reversibility, or failure behavior, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, the mutation contract follows, and the slug caveat is clearly marked as a NOTE. Three sentences with little waste; the 'dashboard pipeline create_article uses' clause is slightly implementation-flavored but still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, nested mutating tool with no output schema and only a readOnlyHint annotation, the description covers the one non-obvious behavior an agent could get wrong (rename/slug ordering) and the partial-update model. Auth requirements and error/rollback behavior are unaddressed, but the fully-described schema carries the remainder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds the cross-parameter ordering rule ('applied after the rename') that the slug schema field does not state, plus a global 'only passed fields change' rule spanning all 12 params. That is meaningful semantics beyond the per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a blog article') that is easy to separate from list_articles, get_article, create_article, and delete_article by name. It references the create_article pipeline for context but never explicitly says how to choose between this and its siblings, so it lands at clear-but-undifferentiated rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The partial-update contract ('Only the fields you pass are changed') is genuinely useful usage guidance, and the slug note is a real edge case. However, there is no explicit when-to-use versus create_article / delete_article, and no stated prerequisites or exclusions, so usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_authAInspect
Update authentication credentials. All values are saved to local database — next session auto-restores them. Get token and session_id from browser DevTools → Network tab → copy from any API request headers
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | JWT Bearer token (from Authorization header) | |
| api_url | No | API base URL (e.g. https://api.storecake.io) | |
| session_id | No | Session ID (from x-session-id header) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false (it mutates). The description adds genuine behavioral context beyond that: values persist to a local database and auto-restore on the next session. It still omits whether credentials are validated, whether the update overwrites or invalidates the existing session, and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and zero filler. The second sentence is practical and earns its place, though the DevTools arrow-chain is slightly dense formatting mid-description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no required parameters, so the description carries more burden than it does. It covers persistence but is silent on validation, overwrite/invalidation of the current session, and what a failed credential write looks like — gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns an extra point by explaining where the token and session_id values physically come from (DevTools → Network → request headers). It does not extend meaning for api_url, which stays schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update authentication credentials") and is unambiguous about what changes. No sibling tool in this set touches auth credentials, so differentiation is inherently clear, though the description never names a related or conflicting tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent reads it as "call when you need to set credentials," but there is no explicit when/when-not, no condition for calling it, and no note on what an update does to an already-authenticated session. The DevTools instruction is acquisition guidance rather than use-case guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_blog_categoryAInspect
Update a blog/article category (name, description, image, slug, SEO). Pass id + fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Blog category id | |
| seo | No | SEO settings to change; other existing SEO tags are kept. Pass "" to clear a field. | |
| name | No | New name | |
| slug | No | New custom slug | |
| image | No | New hosted image URL | |
| description | No | New description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description must carry behavioral weight. 'fields to change' usefully implies a partial update (unspecified fields untouched), but it omits permission needs, reversibility, and what happens to fields not passed. It adds a little beyond the annotations but leaves real gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and resource followed by the invocation hint. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with nested SEO object, no output schema, and only a readOnlyHint annotation, the description is minimally adequate. The schema is rich enough that return values needn't be explained, but permission and side-effect context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the nested SEO object. The description's field list ('name, description, image, slug, SEO') merely restates what the schema provides and adds no format or edge-case detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('blog/article category') and enumerates the updatable fields (name, description, image, slug, SEO). The resource naming distinguishes it from update_product_category and update_article, though it does not explicitly route among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass id + fields to change' gives the minimal invocation pattern and implies partial-update usage, but there is no guidance on when to prefer this over siblings or any prerequisites/exclusions. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cms_fileBInspect
Update the code content of an existing CMS file
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | CMS file ID | |
| name | No | Rename file | |
| content | Yes | New code content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false already declares this is a mutation, and the description confirms it via 'Update'. The word 'existing' usefully signals the file must already exist (no upsert), but there is no disclosure of permissions, reversibility, versioning interplay, or whether content is replaced wholesale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the key constraint front-loaded, zero filler. It loses a point only because its brevity drops the rename functionality rather than for any verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no output schema, the schema carries parameter detail and the annotation carries the safety profile, so the description is minimally viable. It still leaves the rename behavior and usage context unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented with descriptions. The description only echoes the `content` parameter ('code content') and ignores the rename `name` parameter, adding essentially no meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (code content of a CMS file), making it clearly distinct from create_cms_file and list_cms_files. However, it omits the rename capability that the `name` parameter exposes, so it does not fully describe what the tool can change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus siblings like create_cms_file or save_file_version, nor any preconditions other than the implied 'existing' file. An agent must infer the selection context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collection_columnsAInspect
Add or change a collection's custom columns. Reads the current schema, then PATCHes it with the system columns + your custom columns (the PATCH replaces the whole schema, so omitting a column drops it).
| Name | Required | Description | Default |
|---|---|---|---|
| columns | Yes | The FULL set of custom columns the table should have. | |
| collection_id | Yes | Collection id (from list_collections / get_collection). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description carries the behavioral burden and does so well: it discloses the read-then-PATCH sequence and, critically, that the PATCH replaces the whole schema so omitting a column drops it. That non-obvious destructive side effect is exactly the kind of context annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the purpose and immediately followed by the operational caveat. Every clause earns its place and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers purpose, mechanism, and the destructive replace semantics. It omits permission/auth requirements and whether changes apply immediately, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies that 'columns' is combined with system columns and that the supplied set replaces the existing schema, reinforcing the schema's 'FULL set' note with the drop-on-omission consequence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Add or change a collection's custom columns'), so the agent immediately knows this mutates a collection's schema. It does not explicitly contrast with any sibling (e.g., create_collection or update_collection if it exists), but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the mechanism description ('Reads the current schema, then PATCHes it'), which tells the agent what the tool is for operationally, but there is no explicit when-to-use vs when-not or named alternative. No sibling overlap is flagged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_global_sourceAInspect
Replace full source of a global source. IMPORTANT: Before calling this tool, you MUST:
Read existing source with get_global_source_detail first
Show the user what will change and get explicit confirmation
NEVER call without user approval — this replaces the ENTIRE source Safeguarded: blocks if new source is <50% of existing size. For element-level changes, prefer update_global_source_element instead.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | New source configuration (JSON object) | |
| global_source_id | Yes | Global source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=false, so the description carries the rest and does so well: it discloses that the operation is destructive full-replacement, that it will be blocked if the new source is under 50% of existing size, and that explicit user approval is mandatory. These are non-obvious guardrails an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, followed by a numbered imperative workflow and the safeguard note. Nearly every sentence earns its place; the only mild redundancy is item 3 restating the approval requirement already implied by item 2.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive mutation with no output schema, the description covers the safety profile, the prerequisite read step, the confirmation gate, the safeguard threshold, and the sibling alternative. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the `source` parameter is a wholesale replacement of the ENTIRE source rather than a merge, which the schema's terse "New source configuration (JSON object)" does not convey. The 50%-size safeguard also clarifies expected input shape, though format details remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ("Replace full source of a global source") and immediately scopes it as whole-source replacement, which is the exact axis that separates it from update_global_source_element. An agent can distinguish it from siblings like update_global_source_contents and update_global_source_elements without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit pre-call workflow (read via get_global_source_detail, show the user, get explicit confirmation) and names the alternative tool plus the condition that selects it (element-level changes -> update_global_source_element). When-to-use and when-not-to-use are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_global_source_contentsAInspect
Update multilingual contents (upsert). Each entry: global_source_id, language_code, content. IMPORTANT: Before calling, you MUST read existing contents with get_global_source_contents first, then show the user what will change and get explicit confirmation. NEVER update without user approval.
| Name | Required | Description | Default |
|---|---|---|---|
| contents | Yes | Array of content entries to upsert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is readOnlyHint=false, so the description carries most of the burden and does well: it discloses upsert semantics (create-or-overwrite), an ordering requirement (read before write), and a hard human-approval gate. It does not state permission requirements or exactly what happens to entries omitted from the array, which keeps it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the entry shape, then the mandatory-safety block in caps. Every sentence earns its place and the ordering matches how an agent consumes it. The 'IMPORTANT' block is slightly long but justified by the destructive-potential of an unconfirmed upsert.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single, fully documented array parameter, the description supplies the missing behavioral context (upsert, read-first, confirmation). Return-value behavior is unspecified but not needed here; only the approval/rollback consequence of the write is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested fields are already documented; the description only restates three of the four entry keys and omits type_component. Baseline 3 applies since the schema does the heavy lifting and the description adds no format or validation detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Update multilingual contents) and adds the key semantic qualifier '(upsert)', which tells the agent it may both create and overwrite. It also enumerates the entry shape (global_source_id, language_code, content), making it clearly distinguishable from siblings like update_global_source_element or update_global_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite workflow: read with get_global_source_contents first, show the user the diff, and obtain explicit confirmation before writing. It names the sibling tool to use for the read step. It does not, however, disambiguate against update_global_source_element or update_global_source, so the routing is only partially complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_global_source_elementAInspect
Update a single element within a global source. Two-step process: STEP 1: Call with dry_run=true (default) → returns diff of what will change. STEP 2: Show the diff to the user and ask for confirmation. NEVER proceed without explicit user approval. STEP 3: Only after user confirms, call again with dry_run=false to apply. IMPORTANT: You MUST show the diff to the user and get explicit "yes/ok/confirm" before calling with dry_run=false. Skipping confirmation risks data loss. Merge rules: style/config/specials = shallow merge, responsive = merge by bp key. events/bindings = REPLACE the whole array — pass the COMPLETE list (read it first); entries are auto-normalized (id + eventName filled in).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | CSS style properties to merge | |
| config | No | Config properties to merge | |
| events | No | Complete events array (replaces existing) | |
| dry_run | No | Preview only (true) or apply changes (false). Defaults to confirm_mode setting. Use toggle_confirm_mode to change default. | |
| bindings | No | Complete bindings array (replaces existing) | |
| specials | No | Specials to merge (text, custom_class, custom_css) | |
| component | No | Component hint for faster lookup | |
| element_id | Yes | Element ID to update (e.g. 'TEXT-3', 'BUTTON-1') | |
| responsive | No | Responsive overrides (e.g. {bp1: {style: {...}}}) | |
| global_source_id | Yes | Global source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=false, so the description carries the rest and delivers well beyond it: mandatory dry-run-first workflow, confirmation requirement, data-loss risk if skipped, and explicit merge-vs-replace semantics for each field group. This is exactly the behavioral context an agent needs before invoking a destructive write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and clearly structured with STEP markers and a merge-rules block. Slightly redundant in places — 'NEVER proceed without explicit user approval' and the IMPORTANT warning restate the same confirmation requirement — but the emphasis is warranted given the data-loss risk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the workflow, the return of STEP 1 (a diff), the confirmation gate, and the merge/replace rules for all the tricky object-array parameters. An agent has everything needed to call it safely in the correct order.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds non-obvious semantics the schema does not: style/config/specials shallow merge, responsive merges by bp key, and events/bindings fully REPLACE the array (requiring the complete list, auto-normalized with id + eventName). These are genuine per-parameter behaviors beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update a single element within a global source.' The word 'single' implicitly distinguishes it from the plural sibling update_global_source_elements, but it never names that sibling explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives very explicit procedural guidance: dry_run first, show diff, confirm, then apply with dry_run=false. This is strong when-to-use context. However, it does not name alternatives (e.g., update_global_source_elements for batch edits, or update_global_source for the source itself), so the routing against sibling tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_global_source_elementsAInspect
Batch update multiple elements in one global source. Two-step process: STEP 1: Call with dry_run=true (default) → returns per-element diff. STEP 2: Show all diffs to the user and ask for confirmation. NEVER proceed without explicit user approval. STEP 3: Only after user confirms, call again with dry_run=false to apply. IMPORTANT: You MUST show the diff to the user and get explicit "yes/ok/confirm" before calling with dry_run=false. Skipping confirmation risks data loss. Same merge rules: style/config/specials = shallow merge, events/bindings = replace.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview only (true) or apply changes (false). Defaults to confirm_mode setting. | |
| updates | Yes | Array of element updates | |
| component | No | Component hint for faster lookup | |
| global_source_id | Yes | Global source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite only readOnlyHint=false in annotations, the description adds critical behavior: dry_run defaults to true, returns per-element diffs, requires explicit user confirmation before applying, and risks data loss if skipped. It also documents merge semantics that go well beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then structures the required workflow in three clear steps. It is somewhat repetitive with repeated confirmation warnings, but the repetition is defensible for a destructive batch update.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a batch mutation tool with no output schema, the description supplies the essential operating protocol, safety gates, and merge rules an agent needs to invoke it correctly. Nothing material is missing for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful parameter semantics: dry_run default behavior and update-specific merge rules (style/config/specials shallow merge; events/bindings replace). The component hint parameter is not described, but schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a clear verb and resource: 'Batch update multiple elements in one global source.' The word 'batch' and 'multiple' distinguishes it from the singular sibling update_global_source_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit step-by-step usage for dry_run=true preview, user confirmation, and dry_run=false apply, including strong when-not guidance ('NEVER proceed without explicit user approval'). It does not explicitly compare to the singular alternative, but the batch scope implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_http_functionAInspect
Write the FULL HTTP function file content. Best for: writing new features, major refactors, or changes that touch multiple functions. For small targeted edits (fix one function, add one function), use edit_http_function instead. After update, auto-deploys to the bundle service
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Full JS code content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the bare readOnlyHint=false annotation, the description discloses two meaningful behaviors: the write replaces the entire file ('FULL... content') and it auto-deploys to the bundle service after updating. That side effect is not captured by annotations. It stops short of noting permissions, reversibility, or failure modes, so not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: core action, when-to-use plus alternative, and the deploy side effect. No filler; each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter write tool with no output schema, the description covers purpose, usage, replacement semantics, and the auto-deploy side effect. It is essentially complete; only optional extras like auth or rollback behavior are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and a single parameter, the schema already documents 'content'. The description still adds value by stressing that content must be the FULL file rather than a diff, which is the key semantic distinction from edit_http_function. Marginal but real added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Write the FULL HTTP function file content') and explicitly distinguishes itself from the sibling edit_http_function. An agent can tell exactly what this does and how it differs from the targeted-edit alternative without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use cases ('new features, major refactors, or changes that touch multiple functions') and names the alternative with its own condition ('For small targeted edits... use edit_http_function instead'). The routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pageAInspect
Update page properties: name, slug, homepage, SEO ("Cài đặt SEO") and settings. seo / settings are MERGED into the page's current settings — fields you don't pass are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | SEO → settings.seo (title/description/keyword/favicon/thumbnail/og_*). Merged; other SEO fields kept. Tokens {{name_page}}/{{name_site}} allowed. | |
| name | No | New name | |
| slug | No | New slug WITHOUT a leading slash (e.g. 'about', 'cart'). A leading '/' is stripped automatically — '/cart' would 404 on the storefront. | |
| page_id | Yes | Page ID | |
| settings | No | Other page settings keys to merge (top-level keys replace) | |
| is_homepage | No | Set as homepage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only readOnlyHint=false, so the description carries real weight here. It discloses the non-obvious merge semantics for 'seo' and 'settings' ('fields you don't pass are kept'), which is exactly the kind of partial-update behavior an agent must know to avoid clobbering data. It omits the counter-case documented in the schema (markups REPLACES the page's list, [] removes them) and says nothing about permissions or the failure mode of an invalid slug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the payload ('Update page properties: ...') is front-loaded ahead of the merge caveat. The Vietnamese UI label '(\"Cài đặt SEO\")' is directly actionable for an agent navigating admin strings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Mutation tool with one required param, nested SEO/settings objects, no output schema and minimal annotations. The description covers the essential non-obvious risk (merge vs replace at the top level), the schema covers per-field detail including slug and markups semantics, and annotations flag it as a write. Adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the slug formatting and the markups-replaces rule, so the schema already documents every parameter in detail. The description restates the parameter set and the merge behavior but adds no format, constraint or example information beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update page properties') and enumerates the affected fields (name, slug, homepage/hompage flag, SEO, settings), which separates it in practice from siblings like update_page_content, update_page_source and update_page_element. It never names a sibling explicitly, so differentiation must be inferred from the field list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The field enumeration implies 'use this for page metadata/settings, not page content or source', but there is no explicit when-to-use statement, no reference to the overlapping siblings (update_page_content, update_page_source, update_page_elements), and no prerequisites (e.g. a draft must exist first). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_page_contentAInspect
Create/update page content for a specific language. IMPORTANT: Before calling, you MUST read existing content with list_page_contents first, then show the user what will change and get explicit confirmation. NEVER update without user approval.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Translations keyed by element id → field, e.g. { "<elementId>": { "text": "Hello" } } (also "placeholder", or "options": [{ id, name }]). Replaces this language's whole map — merge into the existing one. | |
| page_id | Yes | Page ID | |
| meta_tags | No | SEO meta tags | |
| language_code | Yes | Language code (e.g. 'en', 'vi') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description usefully adds the required read-before-write and explicit-user-approval workflow. The destructive semantic (whole-language map replacement) lives in the schema, not the prose, but the approval disclosure is meaningful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the critical constraint front-loaded after the purpose statement. The all-caps emphasis is slightly heavy but the content is dense and earns its place without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description covers the highest-risk behavior — the mandatory approval workflow. The replacement-merge semantics are handled by the schema, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the content map structure and replacement semantics. The description adds only the notion of a per-language scope, which is already implied by language_code in the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (create/update) and resource (page content) scoped to a single language, so the agent knows exactly what operation occurs. It does not explicitly differentiate from close siblings like update_page_element or update_page_source, but the resource is concrete enough to distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit mandatory pre-call workflow: read existing content via list_page_contents, show the user, and obtain confirmation. However it never states when this tool should be chosen over update_page_element/update_page_elements or update_page_source, so the alternative-selection guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_page_elementAInspect
Update properties of a specific element in page source. Two-step process: STEP 1: Call with dry_run=true (default) → returns diff of what will change. STEP 2: Show the diff to the user and ask for confirmation. NEVER proceed without explicit user approval. STEP 3: Only after user confirms, call again with dry_run=false to apply. IMPORTANT: You MUST show the diff to the user and get explicit "yes/ok/confirm" before calling with dry_run=false. Skipping confirmation risks data loss. Merge rules: style/config/specials = shallow merge, responsive = merge by bp key. events/bindings = REPLACE the whole array — pass the COMPLETE list (read it first with get_page_element so you don't drop the others); entries are auto-normalized (id + eventName filled in, so you can pass just { action, ...fields } / { target }).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | CSS style properties to merge (e.g. {color: '#fff', 'font-size': '16px'}) | |
| config | No | Config properties to merge | |
| events | No | Complete events array (replaces existing) | |
| dry_run | No | Preview only (true) or apply changes (false). Defaults to confirm_mode setting. Use toggle_confirm_mode to change default. | |
| page_id | Yes | Page ID | |
| bindings | No | Complete bindings array (replaces existing) | |
| specials | No | Specials to merge (text, custom_class, custom_css, etc.) | |
| element_id | Yes | Element ID to update (e.g. 'TEXT-3', 'BUTTON-1') | |
| responsive | No | Responsive breakpoint overrides (e.g. {bp1: {style: {...}, config: {...}}}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the real load and does so richly: per-field merge semantics (shallow for style/config/specials, by bp key for responsive), full REPLACE for events/bindings, auto-normalization of entries, dry_run defaulting to the confirm_mode setting, and an explicit data-loss warning. This is exactly the behavioral context annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the workflow and broken into labeled steps, but steps 2 and 3 plus the follow-up IMPORTANT sentence restate the same confirmation requirement three times. Slightly redundant, though the merge-rules block is dense and earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema and near-empty annotations, the description covers the critical path: preview semantics, confirmation gate, and merge behavior, and it notes dry_run returns a diff. It leaves the apply-path response shape unspecified, a minor gap given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds meaning the schema does not: which fields merge vs replace, that events/bindings require the COMPLETE array, and that dry_run defaults from the confirm_mode setting (toggle_confirm_mode changes it). This is additive rather than redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update properties of a specific element in page source.' The singular 'a specific element' distinguishes it from the plural sibling update_page_elements and the coarser update_page_source. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit three-step workflow (dry_run preview, user confirmation, apply) and names get_page_element as the read-first companion for events/bindings. However, it never states when to prefer this over siblings like update_page_elements or update_page_source, so the routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_page_elementsAInspect
Batch update multiple elements in one page. Two-step process: STEP 1: Call with dry_run=true (default) → returns per-element diff. STEP 2: Show all diffs to the user and ask for confirmation. NEVER proceed without explicit user approval. STEP 3: Only after user confirms, call again with dry_run=false to apply. IMPORTANT: You MUST show the diff to the user and get explicit "yes/ok/confirm" before calling with dry_run=false. Skipping confirmation risks data loss. Same merge rules: style/config/specials = shallow merge, events/bindings = replace.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview only (true) or apply changes (false). Defaults to confirm_mode setting. | |
| page_id | Yes | Page ID | |
| updates | Yes | Array of element updates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the behavioral burden and does so richly: a mandatory confirmation gate, explicit data-loss risk, dry_run default tied to confirm_mode, and per-field merge semantics (shallow merge for style/config/specials, replace for events/bindings). This is context well beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation, then a clean STEP-by-STEP structure with the safety rule emphasized. The repetition ('NEVER proceed', 'You MUST', 'risks data loss') is slightly redundant but defensible for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it explains the dry_run return (per-element diff), the apply path, and merge behavior. An agent has everything it needs to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning the schema does not carry: which update fields shallow-merge versus replace, and the return format of the dry_run call. It stops short of detailing individual field shapes, but it exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Batch update multiple elements in one page.' The 'batch/multiple' framing distinguishes it from the singular sibling update_page_element. It doesn't explicitly name siblings, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit three-step workflow: call with dry_run=true first, show diffs and get approval, then call with dry_run=false. It states when-not (never skip confirmation) and the tool's own dry_run default. Nothing about selection or sequencing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_page_sourceAInspect
Directly update the full page source JSON. IMPORTANT: Before calling this tool, you MUST:
Read existing source with get_page_source first
Show the user what will change and get explicit confirmation
NEVER call without user approval — this replaces the ENTIRE page source Safeguarded: blocks if new source is <50% of existing size.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Full page source object (sections tree) or JSON string | |
| page_id | Yes | Page ID | |
| custom_code | No | Custom code (CSS/JS) for this page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description carries the burden and discloses critical behavior: it replaces the ENTIRE page source, requires user approval, and is safeguarded against shrinking the source to <50%. These are exactly the destructive-operation details an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and well organized into a purpose statement, mandatory steps, and a safeguard note. Every sentence carries safety or scope information without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and minimal annotations, the description covers the critical safety workflow and size guard. However, it does not address how the optional source parameter or custom_code behaves, which leaves a small gap in an otherwise complete operational picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the three parameters are already documented in the schema. The description adds only the high-level meaning of 'full page source JSON' and does not clarify optional source behavior or custom_code, so it matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ('update the full page source JSON') and scopes it to the entire source, which differentiates it from element/content update siblings. It also names get_page_source as the read counterpart, reinforcing the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lays out mandatory prerequisites (read with get_page_source, show user changes, get explicit confirmation) and an explicit prohibition ('NEVER call without user approval'), which is strong when-not guidance. It does not name alternative update tools for partial edits, so it falls short of the top score that requires alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productAInspect
Update an existing product. Pass product_id + only the fields to change. To change price/stock, pass variations (get_product first to see the existing variation shape). Images must be hosted CDN urls (search_images cdn_url / upload_images).
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | SEO settings to change; other existing SEO tags and the slug are kept. Pass "" to clear a field. | |
| name | No | New name | |
| images | No | New hosted image URLs; first becomes the thumbnail | |
| product_id | Yes | Product id to update | |
| variations | No | Replace variations (price/stock/SKU per variant). Reuse existing custom_ids from get_product to edit in place. | |
| description | No | New description (HTML allowed) | |
| category_ids | No | Replace the product's categories | |
| is_published | No | Publish/unpublish the product |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is readOnlyHint=false, so the mutation profile is confirmed but nothing more. The description adds real behavioral context beyond it: partial-patch semantics ("only the fields to change"), a hard constraint that images must be hosted CDN URLs, and the get_product prerequisite for editing variations in place.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the operation and its patch semantics, followed by variation workflow and image-host constraint. Every sentence earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 8-parameter update tool with nested objects and no output schema, the description covers the critical workflow (patch semantics, variations, hosted images) and defers field-level detail to the rich schema. It omits any statement of what the call returns or success behavior, a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, every parameter (including the nested seo and variations shapes) is already documented in the schema, so the baseline is 3. The description reinforces product_id, variations and images workflow but adds no syntax or field detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ("Update an existing product") with the key precondition (product_id required, only changed fields passed). It implicitly differentiates from create_product/delete_product/set_product_published by the "update" verb and field-patch framing, but does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable usage rules: pass only the fields to change, use variations for price/stock, and call get_product first to learn the existing variation shape. It also names helper tools (search_images/upload_images) for image URLs, though it stops short of stating when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_product_categoryBInspect
Update a product category (name, image, description, visibility, SEO). Pass id + fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Category id | |
| seo | No | SEO settings to change; other existing SEO tags are kept. Pass "" to clear a field. | |
| name | No | New name | |
| image | No | New hosted image URL | |
| hidden | No | Hide (true) or show (false) the category | |
| description | No | New description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries most of the behavioral burden. 'Pass id + fields to change' conveys a partial-update semantic (unspecified fields are preserved), which is genuinely useful beyond the annotation. However, it does not state permissions required, whether SEO blocks overwrite, or any side effects on catalog visibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the verb and field list. Nothing is padding, though it is arguably a bit too terse for a tool with a large nested SEO object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate minimum for a mutation tool: it names the resource and the mutable fields. But with a large nested SEO object, no output schema, and only a readOnly annotation, the description should at least note partial-update semantics, permission needs, or how the SEO block interacts with existing tags. The gaps are survivable because the schema is fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including rich nested descriptions for the SEO object (replacement behavior, clearing with ""), so the schema does the heavy lifting. The description lists the same top-level fields but adds no syntax or semantics beyond that. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (update) + resource (product category) with an enumeration of the mutable fields (name, image, description, visibility, SEO). It is clearly distinguishable from update_blog_category and create_product_category by resource. It loses a point only because it does not explicitly call out the sibling it is not (e.g. create vs update for the same resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass id + fields to change' describes invocation mechanics, not when to choose this tool over update_blog_category, create_product_category, or update_product. There are no stated prerequisites (required permission, whether the category must already exist) and no exclusions. Minimal guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_site_custom_codeAInspect
Update custom code (CSS/JS) for the entire site. Only sends fields you specify — others remain unchanged. IMPORTANT: Before calling, you MUST read existing code with get_site_custom_code first, then show the user what will change and get explicit confirmation. NEVER update without user approval.
code_before_head: HTML/script inserted before
code_before_body: HTML/script inserted before
code_custom_css: Custom CSS (auto-wrapped in )
code_custom_javascript: Custom JavaScript
| Name | Required | Description | Default |
|---|---|---|---|
| code_custom_css | No | Custom CSS for the site | |
| code_before_body | No | HTML/script to insert before </body> | |
| code_before_head | No | HTML/script to insert in <head> | |
| code_custom_javascript | No | Custom JavaScript for the site |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries most of the burden. It adds genuinely useful behavior beyond that: the merge semantics (unspecified fields are left unchanged) and a mandatory read-then-confirm approval workflow. It stops short of covering failure modes, auth/permission requirements, or publish timing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and the critical approval constraint before the per-field list, so the most important guidance is not buried. The bullet list is compact and each entry earns its place, though the repeated field mapping slightly overlaps the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and full parameter coverage, the definition supplies the essential workflow, merge semantics, and field semantics. It omits error behavior and whether changes take effect immediately, which are minor for this operation type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3. The description adds real meaning over the schema by noting code_custom_css is auto-wrapped in <style> and clarifying insertion points (before </head> / before </body>), which the terse schema strings do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Update custom code (CSS/JS) for the entire site') and clarifies the mutation is partial ('Only sends fields you specify — others remain unchanged'). It names the read sibling get_site_custom_code as a prerequisite, but never distinguishes itself from the write sibling append_site_custom_code, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit and forceful about when and how to use it: it MUST be preceded by get_site_custom_code, the user must be shown the diff, and explicit confirmation must be obtained before updating. The alternative read tool is named and the pre-condition is spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_imagesAInspect
Convert external image URLs, data: URIs, or LOCAL FILE PATHS into site-hosted CDN URLs by reading/downloading each image and re-uploading it to the WebCake backend. Use this whenever the user supplies their OWN images (their URLs or files from their machine), or a page is built from a reference HTML/URL. The returned CDN URLs go straight into an image element's specials.src / runtime.config.src, or a product/category image. This is REQUIRED for any external image (incl. Pexels search results) because the storefront only renders whitelisted WebCake-CDN image domains. Results are cached per site, so re-uploading the same source is free. Processes up to 20 entries per call in parallel; non jpeg/png/webp inputs are converted to JPEG. UPLOADS BY DEFAULT (dry_run defaults to FALSE — this touches no account data): returns an "images" map (original source → hosted URL). Pass dry_run:true to only preview the entries that WOULD be processed (local paths report whether the file exists + its size) without any network/filesystem upload. Local file paths are only permitted when the MCP server runs locally (stdio); on the remote HTTP transport they are rejected per-entry.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Image sources — 1–20 per call. Accepts: http(s) URLs, data:image/...;base64,... URIs, or local file paths (absolute /path, ~/path, file:// — stdio mode only). | |
| dry_run | No | Default FALSE — actually reads/downloads and uploads, returning hosted URLs. Set true to only preview what would be processed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantial context: uploads happen by default, results are cached per site so re-uploading is free, up to 20 entries process in parallel, non-jpeg/png/webp inputs are converted to JPEG, and local file paths only work over stdio transport (rejected per-entry on remote HTTP). These are real behavioral traits an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and each subsequent sentence covers a distinct concern (when to use, required-ness, caching, throughput/conversion, dry_run, transport limits). Slightly long and mildly redundant where it restates 'dry_run defaults to FALSE' already present in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description covers the return shape ('images' map of original source to hosted URL), the side effects, the caching model, and the transport-specific limitation. An agent has everything needed to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds meaning beyond the schema: dry_run preview reports whether a local file exists and its size, and the local-path transport restriction is spelled out as a per-entry rejection. Minor overlap with schema wording keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource+transformation: 'Convert external image URLs, data: URIs, or LOCAL FILE PATHS into site-hosted CDN URLs by reading/downloading each image and re-uploading it to the WebCake backend.' An agent can immediately distinguish this from siblings like search_images (which discovers external images) and the destination is named (specials.src / runtime.config.src).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use triggers ('whenever the user supplies their OWN images', 'a page is built from a reference HTML/URL') and an explicit mandate ('REQUIRED for any external image incl. Pexels search results') with the reason (storefront only renders whitelisted CDN domains). The alternative path is implicitly named via the Pexels/search_images reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_pageARead-onlyInspect
Validate a page source ({ sections: [...] }). Returns errors (block saving: duplicate/missing ids, missing types) and warnings (unknown types, form fields without field_name, dangling event targets) plus stats. Always run this before build_page.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Page source object or JSON string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, consistent with a validator. The description adds genuine value beyond that by disclosing the severity model — which conditions block saving (duplicate/missing ids, missing types) versus which are only warnings (unknown types, form fields without field_name, dangling event targets).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the action, then the return contract, then the sequencing rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and mostly does: it names the error categories, warning categories, and the existence of 'stats'. It does not explain what stats contains or the exact error object shape, a minor residual gap for a validator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one optional parameter, so the baseline is 3. The description goes slightly further by showing the expected shape of 'source' as '{ sections: [...] }', which is not stated in the schema's 'object or JSON string' text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Validate a page source') and immediately enumerates what it produces (blocking errors, warnings, stats), which also distinguishes it from mutation siblings like build_page and update_page_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing guidance: 'Always run this before build_page' tells the agent exactly when this tool belongs in a workflow. There is no stated when-not condition or named alternative validator, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.34.1- Changed
add_section1 field changed- added
Input schema / properties / templateAdded value: +{ + "additionalProperties": false, + "description": "Insert a library section instead (ids from list_section_templates)", + "properties": { + "category_id": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" +}
- Changed
create_page13 fields changed- added
Input schema / properties / seo / properties / authorAdded value: +{ + "type": "string" +} - added
Input schema / properties / seo / properties / canonicalAdded value: +{ + "description": "Canonical URL", + "type": "string" +} - added
Input schema / properties / seo / properties / hidden_meta_tagsAdded value: +{ + "description": "Meta tag keys to hide, e.g. ['og:url']", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / seo / properties / markupsAdded value: +{ + "description": "Structured data markups (JSON-LD). REPLACES the page's list; [] removes them.", + "items": { + "additionalProperties": false, + "properties": { + "code": { + "description": "JSON-LD as a string, without <script>", + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "code" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / seo / properties / og_descriptionAdded value: +{ + "description": "Defaults to description", + "type": "string" +} - added
Input schema / properties / seo / properties / og_site_nameAdded value: +{ + "type": "string" +} - added
Input schema / properties / seo / properties / og_titleAdded value: +{ + "description": "Defaults to title", + "type": "string" +} - added
Input schema / properties / seo / properties / og_typeAdded value: +{ + "type": "string" +} - added
Input schema / properties / seo / properties / og_urlAdded value: +{ + "type": "string" +} - added
Input schema / properties / seo / properties / robotsAdded value: +{ + "description": "Robots meta, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"", + "type": "string" +} - added
Input schema / properties / seo / properties / site_name_markupAdded value: +{ + "description": "Emit the site-name markup (default on)", + "type": "boolean" +} - added
Input schema / properties / seo / properties / thumbnail / descriptionAdded value: +"Share image; also og:image" - added
Input schema / properties / seo / properties / thumbnail_altAdded value: +{ + "type": "string" +}
- Removed
fetch_images_for_alt_fill - Removed
list_image_elements - Changed
list_orders1 field changed- changed
Input schema / properties / status / descriptionPrevious value: -"Filter by status (0=pending, 50=confirmed, 100=shipping, 150=delivered, -1=cancelled)"New value: +"Filter by status: 0=new, 1=submitted, 2=shipped, 3=delivered, 4=returning, 5=returned, 6=canceled, 7=removed, 8=packing, 9=pending, 11=waiting, 12=wait_print, 13=printed, 15=part_returned, 16=received_money, 17=wait_submit, 20=ordered, 22=draft, 50=blocked. Omit or -1 = all (except removed/blocked)."
- Changed
list_page_contents2 fields changed- added
Input schema / properties / language_codeAdded value: +{ + "description": "With page_id: return just that language's content map", + "type": "string" +} - changed
Input schema / properties / page_id / descriptionPrevious value: -"Filter by Page ID"New value: +"Page ID — narrows the result to that page"
- Added
list_section_templates - Removed
read_image - Removed
read_images - Removed
scan_unique_images - Removed
set_image_alts - Changed
update_article1 field changed- added
Input schema / properties / seoAdded value: +{ + "additionalProperties": false, + "description": "SEO settings to change; other existing SEO tags are kept. Pass \"\" to clear a field.", + "properties": { + "canonical": { + "description": "Canonical URL (<link rel=canonical>)", + "type": "string" + }, + "custom_tags": { + "description": "Extra tags (\"Thẻ bổ sung\"), e.g. { \"type\": \"meta\", \"props\": { \"name\": \"author\", \"content\": \"Togi\" } }. Replaces a tag with the same name/property/rel.", + "items": { + "additionalProperties": false, + "properties": { + "props": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "type": { + "default": "meta", + "enum": [ + "meta", + "link" + ], + "type": "string" + } + }, + "required": [ + "props" + ], + "type": "object" + }, + "type": "array" + }, + "meta_description": { + "description": "Meta description (~155 chars)", + "type": "string" + }, + "og_description": { + "description": "Social share description (og:description)", + "type": "string" + }, + "og_image": { + "description": "Social share image URL (og:image), must be hosted", + "type": "string" + }, + "og_site_name": { + "description": "og:site_name", + "type": "string" + }, + "og_title": { + "description": "Social share title (og:title)", + "type": "string" + }, + "og_type": { + "description": "og:type, e.g. article / product", + "type": "string" + }, + "og_url": { + "description": "og:url", + "type": "string" + }, + "page_keywords": { + "description": "Comma-separated keywords", + "type": "string" + }, + "page_title": { + "description": "Title tag (~60 chars)", + "type": "string" + }, + "remove_tags": { + "description": "Remove tags by name/property/rel, e.g. [\"author\", \"og:url\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "robots": { + "description": "Robots meta, comma+space separated, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"", + "type": "string" + }, + "structured_data": { + "description": "Structured data markup (JSON-LD). REPLACES all existing markups; [] removes them.", + "items": { + "additionalProperties": false, + "properties": { + "json": { + "description": "JSON-LD object as a string, without <script>", + "type": "string" + }, + "name": { + "description": "Display name", + "type": "string" + } + }, + "required": [ + "name", + "json" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Added
update_blog_category - Changed
update_page2 fields changed- added
Input schema / properties / seoAdded value: +{ + "additionalProperties": false, + "description": "SEO → settings.seo (title/description/keyword/favicon/thumbnail/og_*). Merged; other SEO fields kept. Tokens {{name_page}}/{{name_site}} allowed.", + "properties": { + "author": { + "type": "string" + }, + "canonical": { + "description": "Canonical URL", + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "hidden_meta_tags": { + "description": "Meta tag keys to hide, e.g. ['og:url']", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyword": { + "type": "string" + }, + "markups": { + "description": "Structured data markups (JSON-LD). REPLACES the page's list; [] removes them.", + "items": { + "additionalProperties": false, + "properties": { + "code": { + "description": "JSON-LD as a string, without <script>", + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "code" + ], + "type": "object" + }, + "type": "array" + }, + "og_description": { + "description": "Defaults to description", + "type": "string" + }, + "og_site_name": { + "type": "string" + }, + "og_title": { + "description": "Defaults to title", + "type": "string" + }, + "og_type": { + "type": "string" + }, + "og_url": { + "type": "string" + }, + "robots": { + "description": "Robots meta, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"", + "type": "string" + }, + "site_name_markup": { + "description": "Emit the site-name markup (default on)", + "type": "boolean" + }, + "thumbnail": { + "description": "Share image; also og:image", + "type": "string" + }, + "thumbnail_alt": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "type": "object" +} - changed
Input schema / properties / settings / descriptionPrevious value: -"Page settings"New value: +"Other page settings keys to merge (top-level keys replace)"
- Changed
update_page_content1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Page content"New value: +"Translations keyed by element id → field, e.g. { \"<elementId>\": { \"text\": \"Hello\" } } (also \"placeholder\", or \"options\": [{ id, name }]). Replaces this language's whole map — merge into the existing one."
- Changed
update_product1 field changed- added
Input schema / properties / seoAdded value: +{ + "additionalProperties": false, + "description": "SEO settings to change; other existing SEO tags and the slug are kept. Pass \"\" to clear a field.", + "properties": { + "canonical": { + "description": "Canonical URL (<link rel=canonical>)", + "type": "string" + }, + "custom_tags": { + "description": "Extra tags (\"Thẻ bổ sung\"), e.g. { \"type\": \"meta\", \"props\": { \"name\": \"author\", \"content\": \"Togi\" } }. Replaces a tag with the same name/property/rel.", + "items": { + "additionalProperties": false, + "properties": { + "props": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "type": { + "default": "meta", + "enum": [ + "meta", + "link" + ], + "type": "string" + } + }, + "required": [ + "props" + ], + "type": "object" + }, + "type": "array" + }, + "meta_description": { + "description": "Meta description (~155 chars)", + "type": "string" + }, + "og_description": { + "description": "Social share description (og:description)", + "type": "string" + }, + "og_image": { + "description": "Social share image URL (og:image), must be hosted", + "type": "string" + }, + "og_site_name": { + "description": "og:site_name", + "type": "string" + }, + "og_title": { + "description": "Social share title (og:title)", + "type": "string" + }, + "og_type": { + "description": "og:type, e.g. article / product", + "type": "string" + }, + "og_url": { + "description": "og:url", + "type": "string" + }, + "page_keywords": { + "description": "Comma-separated keywords", + "type": "string" + }, + "page_title": { + "description": "Title tag (~60 chars)", + "type": "string" + }, + "remove_tags": { + "description": "Remove tags by name/property/rel, e.g. [\"author\", \"og:url\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "robots": { + "description": "Robots meta, comma+space separated, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"", + "type": "string" + }, + "structured_data": { + "description": "Structured data markup (JSON-LD). REPLACES all existing markups; [] removes them.", + "items": { + "additionalProperties": false, + "properties": { + "json": { + "description": "JSON-LD object as a string, without <script>", + "type": "string" + }, + "name": { + "description": "Display name", + "type": "string" + } + }, + "required": [ + "name", + "json" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
update_product_category1 field changed- added
Input schema / properties / seoAdded value: +{ + "additionalProperties": false, + "description": "SEO settings to change; other existing SEO tags are kept. Pass \"\" to clear a field.", + "properties": { + "canonical": { + "description": "Canonical URL (<link rel=canonical>)", + "type": "string" + }, + "custom_tags": { + "description": "Extra tags (\"Thẻ bổ sung\"), e.g. { \"type\": \"meta\", \"props\": { \"name\": \"author\", \"content\": \"Togi\" } }. Replaces a tag with the same name/property/rel.", + "items": { + "additionalProperties": false, + "properties": { + "props": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "type": { + "default": "meta", + "enum": [ + "meta", + "link" + ], + "type": "string" + } + }, + "required": [ + "props" + ], + "type": "object" + }, + "type": "array" + }, + "meta_description": { + "description": "Meta description (~155 chars)", + "type": "string" + }, + "og_description": { + "description": "Social share description (og:description)", + "type": "string" + }, + "og_image": { + "description": "Social share image URL (og:image), must be hosted", + "type": "string" + }, + "og_site_name": { + "description": "og:site_name", + "type": "string" + }, + "og_title": { + "description": "Social share title (og:title)", + "type": "string" + }, + "og_type": { + "description": "og:type, e.g. article / product", + "type": "string" + }, + "og_url": { + "description": "og:url", + "type": "string" + }, + "page_keywords": { + "description": "Comma-separated keywords", + "type": "string" + }, + "page_title": { + "description": "Title tag (~60 chars)", + "type": "string" + }, + "remove_tags": { + "description": "Remove tags by name/property/rel, e.g. [\"author\", \"og:url\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "robots": { + "description": "Robots meta, comma+space separated, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"", + "type": "string" + }, + "structured_data": { + "description": "Structured data markup (JSON-LD). REPLACES all existing markups; [] removes them.", + "items": { + "additionalProperties": false, + "properties": { + "json": { + "description": "JSON-LD object as a string, without <script>", + "type": "string" + }, + "name": { + "description": "Display name", + "type": "string" + } + }, + "required": [ + "name", + "json" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
3 tool updates
v1.31.10- Changed
delete_article2 fields changed- added
Input schema / properties / idsAdded value: +{ + "description": "Several article IDs to delete in one call", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "id" -]
- Changed
list_articles4 fields changed- changed
Input schema / properties / category_id / descriptionPrevious value: -"Filter by category"New value: +"Filter by blog category id" - changed
Input schema / properties / limit / descriptionPrevious value: -"Items per page"New value: +"Items per page (default 20)" - changed
Input schema / properties / page / descriptionPrevious value: -"Page number"New value: +"Page number (default 1)" - added
Input schema / properties / termAdded value: +{ + "description": "Search articles by title or slug", + "type": "string" +}
- Changed
update_article10 fields changed- removed
Input schema / properties / category_idRemoved value: -{ - "description": "Category ID", - "type": "string" -} - added
Input schema / properties / category_idsAdded value: +{ + "description": "Blog category IDs to file the post under (added, existing ones are kept)", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / content / descriptionPrevious value: -"New HTML content"New value: +"New HTML content (replaces the old content)" - added
Input schema / properties / imagesAdded value: +{ + "description": "Hosted image URLs; the first is the cover image", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / name / descriptionPrevious value: -"New title"New value: +"New title (regenerates the slug unless slug is also passed)" - added
Input schema / properties / published_atAdded value: +{ + "description": "Publish date, ISO/naive datetime (render_inserted_at)", + "type": "string" +} - added
Input schema / properties / remove_category_idsAdded value: +{ + "description": "Blog category IDs to unfile the post from", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / slug / descriptionPrevious value: -"New slug"New value: +"New custom slug" - changed
Input schema / properties / summary / descriptionPrevious value: -"New summary"New value: +"New summary / excerpt" - changed
Input schema / properties / tags / descriptionPrevious value: -"Tags"New value: +"Article TAG IDs (uuids from the blog tag list) — not free text"
1 tool update
v1.31.9- Changed
create_page1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"Page kind (main/store/member/blog/custom/error/maintain). store/member/blog need their data-source flag enabled — prefer build_page which auto-enables it."New value: +"Page kind (main/store/member/blog/custom/error/maintain). store/member/blog need their data-source flag enabled — prefer build_page which auto-enables it. main/error/maintain are one-per-site; use 'custom' for extra pages."
135 tool updates
v1.31.8- First observed
add_draft_section - First observed
add_section - First observed
append_site_custom_code - First observed
build_page - First observed
clear_page_draft - First observed
commit_page_draft - First observed
count_orders_by_status - First observed
create_article - First observed
create_blog_category - First observed
create_cms_file - First observed
create_collection - First observed
create_global_section - First observed
create_global_source - First observed
create_page - First observed
create_product - First observed
create_product_category - First observed
create_site - First observed
create_site_from_template - First observed
debug_function - First observed
delete_article - First observed
delete_collection - First observed
delete_global_section - First observed
delete_global_source - First observed
delete_page - First observed
delete_product - First observed
delete_product_category - First observed
edit_http_function - First observed
fetch_images_for_alt_fill - First observed
find_customer - First observed
get_active_promotions - First observed
get_app - First observed
get_article - First observed
get_build_guide - First observed
get_collection - First observed
get_combo_items - First observed
get_current_context - First observed
get_element - First observed
get_file_versions - First observed
get_global_section - First observed
get_global_section_element - First observed
get_global_source_contents - First observed
get_global_source_detail - First observed
get_global_source_element - First observed
get_http_function - First observed
get_http_function_snippet - First observed
get_intake_guide - First observed
get_order - First observed
get_page_draft - First observed
get_page_element - First observed
get_page_schema - First observed
get_page_source - First observed
get_page_versions - First observed
get_product - First observed
get_promotion - First observed
get_promotion_items - First observed
get_site_custom_code - First observed
get_site_info - First observed
get_source_cart - First observed
ingest_html - First observed
ingest_url - First observed
install_app - First observed
invoke_tool - First observed
list_apps - First observed
list_articles - First observed
list_bindings - First observed
list_cached_results - First observed
list_categories - First observed
list_cms_files - First observed
list_collections - First observed
list_combos - First observed
list_customers - First observed
list_elements - First observed
list_events - First observed
list_global_sections - First observed
list_global_sources - First observed
list_image_elements - First observed
list_my_sites - First observed
list_orders - First observed
list_page_contents - First observed
list_page_drafts - First observed
list_pages - First observed
list_products - First observed
list_promotions - First observed
list_template_themes - First observed
list_themes - First observed
list_tool_groups - First observed
new_element - First observed
new_page_skeleton - First observed
new_row - First observed
new_section - First observed
publish_site - First observed
query_collection_records - First observed
read_cached_result - First observed
read_image - First observed
read_images - First observed
restore_file_version - First observed
run_function - First observed
save_file_version - First observed
scan_unique_images - First observed
search_global_section_elements - First observed
search_global_source_elements - First observed
search_images - First observed
search_page_elements - First observed
search_products - First observed
search_promotions - First observed
search_tools - First observed
semantic_search_themes - First observed
set_image_alts - First observed
set_product_published - First observed
start_page_draft - First observed
switch_site - First observed
toggle_confirm_mode - First observed
toggle_debug_render - First observed
uninstall_app - First observed
update_app - First observed
update_app_review - First observed
update_article - First observed
update_auth - First observed
update_cms_file - First observed
update_collection_columns - First observed
update_global_source - First observed
update_global_source_contents - First observed
update_global_source_element - First observed
update_global_source_elements - First observed
update_http_function - First observed
update_page - First observed
update_page_content - First observed
update_page_element - First observed
update_page_elements - First observed
update_page_source - First observed
update_product - First observed
update_product_category - First observed
update_site_custom_code - First observed
upload_images - First observed
validate_page
TDQS
Scored across 131 tools
Most tools have sharply distinct resource+action targets, and descriptions explicitly cross-reference alternatives (e.g. edit_http_function vs update_http_function, create_page vs build_page, update_page_element vs update_page_elements vs update_page_source). The main overlap risk is the parallel 'global source' (cart/popup) and 'global section' (header/footer) families plus their element/section/content variants, which a hurried agent could confuse, but the naming and descriptions do provide workable boundaries.
The set overwhelmingly follows a snake_case verb_noun convention (list_products, create_article, update_global_source_element, delete_collection). A few names invert the order (get_source_cart) or use bare plurals (search_images, upload_images), and there is a large cluster of very long compound names, but the pattern remains predictable and readable.
131 natively exposed tools is an extreme over-scoping for a single server surface, well beyond the healthy 3-15 range. Even though a search_tools/invoke_tool mechanism exists for on-demand discovery, the native list itself is unwieldy and far exceeds any reasonable curated tool set.
The surface covers the full site-building lifecycle with strong CRUD for products, categories, articles, pages, collections, global sections/sources, themes, customers, promotions and orders, plus versioning, publishing and image hosting. Minor gaps exist (e.g. orders are read-only list/get with no update or manual create), but core workflows have no dead ends.
Maintenance
Related MCP Connectors
Build, edit, and publish real websites and online stores by chatting with your AI assistant.
Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.
Build, edit, stock, and publish Social AI websites and storefronts via AI chat.
Build and edit landing pages and websites from your AI assistant, and pull how they are performing.
Related MCP Servers
AlicenseAqualityDmaintenanceEnables AI assistants to build complete, live websites from natural language descriptions by connecting to Buildez.ai.13 npm1MIT- AlicenseAqualityBmaintenanceBridges AI assistants to WebCake, enabling users to build, validate, and save editable landing pages from natural language descriptions.23184 npm7MIT
- AlicenseBqualityAmaintenanceEnables AI agents to operate a Store Builder site end-to-end — designing pages, filling them with data, reviewing screenshots, and publishing — without human intervention.37970 npmMIT

PromptSwingofficial
AlicenseNot gradedqualityBmaintenanceEnables an AI assistant to publish a storefront it built to live hosting, read the live site back, add, update or delete a single page, manage the catalogue, orders and reviews, and restore any earlier version in one call. Hosting requires a paid subscription, and a free pre-publish assessment reports which documented signal calls, contrast pairs or hardcoded prices would fail.19 npmApache 2.0