zola-mcp
Zola MCP gives Claude natural-language access to your Zola wedding account — reading planning data freely and confirming before any writes.
Vendors: list, search (typeahead), book, update, and unbook vendors.
Budget: view the budget summary and update item costs/notes.
Guests: list households (compact or full contact details), add groups, update addresses, remove groups.
Seating: view charts, find unseated guests, assign seats.
Inquiries: list vendor inquiries, read conversations, mark as read.
Events & RSVPs: list events, track RSVPs, update event details, invite/uninvite guests in bulk or individually.
Registry & Gifts: browse registry items, reconcile against gifts (duplicate risk, unattributed, orphan orders), track thank-yous, add/update/remove items, search products.
Website pages: list pages, hide/show, reorder, edit titles and intro copy.
Wedding settings: view and update title, slug, partner names, date, location, hashtag, search visibility.
FAQs, home sections, POIs, travel items: list, add, update, and remove each from the public site.
Themes & customization: browse themes, switch theme, update colors/fonts.
Cards/invitations: list and create projects, swap variations, set guests, validate, preview templates, and place QR codes.
Discovery & health: wedding dashboard, credential/API healthcheck, storefront search, favorites.
Safety: read-only tools run automatically; writes require confirmation, and destructive writes (removing guests/events/FAQs/registry items, changing slug, etc.) show a server-side preview with a confirm token.
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., "@zola-mcpWho hasn't RSVP'd yet?"
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.
Zola MCP
A Model Context Protocol server that connects Claude to Zola, giving you natural-language access to your wedding vendors, budget, guest list, seating chart, events, registry, inquiries, and more.
AI-developed project. This codebase was entirely built and is actively maintained by Claude Code. No human has audited the implementation. Review all code and tool permissions before use.
What you can do
Ask Claude things like:
"How's wedding planning going?"
"Find a photographer in Charlotte, NC"
"Update the venue cost to $25,000"
"Who hasn't RSVP'd yet?"
"Seat Pat at Table 1"
"Any new vendor messages?"
"Add my cousin Mike to the guest list"
"Show me the gift tracker"
Related MCP server: honeybook-mcp
Requirements
Node.js 22 or later
A Zola account
For the no-env-var path: the ContextMint Bridge Chrome extension (Safari is not available yet — use Chrome for now)
Acknowledgement of Terms
By using this MCP server, you acknowledge and agree to the following:
1. This server accesses your own Zola account. Auth happens via your own credentials. It does not — and cannot — access anyone else's wedding website, registry, or guest list.
2. Zola's Terms of Use govern your use of this server, just as they govern your direct use of zola.com. The clauses most relevant here:
[You may not use] any hardware or software intended to surreptitiously intercept or otherwise obtain any information… including but not limited to the use of any "scraping" or other data mining techniques, robots or similar data gathering and extraction tools.
And, critically, on agent-acting-as-you: "You are responsible for maintaining the confidentiality of your account and password… You accept full responsibility for all activities that occur under your account and password, even if such actions are undertaken by your Authorized Agent or other third party."
You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server. Zola's ToU is explicit: this MCP acting as your Authorized Agent counts as you.
3. Personal, non-commercial use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with Zola, Inc. It is a personal automation tool for one couple to manage their own wedding website, registry, vendor research, and guest list. Do not use it to bulk-extract Zola's vendor directory, scrape registries, or compete with Zola.
4. Stability is not guaranteed. This server may call internal Zola endpoints that change without notice. It may break.
5. You accept full responsibility for any consequences of using this server in connection with your Zola account — rate limiting, account warnings, suspension, or any enforcement action. Per Zola's ToU, anything this MCP does under your account is your action — review guest list edits, registry changes, and inquiries before confirming. If Zola objects to your use, stop using this server.
This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede Zola's actual ToU.
Installation
Option A — MCPB (recommended)
Download the latest .mcpb bundle from Releases and install:
claude mcp add-from-mcpb zola-mcp-x.y.z.mcpbYou'll be prompted for your ZOLA_REFRESH_TOKEN (see Getting your refresh token below).
Option B — npm
npx -y zola-mcpAdd to your Claude config (.mcp.json or Claude Desktop config):
{
"mcpServers": {
"zola": {
"command": "npx",
"args": ["-y", "zola-mcp"],
"env": {
"ZOLA_REFRESH_TOKEN": "your-refresh-token-jwt"
}
}
}
}Option C — from source
git clone https://github.com/chrischall/zola-mcp.git
cd zola-mcp
npm install
npm run buildAdd to Claude Desktop config:
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zola": {
"command": "node",
"args": ["/absolute/path/to/zola-mcp/dist/bundle.js"],
"env": {
"ZOLA_REFRESH_TOKEN": "your-refresh-token-jwt"
}
}
}
}Getting your refresh token
You have two options. Both produce the same usr cookie value — a ~1-year JWT that doubles as the refresh token.
Option A — ContextMint Bridge (recommended)
Install ContextMint Bridge — Chrome: download the chrome zip from the latest release, unzip it, and load it unpacked at
chrome://extensions(Developer mode on). Safari is not available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now.ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README (fetchproxy#extension) points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the
.sha256file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).Sign in at zola.com/account/login in that browser.
Leave
ZOLA_REFRESH_TOKENunset in your Claude config.
On the first tool call, the MCP asks the extension for the HttpOnly usr cookie via chrome.cookies.get, then operates direct-to-API from Node — the bridge is never in the hot path.
That cookie is the ~1-year refresh token, so it is cached at $MCP_DATA_DIR/.zola-mcp/refresh-token.json (falling back to $HOME, mode 0600). Later starts read it from there and need no browser at all, which is what makes the server usable on a remote host where none exists. If the API ever rejects the cached token — you signed out, or it aged past its year — it is discarded automatically and the extension is asked again. To re-auth, just sign back in to zola.com. Set ZOLA_TOKEN_CACHE=false to keep nothing on disk and ask the browser every time.
You can opt out of this fallback with ZOLA_DISABLE_FETCHPROXY=1 (e.g. in headless / CI environments where no extension is available).
Option B — manual (DevTools)
Sign in at zola.com/account/login in any browser.
Open DevTools → Application → Cookies →
https://www.zola.com.Copy the value of the
usrcookie.Paste it into
.envasZOLA_REFRESH_TOKEN=<value>(or into your Claude configenvblock).
Restart Claude Desktop
Quit completely (Cmd+Q on Mac) and relaunch.
Verify
Ask Claude: "How's wedding planning going?" — it should show your wedding dashboard.
Credentials
Env var | Required | Notes |
| Conditional | Refresh token JWT (~1 year lifetime). When unset, the MCP falls back to the ContextMint Bridge browser extension to read the |
| No | Set to |
| No | Set to |
| No | Absolute path for the cache file. Defaults to |
| No | Auto-resolved from API on first use |
| No | Auto-resolved from API on first use |
| No | Default |
| No | Default |
| No | Signing key for confirm tokens (default: random per process). Set it only if tokens must survive a server restart. |
Available tools
27 tools across 8 domains. Read-only tools run automatically. Write tools ask for confirmation.
The writes that cannot be undone or that change what guests see are also confirmed by the server itself: remove_guest, set_event_guests (when it uninvites anyone), remove_event_invitation, update_event, update_wedding_settings, remove_registry_item, remove_faq, remove_home_section, remove_poi and remove_travel_item. Each first shows a preview naming the household, event, item or page content and exactly what changes (for a slug change, the old and new website URL; a registry item on a private or passcode-gated registry, or outside the default collection, is shown by id because only the public page names it), then proceeds only once you approve — see MCP_CONFIRM_MODE above.
Vendors
Tool | What it does | Permission |
| List all booked vendors | Auto |
| Search vendors by name/category | Auto |
| Book a new vendor | Confirm |
| Update vendor details | Confirm |
| Unbook a vendor | Confirm |
Budget
Tool | What it does | Permission |
| Budget summary with all items | Auto |
| Update cost or note | Confirm |
Guests
Tool | What it does | Permission |
| List all guest groups with stats — names, tier and RSVP state by default; | Auto |
| Add a guest group | Confirm |
| Update mailing address | Confirm |
| Remove a guest group (with its RSVPs and seats) | Confirm (server-side preview) |
Seating
Tool | What it does | Permission |
| List seating charts | Auto |
| Chart with tables/seats/occupants | Auto |
| Guests not yet seated | Auto |
| Assign guest to a seat | Confirm |
Inquiries
Tool | What it does | Permission |
| All vendor inquiries with status | Auto |
| Full conversation messages | Auto |
| Mark as read | Confirm |
Events & RSVPs
Tool | What it does | Permission |
| All events with RSVP counts | Auto |
| RSVP tracking per event | Auto |
| Update event details | Confirm |
Registry & Gifts
Tool | What it does | Permission |
| Registry items with per-item purchase state ( | Auto |
| Gifts received, thank-you status | Auto |
| Joins the registry against the gift tracker: | Auto |
Discovery
Tool | What it does | Permission |
| Planning dashboard overview | Auto |
| Verify the credential and Zola reachability; says which hop failed | Auto |
| Search marketplace by category/location | Auto |
| Full vendor storefront details | Auto |
| Favorited vendors | Auto |
Troubleshooting
"Zola auth: set ZOLA_REFRESH_TOKEN, or install the ContextMint Bridge extension…" — either set ZOLA_REFRESH_TOKEN in your config or install the ContextMint Bridge extension and sign into zola.com.
"Zola session refresh failed" — your refresh token has expired (~1 year) or been revoked. Either capture a new usr cookie (DevTools) or sign back into zola.com with the ContextMint Bridge extension installed.
403 from mobile API — the x-zola-session-id header may be missing. Update to the latest version.
Tools not appearing in Claude — go to Claude Desktop → Settings → Developer to see connected servers. Make sure you fully quit and relaunched after editing the config.
Security
The refresh token lives only in your local
.envor config file (when set) or in the user's browser cookie store (fetchproxy path)It is passed as an environment variable and never logged
The server authenticates with Zola's mobile API using the same flow as the iOS app
Account and registry IDs are auto-resolved from the API (no manual configuration needed)
Development
npm test # run the test suite (vitest)
npm run build # compile TypeScript → dist/Project structure
src/
client.ts Zola mobile API client (auth, token refresh, context)
index.ts MCP server entry point
tools/
vendors.ts list, search, add, update, remove vendors
budget.ts get budget, update budget items
guests.ts list, add, update, remove guests
seating.ts seating charts, seat assignment
inquiries.ts vendor inquiry conversations
events.ts events, RSVPs, gift tracker, registry
discover.ts dashboard, storefront search, favorites
tests/
client.test.ts
vendors.test.ts
budget.test.ts
guests.test.ts
seating.test.ts
inquiries.test.ts
events.test.ts
discover.test.tsAuth flow
All tools use the Zola mobile API (mobile-api.zola.com) with Bearer JWT auth:
POST /v3/sessions/refreshwith refresh token JWT → returns 30-min session tokenAll API calls use
Authorization: Bearer <session_token>+x-zola-session-idheaderOn 401, auto-refreshes and retries once
Session tokens are cached for their lifetime (30 min)
Building the MCPB bundle
The .mcpb bundle is built automatically by the Release workflow when a version tag is pushed. To build locally:
npm run build
npx @anthropic-ai/mcpb packThis produces zola-mcp.mcpb using the configuration in manifest.json. The bundle includes the compiled dist/bundle.js and user config prompts for ZOLA_REFRESH_TOKEN.
Releasing
Releases are automated via GitHub Actions:
Run the Cut & Bump workflow (manual trigger) — tags the current version and bumps patch
The tag push triggers the Release workflow which:
Runs CI (build + test)
Packages
.skilland.mcpbbundlesPublishes to npm
Creates a GitHub Release with the bundles
License
MIT
Available Tools
77 toolsadd_faqA
Add a new FAQ (question + answer) to the website FAQ page
| Name | Required | Description | Default |
|---|---|---|---|
| answer | Yes | The FAQ answer | |
| question | Yes | The FAQ question | |
| display_order | No | Position in the FAQ list (defaults to 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint: false, which already signals this is non-destructive. The description reinforces this by saying 'Add a new FAQ' but adds no additional behavioral context (e.g., whether it appends to the end, handles duplicates, or requires authentication). It does not contradict the annotation, but it also doesn't go beyond 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?
The description is a single, front-loaded sentence with no waste. It conveys the action and target 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 simple create operation with 3 parameters all described in the schema, the description is sufficient for an agent to decide when to call it. It does not explain the return value, but with no output schema and low complexity, this 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?
The schema covers 100% of parameters with descriptions for question, answer, and display_order. The description mentions 'question + answer' but does not add any meaning beyond the schema. Since schema coverage is high, a baseline score of 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?
The description states a specific verb ('Add'), a clear resource ('FAQ'), and the target ('website FAQ page'). It is unambiguous and distinct from the sibling update_faq and remove_faq tools, which are for modifying and deleting.
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 verb 'Add' clearly implies creation rather than update or removal, and the presence of update_faq and remove_faq siblings makes the intent obvious. However, it does not explicitly state 'use update_faq for existing entries' or mention any conditions for 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.
add_guestC
Add a new guest group (household) to the guest list
| Name | Required | Description | Default |
|---|---|---|---|
| No | Guest email address | ||
| phone | No | Guest phone number | |
| last_name | Yes | Primary guest last name | |
| first_name | Yes | Primary guest first name | |
| affiliation | No | Affiliation (default: PRIMARY_FRIEND) | |
| plus_one_last_name | No | Plus-one last name | |
| plus_one_first_name | No | Plus-one first name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint: false, with no readOnlyHint or other safety metadata. The description adds the structural detail that a guest group is a household, but it does not disclose side effects such as duplicate handling, how plus-one fields fit into the household, or what the response contains. For a create operation with minimal annotations, this is insufficient.
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. Every word earns its place, and the key distinction (guest group/household) is included without redundant detail.
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 7 parameters, no output schema, and minimal annotations, the description is too sparse to be complete. It doesn't state return values, error conditions, or how this tool relates to other guest list operations, though the schema does cover parameter semantics.
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 input schema describes all 7 parameters at 100% coverage, so the baseline is 3. The description adds no additional parameter-level meaning beyond the household concept, and it doesn't highlight the required first_name/last_name or the affiliation default.
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 uses a clear verb ('Add') with a specific resource ('guest group (household)') and target ('guest list'). The parenthetical clarifies that this creates a household rather than an individual guest, which helps differentiate it from related guest tools, though it doesn't explicitly name any sibling alternatives.
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 is given about when to use this tool versus alternatives like invite_guest_to_event, set_event_guests, or update_guest_address. There are no prerequisites, exclusions, or context cues beyond the name and description, so an agent must infer the intended usage scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_home_sectionA
Add a story section to the home page (title + subtitle + description block)
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| hidden | No | ||
| subtitle | Yes | ||
| description | Yes | ||
| display_order | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false. The description adds that this is a creation operation and names the content fields, but it does not disclose how optional fields like hidden or display_order behave, where the section is inserted, or whether it appends to the page. No contradiction with 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?
The description is a single front-loaded sentence with no filler. Every word contributes to identifying the action, target, and core content of the 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 creation tool with five parameters and no output schema, the description is underspecified. It covers the required fields but gives no guidance on optional behavior, ordering, visibility, or return value, making it minimally viable but incomplete.
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 0%, so the description must compensate. It names title, subtitle, and description, which correspond to the three required properties, but it entirely omits hidden and display_order, leaving two of the five parameters semantically unexplained.
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 ('Add') and resource ('story section to the home page') and lists the core content fields ('title + subtitle + description block'). It clearly distinguishes itself from siblings like update_home_section, remove_home_section, and list_home_sections.
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 gives clear context: this tool creates a new section on the home page. Sibling names imply that update_home_section is for modifying an existing section and remove_home_section for deleting one, but the description does not explicitly state these alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_poiA
Add a point-of-interest to the Things-to-Do page (restaurant, attraction, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| city | No | ||
| title | Yes | Name of the place | |
| address1 | No | ||
| address2 | No | ||
| latitude | No | Decimal degrees as string | |
| longitude | No | Decimal degrees as string | |
| description | No | ||
| postal_code | No | ||
| country_code | No | Default: US | |
| contact_phone | No | ||
| display_order | No | ||
| state_province | No | ||
| google_place_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, so the description carries most of the behavioral burden. It discloses the destination page but says nothing about required permissions, duplicate handling, response behavior, or side effects of adding a POI.
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 that conveys the essential action and scope with zero filler. It is appropriately concise for a straightforward CRUD tool.
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 14-parameter mutation tool with no output schema and minimal annotations, the description is too thin. It doesn't mention required inputs beyond what the schema implies, nor does it clarify expected outcomes or failure modes.
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 only 29% schema coverage and 14 parameters, the description needed to compensate, but it adds almost no field-level guidance. It only hints at types of places, while leaving most parameter semantics to the sparse schema 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 clear action ('Add') and a specific resource ('point-of-interest to the Things-to-Do page'), with helpful examples of what counts as a POI. This distinguishes it from update_poi and remove_poi.
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 intended use is clear: creating a new POI on the Things-to-Do page. It doesn't explicitly name alternative tools or exclusion cases, but the add/update/remove sibling structure makes the usage context evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_registry_itemB
Add a product (by SKU) to the registry. If collection_id is omitted, the default collection is looked up automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_id | Yes | Product SKU ID (e.g., from search_registry_products) | |
| quantity | No | Default 1 | |
| most_wanted | No | Mark as a most-wanted gift. Default false | |
| collection_id | No | Collection to add into; defaults to the registry's default collection | |
| enable_group_gifting | No | Allow multiple guests to chip in. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint: false, which is minimal. The description adds the default-collection lookup behavior, but this largely repeats the collection_id parameter schema. It does not disclose whether adding an already-present SKU is idempotent, what happens if the SKU is invalid, or what the tool returns after a successful add.
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, tightly worded sentence with no filler. The core action is front-loaded, and the only conditional detail — default collection lookup — is relevant and expressed efficiently.
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 straightforward add operation with a fully documented schema, the description is reasonably complete. It states the action, the identifier type, and the key default behavior. It does not discuss errors or return values, but the absence of an output schema and the simplicity of the operation make this only 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 the schema fully documents all five parameters. The description adds little parameter meaning beyond the schema; it just confirms the SKU is used to identify the product and that collection_id defaults. 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?
The description states a specific verb and resource: "Add a product (by SKU) to the registry." This clearly differentiates it from sibling tools like update_registry_item, remove_registry_item, and search_registry_products, all of which act on registry items but are distinct actions.
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 gives no explicit guidance on when to choose this tool over alternatives like update_registry_item or remove_registry_item. It implies usage by its action verb, but does not state prerequisites, exclusions, or conditions under which a sibling tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_travel_itemB
Add a travel item (hotel, flight, train, car, bus) to the Travel page
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Booking link | |
| city | No | ||
| code | No | Booking code or group rate code | |
| name | Yes | Name of the hotel/airline/etc. | |
| note | No | Free-text notes (e.g., booking code instructions) | |
| type | Yes | Travel item type | |
| source | No | How the address was sourced | |
| address1 | No | ||
| address2 | No | ||
| latitude | No | Decimal degrees as string | |
| timezone | No | e.g. America/New_York | |
| longitude | No | Decimal degrees as string | |
| postal_code | No | ||
| country_code | No | Default: US | |
| display_order | No | ||
| email_address | No | ||
| contact_number | No | ||
| state_province | No | ||
| google_place_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly signals a create/insert action, which is consistent with destructiveHint=false. It adds minimal context beyond the annotation by naming the destination and item categories, but it does not disclose any side effects, duplicate handling, or validation requirements.
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 front-loaded sentence with no wasted words. It is economical, though it could have used the saved space to add a bit more behavioral or parameter 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 tool with 19 parameters, no output schema, and only a sparse annotation, a one-line description is insufficient. It does not tell the agent about the two required fields (though the schema does), item-type-specific requirements, or how the operation integrates with the travel page in the broader 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?
The description only reiterates a subset of enum values from the 'type' parameter and does not explain required fields, address formats, or the meaning of source/country_code beyond the schema. With only 53% schema description coverage, the description should compensate but does not.
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 uses a specific verb ('Add') with a concrete resource ('travel item') and destination ('Travel page'), and enumerates the covered categories (hotel, flight, train, car, bus). This makes the tool's purpose unambiguous and distinguishes it from sibling tools like update_travel_item and add_poi.
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 'to the Travel page' gives a clear context for where the item will appear, and the verb 'Add' implies use when creating a new entry. However, it does not explicitly state when to prefer this over update_travel_item, remove_travel_item, or any alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_vendorB
Book a new vendor
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City | |
| name | Yes | Vendor business name | |
| No | Vendor email | ||
| phone | No | Vendor phone | |
| event_date | No | Event date ISO 8601 | |
| price_cents | No | Total price in cents | |
| vendor_type | Yes | Vendor type (VENUE, PHOTOGRAPHER, FLORIST, MUSICIAN_DJ, PLANNER, VIDEOGRAPHER, HAIR_MAKEUP, CAKES_DESSERTS) | |
| state_province | Yes | State abbreviation (e.g. NC) | |
| reference_vendor_id | No | Reference vendor ID from search_vendors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, so the description carries most of the burden. 'Book a new vendor' indicates a creation side effect but says nothing about persistence, idempotency, required permissions, response behavior, or whether reference_vendor_id must come from a prior search.
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 short sentence with no wasted words and is immediately understandable. It is concise, though extremely minimal for a tool with nine parameters.
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 creation tool with nine parameters, no output schema, and minimal annotations, this description is underspecified. It lacks guidance on when to use it, what the expected outcome is, and how the parameters relate to a real booking 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 description coverage is 100%, so the schema already documents all nine parameters. The description adds no additional meaning about parameter relationships, required fields, or how vendor_type should be chosen.
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 'Book a new vendor' uses a clear verb and resource, and the word 'new' signals a create operation. It does not explicitly distinguish itself from related tools like update_vendor or search_vendors, though the intent is inferable.
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 word 'new' implies this tool is for creating a vendor rather than updating or removing one. However, no explicit guidance is given about when to prefer this over search_vendors or update_vendor, and no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_seatB
Assign a guest to a specific seat in a seating chart
| Name | Required | Description | Default |
|---|---|---|---|
| seat_uuid | Yes | Seat UUID from get_seating_chart | |
| guest_uuid | Yes | Guest UUID from list_unseated_guests | |
| table_uuid | Yes | Table UUID from get_seating_chart | |
| seating_chart_uuid | Yes | Seating chart UUID from list_seating_charts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only state destructiveHint=false, so the description carries the burden of disclosing behavioral details. It does not explain what happens if the seat is already occupied, whether the guest is moved from a previous seat, or whether the assignment overwrites existing data. The description adds no behavioral context beyond the tool's 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 description is a single, front-loaded sentence with no filler. Every word contributes to understanding the core action, and there is no unnecessary repetition of the schema or annotations.
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 four required parameters and no output schema, the description is too thin to be contextually complete. It omits workflow context, side-effect behavior, and any guidance about seat availability or reassignment, leaving important decisions to inference.
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 parameter references its source (e.g., 'Seat UUID from get_seating_chart'), so the structured schema already explains parameter semantics. The description does not add additional parameter-level meaning, which matches the baseline score 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?
The description uses a specific verb ('assign') and resource ('guest' to a 'specific seat' in a 'seating chart'), clearly distinguishing it from sibling tools like add_guest or invite_guest_to_event. It communicates exactly what operation the tool performs without ambiguity.
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 no guidance on when to use this tool, what preconditions exist, or how it relates to alternatives like get_seating_chart, list_unseated_guests, or remove_guest. An agent must infer the proper workflow from parameter descriptions alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_card_projectA
Create a new invitation project from a design suite and a lead variation (specific size/paper).
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Quantity to order. Default: 150. | |
| suite_uuid | Yes | Suite UUID from search_card_catalog or get_card_suite | |
| lead_variation_uuid | Yes | Lead variation UUID (specific size/paper/color from the suite) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare destructiveHint=false, so the description carries some burden for side effects and return values. It says only that a project is 'created,' providing no information about returned values, draft vs. finalized state, or other behavioral details. This adds little beyond what the tool name and annotations already imply.
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 clean, front-loaded sentence states the action and resource, and the parenthetical explains the lead variation. There is no wasted wording or redundancy with 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?
The schema and annotation cover required inputs, optional quantity, and non-destructiveness, but there is no output schema and the description does not state what is returned after creation or how downstream tools like get_card_project or validate_card_project receive the result. Invocation inputs are fully specified, so the gap is moderate but not severe.
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 each parameter already documented in the schema: suite_uuid source, lead_variation_uuid size/paper/color, and quantity default 150. The description adds no meaning beyond re-stating the suite/variation relationship, 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 uses a specific verb ('Create'), identifies the resource ('invitation project'), and names the two required inputs (design suite, lead variation). It clearly distinguishes this creation tool from siblings like list_card_projects, get_card_project, and swap_card_project_variation by emphasizing 'new'.
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 that creation requires an existing design suite and lead variation, and the word 'new' signals it is for creating rather than updating or validating. However, it does not explicitly state when to choose this tool over alternatives like validate_card_project or swap_card_project_variation, nor does it list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budgetARead-only
Get the wedding budget summary including total budgeted, actual cost, paid, and all budget items
| 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. The description adds value by specifying the exact data returned (total budgeted, actual cost, paid, all budget items), which is beyond the annotation. No behavioral contradictions.
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 that immediately states the purpose and lists key data fields. 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 zero-parameter read tool, the description fully explains what the tool returns. No output schema is present, but the description compensates by listing the returned data elements. No missing 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?
The input schema has 0 parameters with 100% coverage, so the schema fully defines the parameter space. The description adds no param info but none is needed; baseline for no parameters is 4.
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 uses the verb 'Get' with the resource 'wedding budget summary' and lists specific data fields (total budgeted, actual cost, paid, all budget items). It clearly distinguishes from sibling tools like update_budget_item or list_* 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?
The description clearly implies when to use this tool (to retrieve budget summary), though it does not explicitly state when not to use it or suggest alternatives. No exclusions are needed given the tool's specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_card_projectARead-only
Get full details for one invitation project including all customizations (invitation, envelope, RSVP card, details card), paper/color options, and per-customization pages.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID from list_card_projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint: true, the safety profile is already known. The description adds valuable context about the return payload's breadth—customizations, paper/color options, and pages—which is helpful given there is no output schema. No contradiction with 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?
A single, front-loaded sentence communicates the resource, scope, and key included content with no filler. The parenthetical list is compact and 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 tool with readOnlyHint and no output schema, the description adequately explains the scope and response contents. It could be more explicit about response format or error handling, but the essentials 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%, so the single project_uuid parameter is already documented. The description only restates 'one invitation project' and does not add further meaning about the parameter's format or 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?
The description uses a specific verb ('get'), identifies the resource ('one invitation project'), and enumerates what is included ('all customizations... paper/color options, and per-customization pages'). This clearly distinguishes it from list_card_projects and related card 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?
The description conveys a clear use case: retrieve full details for a single project. The schema parameter description ('from list_card_projects') adds contextual guidance. However, it does not name alternatives or explicitly state 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.
get_card_project_guestsARead-only
List the guest groups assigned to an invitation project, including per-group font-size overrides for printed addressing.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID from list_card_projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes the read-only nature, and the description is consistent. It adds useful behavioral context by specifying that the result includes font-size overrides for printed addressing, which is not derivable from the schema alone.
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, front-loaded sentence that states the action and resource immediately. It contains no filler and every element contributes to understanding the tool's purpose.
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 tool with one well-documented parameter and a read-only annotation, the description sufficiently explains what is returned. There is no output schema, but the description covers the main output content and no critical information 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 only parameter, project_uuid, has 100% schema description coverage, including guidance to obtain it from list_card_projects. The description adds no additional parameter-level meaning, 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 uses a specific verb 'List' and names the exact resource 'guest groups assigned to an invitation project'. The added detail about 'per-group font-size overrides' makes it distinct from generic guest list tools and from related siblings like set_card_project_guests.
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 explicit when-to-use or when-not-to-use guidance is provided. The description implies the tool's role as the read counterpart to set_card_project_guests, but it does not name alternatives or state exclusions, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_card_suiteARead-only
Get details for an invitation design "suite" (the family of matching invitation + RSVP + details cards), including paper types, sizes, and price range.
| Name | Required | Description | Default |
|---|---|---|---|
| suite_uuid | Yes | Suite UUID (e.g. from search_card_catalog or list_favorite_card_suites) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this is a safe read operation, so the description does not need to restate that. The description adds context about what data is returned (paper types, sizes, price range), which is useful, but it does not disclose any additional behavioral traits such as pagination, auth requirements, or rate limits. No contradiction with annotations exists.
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, well-structured sentence. It front-loads the action and resource, defines the key term 'suite' in a parenthetical, and lists the relevant return categories without any filler or repetition.
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 single-parameter, read-only tool with complete schema coverage, the description provides enough information for correct invocation. It identifies the input source, clarifies the object type, and describes the output contents. No additional context is necessary for an agent to call this 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 description coverage is 100%, and the schema already explains suite_uuid with examples of where to obtain it. The tool description itself adds no additional parameter-level detail, so it does not need to compensate. Baseline 3 applies because the schema carries the parameter documentation burden.
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 uses a specific verb and resource: 'Get details for an invitation design suite', and clarifies what a suite is ('family of matching invitation + RSVP + details cards'). It also names the data areas returned (paper types, sizes, price range), which distinguishes it from sibling tools like search_card_catalog and get_card_project.
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 schema parameter description says the suite_uuid comes from search_card_catalog or list_favorite_card_suites, which strongly implies this tool is used after those lookup tools and takes a UUID as input. However, it does not explicitly state when to prefer this tool over alternatives or 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.
get_current_themeARead-only
Get the currently-selected website theme: key, name, swatch color, layout type
| 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, consistent with description. The description adds value by specifying the return fields, which is beyond what annotations provide. No contradictions.
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?
Single sentence, concise, front-loaded with verb and resource. No extra 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?
Adequate for a simple read-only tool with no parameters. Lists return fields. Could mention edge cases (e.g., no theme set) but still complete enough.
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?
Input schema has zero parameters and 100% coverage. Baseline is 3 as per guidelines. Description does not add parameter info (none 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?
The description clearly states the action 'get' and the resource 'currently-selected website theme', and lists the specific fields returned (key, name, swatch color, layout type). It distinguishes itself from siblings like 'search_themes' and 'update_current_theme'.
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?
Implied usage context: retrieve current theme. With sibling 'update_current_theme', the agent can infer when to use this read tool. No explicit exclusions or alternatives mentioned, but 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_gift_trackerARead-only
View gift tracking: total gifts received, values, thank-you note status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares read-only behavior. The description adds specific data fields viewed, which is useful context. However, it doesn't disclose whether data is per-wedding, return format, or what happens if no gifts tracked.
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?
Description is a single concise sentence covering key points. Could be slightly improved with a colon or list structure, but no unnecessary 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?
Without an output schema, the description provides a reasonable expectation of return data (three components). It could mention scope (current wedding?) despite no parameters, but overall adequate.
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 input schema has no parameters, so baseline is 4. The description adds meaning beyond the schema by stating the data returned (total gifts, values, thank-you status), which is sufficient for parameter-free tools.
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 clearly states the tool's purpose: viewing gift tracking data including total gifts, values, and thank-you note status. It uses specific nouns and distinguishes itself from sibling tools like get_registry that focus on registry 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?
No guidance on when to use this tool versus alternatives (e.g., get_registry) or any preconditions. The description only states what it does, not when it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inquiry_conversationARead-only
Get full conversation for a vendor inquiry including messages and inquiry details
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Inquiry UUID from list_inquiries |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that this is a read operation, so the description does not need to restate that. The description adds useful context about what the response contains (messages and inquiry details), but it does not disclose anything about errors, authorization, or size/pagination behaviors.
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 communicates the action, target, and included content with no redundant words. 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?
For a simple single-parameter read tool with a readOnlyHint annotation, the description is sufficient: it tells the agent what the tool returns and where the UUID comes from. There is no output schema, but the description covers the return content well enough; only minor details such as ordering or response shape remain 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% and the only parameter, uuid, is described as 'Inquiry UUID from list_inquiries,' so the schema does the heavy lifting. The description adds the 'vendor inquiry' framing but not additional parameter-level detail 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?
The description states a clear verb and resource: 'Get full conversation for a vendor inquiry,' and specifies the contents via 'including messages and inquiry details.' It is clear enough to distinguish from sibling read tools like list_inquiries, though it does not explicitly name a sibling it is not.
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 conveys the use case: fetching a full conversation for a vendor inquiry with messages and details)Skip – this implies it is the deeper dive compared to list-only tools. The parameter description adds guidance that the UUID comes from list_inquiries, but there is no explicit when-not-to-use or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registryARead-only
View the couple's registry items with derived purchase state per item (requested_qty, purchased_qty, marked_fulfilled, availability, inconsistent). Paged via limit/offset.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return. Default 100 | |
| offset | No | Item offset. Default 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that purchase quantities and fulfillment status are 'derived,' signaling that these fields are computed rather than raw stored values, and it discloses pagination via limit/offset. These details go beyond the readOnlyHint annotation, which only establishes safety. No contradiction with 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 sentence front-loads the main action and resource, then packs the derived fields in parentheses and ends with pagination. No filler or repetition.
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 tool with no required parameters and no output schema, the description gives enough: it lists the notable derived fields and confirms pagination. It omits a full response shape, but the listed fields plus the schema defaults are sufficient for an agent 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?
With 100% schema description coverage for limit and offset, the schema already documents both parameters. The description adds only the high-level 'Paged via limit/offset' note, which reinforces rather than extends 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?
The description opens with the verb 'View' and a precise resource, 'the couple's registry items,' and then specifies the distinguishing output: derived purchase state per item. This clearly separates it from mutation siblings like add_registry_item and update_registry_item.
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 establishes a clear use case: retrieve registry items along with derived purchase-state fields, and the paging behavior is stated. However, it does not explicitly contrast itself with related read tools such as get_gift_tracker or reconcile_registry, so the when-to-use 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.
get_rsvp_pageARead-only
Get the RSVP page settings on the wedding website (title, intro copy, visibility, customization).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true annotation, the description adds minor context about the returned fields (title, intro copy, etc.), but does not disclose any behavioral traits beyond what annotations already imply. No mention of side effects or limitations.
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 wasted words. It front-loads the verb and resource, and efficiently conveys the purpose and scope.
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 tool has no parameters and no output schema, the description adequately lists representative fields. It could be more complete by noting that it returns a full RSVP page settings object, but the coverage is sufficient for understanding its purpose.
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 input schema has zero parameters with 100% schema description coverage, so there is no structural deficiency. The description adds meaning by listing example fields (title, intro copy, visibility, customization) that the tool returns, going beyond the empty 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?
The description clearly states 'Get the RSVP page settings on the wedding website' with specific examples of fields (title, intro copy, visibility, customization). This is a specific verb+resource that distinguishes it from generic 'get_website_customizations' or 'get_wedding_settings'.
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 usage for retrieving RSVP page settings, but does not explicitly state when to use this tool over alternatives like 'get_website_customizations' or 'list_pages'. No guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seating_chartARead-only
Get full seating chart with all tables, seats, and current occupants
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Seating chart UUID from list_seating_charts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds useful content expectations (tables, seats, occupants) but does not disclose error handling or what happens for an invalid UUID. No contradiction with 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?
The description is a single, front-loaded sentence with no wasted words. It immediately conveys the action and the return scope.
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 low-complexity read-only tool with one well-documented parameter and a readOnly annotation, the description adequately explains what the tool returns. The lack of an output schema is mitigated by the explicit content enumeration in the description.
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 uuid parameter, so the schema fully documents it. The description adds no further parameter detail, but none is necessary for such a simple 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?
The description states a specific verb ('Get') and resource ('seating chart'), and specifies scope ('full' with all tables, seats, and current occupants). This clearly distinguishes it from siblings like list_seating_charts and assign_seat.
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 use when a complete seating chart is needed, but it does not explicitly contrast with list_seating_charts for enumerating charts or assign_seat for modifying seats. No when-not or alternative guidance is provided, though the intended use is inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storefrontARead-only
Get full details for a vendor storefront (pricing, reviews, photos, about, FAQs)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Storefront UUID from search_storefronts or list_favorites |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read operation, and the description enhances it by enumerating the major data sections returned. For a simple retrieval tool, this is useful, though it stops short of describing exact response structure or any auth requirements.
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, compact sentence that precedes all relevant content immediately. There is no redundancy or filler, and the main purpose 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 one-parameter read-only getter with a fully documented schema, the description is sufficient. It names the resource, the identifier source, and the expected detail categories, so an agent can invoke it with confidence even with 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 description coverage is 100%, and the schema already documents the sole parameter `uuid` with a helpful source hint ('from search_storefronts or list_favorites'). The description does not add additional parameter-level meaning, so the baseline score 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?
The description clearly states a specific verb ('Get'), resource ('vendor storefront'), and key content areas ('pricing, reviews, photos, about, FAQs'). It distinguishes this from search-oriented siblings by signaling it returns full details for a single storefront rather than a list of results.
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 explicit guidance on when to use this tool versus alternatives like search_storefronts or list_favorites is provided in the description. The parameter description in the schema hints at chaining after search/list, but the description itself does not elaborate on usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_website_customizationsARead-only
Get current website colors, font settings, and available font/color options
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the safety profile is clear. The description adds that it retrieves 'current' settings and 'available options', providing some context beyond annotations but not extensive behavioral 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?
The description is a single sentence of 13 words, no waste, front-loaded with action and resource. Every word contributes.
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 no output schema and no parameters, the description adequately states what the tool returns. It could be slightly more complete by mentioning the response structure, but it suffices for a simple getter.
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 no parameters, and schema coverage is 100% (empty). The description adds meaning by specifying what the tool returns, which is sufficient for a parameterless 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 clearly states the verb 'Get' and the specific resource 'current website colors, font settings, and available font/color options'. It distinguishes the tool from siblings like get_current_theme and update_website_customization by focusing on customization options.
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 does not explicitly state when to use this tool versus alternatives (e.g., get_current_theme). It implies usage for retrieving customization settings but lacks when-not-to-use or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wedding_dashboardARead-only
Get the wedding planning dashboard overview (invites, paper, planning progress)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds that it returns an overview of invites, paper, and planning progress, but does not disclose additional behavioral traits such as response format or data freshness. With annotations covering read safety, the description provides adequate but not rich context.
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-loads the purpose and enumerates key content areas. Every word is necessary, with no redundancy or extraneous detail.
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 tool with no output schema, the description sufficiently conveys the tool's function and output scope (dashboard overview). It could optionally mention the format, but is adequate for selection and basic understanding.
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?
There are no parameters (0 params, 100% schema coverage). Baseline of 4 applies. The description adds meaning by specifying what the dashboard overview includes, which helps the agent understand the output content.
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 clearly states 'Get the wedding planning dashboard overview' with specific content areas (invites, paper, planning progress). It distinguishes itself from sibling 'get_' tools like get_budget or get_card_project by specifying it returns a dashboard overview.
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 is provided on when to use this tool versus alternatives. The description only states what it does, without mentioning context, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wedding_settingsARead-only
Get top-level wedding settings: title, URL slug, partner names, date, city, hashtag, guest count, search visibility
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation 'readOnlyHint: true' already indicates no side effects. The description adds no further behavioral context (e.g., auth needs, rate limits). It is adequate but not enriched 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 description is a single sentence that efficiently lists the returned fields with no redundancy or unnecessary 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?
The description covers what the tool returns. Given no output schema, it could mention that it returns a single object, but the context is sufficient for a simple getter. Minor improvement possible.
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 no parameters and the schema coverage is 100%. According to guidelines, zero parameters baseline is 4. The description correctly implies no inputs 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?
The description clearly states the action ('Get') and the resource ('top-level wedding settings'), and lists the specific fields returned. This distinguishes it from sibling tools like 'update_wedding_settings' and other 'get_*' 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?
Usage is implied as a simple retrieval of wedding settings, but no explicit guidance is given on when to use this tool versus alternatives. There are no prerequisites or exclusion criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_guest_to_eventAIdempotent
Invite a single guest or guest group to an event (additive — does not affect other events). Pass exactly one of guest_group_id (invites all guests in the group) or guest_id (invites just that guest). Idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event entity ID from list_events (event_entity_id) | |
| guest_id | No | Single guest ID — invites just that guest | |
| guest_group_id | No | Guest group ID — invites every guest in the group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces idempotency. It adds value beyond annotations by explicitly stating the additive nature ('does not affect other events') and the mutual-exclusion requirement, which are not fully captured by the schema alone.
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, all substantive: purpose, additive scope, the exactly-one semantic, and idempotency. No filler or repetition; the most important constraint 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?
The description covers purpose, scope, idempotency, and parameter exclusivity. For a 3-parameter tool with no output schema and no nested objects, this is sufficient for an agent to select and 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 schema fully documents event_id, guest_id, and guest_group_id with descriptions. The description adds the critical cross-parameter constraint 'Pass exactly one of guest_group_id or guest_id', which materially improves correct invocation 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?
The description states a specific verb ('Invite'), a clear resource ('a single guest or guest group to an event'), and the additive scope ('does not affect other events'). This distinguishes it from related siblings like set_event_guests and remove_event_invitation.
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 gives clear context for use: it is additive, idempotent, and requires passing exactly one of guest_group_id or guest_id. It does not explicitly name alternative tools or exclusion conditions, but the additive framing makes the intended use reasonably unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_card_projectsARead-only
List your invitation / save-the-date / shower-invite "card" projects (paper or digital). Returns project UUID, name, customizations, suite, and quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max projects to return. Default: 30. | |
| include_completed | No | Include orders that have already been placed. Default: false (drafts only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds scope details (invitation categories, paper/digital) and output fields. It does not contradict the annotation, and the extra context is useful but not extensive; there is no mention of pagination behavior or the meaning of the returned 'customizations' beyond 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?
The description is a single efficient sentence that front-loads the action and resource, then adds a compact list of return fields. Every phrase earns its place with 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 read-only listing tool, the description covers the resource, scope, and returned fields, while the schema fully documents both optional parameters and defaults. It does not explicitly mention how to fetch a single project or search the catalog, but those are covered by sibling tools and are not necessary for calling this 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 description coverage is 100%: both 'limit' and 'include_completed' have clear inline descriptions, including defaults. The tool description itself adds no parameter-specific detail, so the baseline of 3 is appropriate rather than higher.
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: list the user's card projects. It scopes the resource precisely with 'invitation / save-the-date / shower-invite' and 'paper or digital', which distinguishes it from catalog search and single-project fetch siblings. The listed return fields further clarify what this tool produces.
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 'your ... card projects' implies this is for listing the current user's own projects rather than searching the catalog or retrieving a single project, but it does not explicitly name alternatives or state when NOT to use it. The usage context is implied rather than stated, so it stays at the rubric's midpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsARead-only
List all wedding events (ceremony, reception, rehearsal dinner, etc.) with RSVP counts
| 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. Description adds that it lists all events with RSVP counts, but does not disclose additional behavioral traits like response format or ordering.
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?
Single sentence, front-loaded with verb, no unnecessary 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?
Adequate for simple list tool with no params; provides examples and notes RSVP counts. However, lacks details on response structure 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?
No parameters in schema; schema coverage 100%. Baseline 4 for 0 params, description does not add parameter info but is not 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?
Description clearly states verb 'List', resource 'wedding events', and adds context with 'RSVP counts' and examples (ceremony, reception, etc.). Distinguishes from sibling tools like list_guests.
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?
Implies usage for listing events with RSVP counts, but no explicit guidance on when to use this vs alternatives, or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_faqsARead-only
List all FAQs on the wedding website
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description confirms a read operation. No additional behavioral details needed; no contradiction.
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?
Single sentence, front-loaded with key information (verb and resource), no unnecessary 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 parameters and no output schema, the description provides complete information for a simple list-all tool. Context from sibling tools further clarifies its role.
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?
No parameters exist, so the description does not need to add parameter information. Baseline score of 4 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?
Description clearly states a specific verb (List) and resource (all FAQs on the wedding website), distinguishing it from sibling tools like add_faq and remove_faq.
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 explicit guidance on when to use this tool versus alternatives, but the simplicity of the tool (no parameters, read-only) makes it implicitly clear for retrieving all FAQs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_favorite_card_suitesARead-only
List invitation design suites you have favorited (hearted).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds context that it lists favorited suites, but doesn't disclose additional behavior like ordering or pagination. With annotations, this is acceptable.
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?
Single sentence with no waste. Verb front-loaded, clear and concise.
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?
Simple tool with no parameters and no output schema. Description is fully adequate for the task.
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?
No parameters, so baseline 4. Description doesn't need to add parameter info as schema coverage is 100%.
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?
Clear verb 'List' with specific resource 'invitation design suites you have favorited (hearted)'. Distinct from sibling 'list_favorites' which likely lists all favorites.
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 explicit when to use vs alternatives. Implies it's for listing favorited card suites, but doesn't mention sibling tools like 'list_favorites' that could be alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_favoritesARead-only
List all favorited/saved vendors
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, but description adds that it lists only favorited/saved vendors, providing behavioral 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?
Single, front-loaded sentence with no unnecessary words, effectively communicating the tool's purpose.
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 tool with no parameters and no output schema, description adequately covers what the tool does; no major gaps but could mention pagination if applicable.
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?
No parameters in input schema; baseline score of 4 applies as description does not need to add parameter 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?
Description uses specific verb 'List' and resource 'favorited/saved vendors', clearly differentiating from sibling tools like list_vendors that list all vendors.
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 explicit when/why to use this tool versus alternatives like list_vendors; usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_guestsARead-only
List all guest groups (households) with stats (total, invited, missing addresses). The default view carries names, ids, tier, invited/RSVP state and per-event invitations but no contact details; pass view:"full" for addresses, emails and phone numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact keeps ids, names, tier, invited/RSVP state, per-event invitations and whether an address is on file; it leaves out street addresses, emails and phone numbers. Ask for "full" only when you need contact details. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent with that. It adds useful behavioral context beyond the annotation: exactly which fields are included in the default compact view and what full includes. It does not discuss pagination or potential size limits, but the read-only nature and field-level detail are disclosed.
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 with no filler. The primary behavior is front-loaded, and the conditional instruction about view:full is clearly attached to the relevant scenario. Every sentence adds value.
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 one optional parameter, a rich schema description, a read-only annotation, and a read operation with no output schema, the description is sufficiently complete for an agent to select and invoke the tool correctly. It covers scope, fields, and the full-view switch.
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 input schema already provides 100% coverage for the single parameter, including a detailed explanation of compact vs. full response shapes. The description repeats this guidance rather than adding new semantic meaning beyond the schema, so 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?
The description states a specific verb ('List'), a specific resource ('all guest groups (households)'), and the output's scope ('with stats'). It clearly distinguishes itself from sibling tools like list_unseated_guests by indicating it returns all guest groups, not just unseated ones.
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 gives clear context on when to use the compact default versus view:full, explicitly saying to pass full when contact details are needed. It does not explicitly name sibling alternatives or exclusions, but the guidance about when to request full details is actionable and clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_home_sectionsARead-only
List the story sections on the website home page
| 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 description does not need to reiterate safety. However, the description adds no further behavioral context (e.g., whether the list is ordered, if sections can be empty). It is neutral but does not enhance transparency 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 description is a single, concise sentence that conveys the exact purpose. It is front-loaded with the verb and resource, and every word earns its place. No unnecessary 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?
Given the tool's simplicity (no parameters, no output schema, read-only annotation), the description is largely complete. It could optionally mention that the result is a list, but 'List the story sections' inherently implies that. Thus it is adequate but not exhaustive.
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?
There are zero parameters, and schema description coverage is 100% (the schema is empty). The description does not need to explain parameters. Baseline score of 4 applies for zero-parameter tools.
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 clearly specifies the verb 'List' and the resource 'story sections on the website home page', distinguishing it from sibling list tools like list_pages or list_guests. It leaves no ambiguity about the tool's function.
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 no guidance on when to use this tool versus alternatives, such as list_pages or other listing tools. It only states what it does, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inquiriesARead-only
List all vendor inquiries with status, vendor name, and unread flag
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, so the description does not need to reiterate. It adds minor context about the output fields, but does not disclose pagination, ordering, or limits. Adequate but not exemplary.
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?
Single sentence, front-loaded with action verb 'List', no redundant words. Efficient and to the point.
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 provides enough context by listing the fields returned. However, it omits details like whether the list is sorted, paginated, or filtered. Still, for a simple list tool, it is mostly 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?
No parameters in schema, so the description does not need to explain any. Baseline 4 for zero-parameter tool is appropriate; no additional meaning 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?
Description clearly states the action (list) and resource (vendor inquiries) and specifies the fields returned (status, vendor name, unread flag). It is specific enough to distinguish from sibling list tools like list_guests or list_vendors.
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 like get_inquiry_conversation or mark_inquiry_read. No mention of prerequisites, context, or exclusions. Sibling tools are many but no comparative hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesARead-only
List all wedding-website pages with their IDs, types, display order, visibility, and theme info
| 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 description adds value by specifying the exact fields returned. It does not disclose any additional behavioral traits beyond what annotations indicate.
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?
Single sentence with no filler; front-loads the purpose and efficiently lists the output fields.
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 description sufficiently explains what the tool returns. It omits ordering details but the output field 'display order' implies the list 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?
No parameters exist, so the description carries no burden. Baseline of 4 is appropriate as there are no parameter details to add.
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 uses a specific verb 'list' and resource 'pages', and clearly enumerates the output fields (IDs, types, display order, visibility, theme info), distinguishing it from sibling list 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?
No explicit when-to-use or when-not-to-use guidance is provided, but the tool is self-explanatory as a simple list operation with no parameters. Usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_poisARead-only
List points-of-interest on the "Things to Do" 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 indicates this is a read-only operation. The description does not add further behavioral details such as pagination, ordering, or response format. It is adequate for a simple list tool but lacks additional context.
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, clear sentence with no filler. It efficiently conveys the tool's purpose.
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 tool has no parameters, a readOnly annotation, and no output schema, the description is sufficiently complete. It provides the location context, but could optionally mention the format of the list (e.g., array of objects).
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?
There are zero parameters, so the baseline is 4. The description does not need to add parameter meaning beyond the schema, as none 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?
The description clearly states the verb 'list' and the resource 'points-of-interest', and specifies the location 'on the "Things to Do" page'. This effectively differentiates it from sibling tools like 'add_poi', 'remove_poi', and 'update_poi'.
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 no explicit guidance on when to use this tool versus alternatives. It is implied that one uses it to retrieve the list, but no context about when to prefer it or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_seating_chartsARead-only
List all seating charts with their UUID and event name
| 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. The description adds transparency about the return fields (UUID and event name), which is 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?
Single sentence, concise, and directly states the tool's functionality without any fluff.
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 no parameters and only one output field mentioned, the description is complete enough. It does not explain additional context like pagination, but for this tool it may not be 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?
No parameters exist (schema coverage 100%), and the description adds no parameter info, which is appropriate given there are none to document.
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 clearly states it lists all seating charts and specifies the returned fields (UUID and event name). It distinguishes itself from sibling tools like 'get_seating_chart'.
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 implicitly makes it clear when to use this tool (to list all seating charts) but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_travel_itemsARead-only
List hotels, flights, and transportation on the website Travel page
| 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 read-only nature is known. Description adds context about the scope (Travel page), which is 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?
One clear sentence with no unnecessary words. Perfectly concise for the information needed.
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 no parameters and no output schema, the description adequately explains what the tool does. Could optionally mention return type (list), but not required for completeness.
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?
No parameters exist, so schema coverage is 100% by default. Description adds value by specifying what is listed (hotels, flights, transportation) and where (Travel page), which is meaningful beyond the empty 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?
Clearly states it lists hotels, flights, and transportation on the Travel page, specifying the verb and resource. Distinguishes from sibling list tools like list_guests or list_vendors.
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 explicit when-to-use or when-not-to-use guidance, but context from sibling tools (add/update/remove_travel_item) implies usage for viewing existing travel items. Adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_unseated_guestsARead-only
List all guests who have not yet been assigned a seat
| 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 description's statement about listing unseated guests adds specific behavioral 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?
Single sentence of 10 words, no redundant information, perfectly concise.
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 for a simple read-only tool with no parameters and no output schema. Could mention return type but not essential.
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?
No parameters exist; schema coverage is 100%. Baseline 4 applies as no parameter documentation 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?
The description clearly states the verb 'List' and the specific resource 'guests who have not yet been assigned a seat', distinguishing it from sibling tools like list_guests (all guests) and assign_seat.
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 like list_guests. The description is purely functional with no contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vendorsARead-only
List all booked vendors with details
| 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 description does not need to reiterate safety. It adds value by specifying 'booked' vendors and 'with details', providing context beyond the annotation. However, it lacks details on pagination or ordering, which are minor gaps given no 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 description is a single concise sentence with no unnecessary words. It front-loads the key action and resource, and every word adds value.
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 tool's simplicity (no parameters, no output schema), the description is largely complete. It states the scope and that details are returned. However, it could mention if there is any default ordering or if the list is exhaustive, but these are minor omissions.
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?
Since there are zero parameters and schema coverage is 100%, the baseline is 3. The description adds no parameter information, but none 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?
The description clearly states the verb 'list', the resource 'vendors', and the scope 'all booked vendors with details'. It effectively distinguishes from sibling tools like search_vendors (which implies filtering) and add/remove/update vendors.
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 usage when you need a complete list of all booked vendors, but it does not explicitly mention when to use this tool versus alternatives like search_vendors for specific queries. No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_inquiry_readA
Mark a vendor inquiry conversation as read
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Inquiry UUID from list_inquiries |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description carries most of the behavioral burden. It does clearly state the state-change nature ('mark as read'), but it does not mention idempotency, whether there is a response, or any effect on other state (e.g., unread counts). For a simple mutation, this is adequate but not richly transparent.
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 front-loaded sentence with zero filler. Every word contributes to the core action and resource, making it optimally concise for the tool's simplicity.
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, no-output-schema mutation tool, the description tells an agent what it does and the schema tells it what to pass. It lacks any note on return values or success indication, but given the trivial action and the annotations, the essential context for correct invocation is 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 the uuid parameter already described as 'Inquiry UUID from list_inquiries'. The description adds no further parameter-level detail beyond naming the resource type, so it neither compensates nor detracts from the schema. 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 uses a specific verb ('mark') with a clear resource ('vendor inquiry conversation') and the resulting state ('as read'). It clearly distinguishes this mutation tool from siblings like list_inquiries or get_inquiry_conversation, which read or list rather than change 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?
The description gives no explicit guidance on when to use this tool versus alternatives, such as calling it after get_inquiry_conversation or only for unread inquiries. The intended use is only implied by the verb and resource, offering no exclusions or contextual prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_card_templateARead-only
Render an invitation template preview with text substituted in. Use to see how a design would look with your couple's names and wedding date. Returns the template structure including page layouts.
| Name | Required | Description | Default |
|---|---|---|---|
| last_name | No | Substitute for {{last_name}} | |
| first_name | No | Substitute for {{first_name}} placeholders | |
| wedding_date | No | Substitute for {{wedding_date}}, YYYY-MM-DD. Defaults to the wedding date on file. | |
| variation_uuids | Yes | One or more variation UUIDs to preview (e.g. a specific size+paper of an invitation) | |
| partner_last_name | No | Substitute for {{partner_last_name}} | |
| partner_first_name | No | Substitute for {{partner_first_name}} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given the annotation readOnlyHint=true, the description adds value by stating that it is a preview operation, implying no side effects. It also mentions text substitution and return of template structure, which goes beyond the annotation's bare read-only hint. No contradiction with 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 no filler, front-loading the core purpose and a clear use case. The second sentence specifies the output, which is useful but concise. 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 read-only preview tool with a rich schema and a simple output description, the definition is largely complete. The absence of an output schema is partially mitigated by mentioning it returns 'template structure including page layouts'. Could specify that it returns rendered images or whether it is synchronous, but these are minor gaps given the tool's simplicity.
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 each parameter is already documented. The description adds context that the tool substitutes placeholders, but it doesn't provide additional semantics beyond what the schema covers. Baseline 3 is appropriate because the schema carries the meaning for 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?
The description clearly states the verb, resource, and purpose: render a preview with text substitution. It distinguishes itself from sibling tools like create_card_project or validate_card_project by focusing on previewing, and the mention of returning template structure with page layouts adds specificity.
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 when to use it—to see how a design looks with specific names and date. It doesn't explicitly state when not to use it or mention alternative tools, but the sibling names are clearly about other operations (create, validate, swap), so the context is clear without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_qrcodeARead-only
Generate a QR-code PNG for an invitation. Returns the image so it can be inspected. Use set_card_project_qrcode to actually place it on a card.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL the QR code will resolve to | |
| enabled | No | Whether the QR code is enabled. Default: true. | |
| url_type | No | CUSTOM (default) | WEDDING_WEBSITE | WEDDING_WEBSITE_RSVP | |
| dimension | No | SMALL | MEDIUM (default) | LARGE |
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 behavioral context by stating that the tool returns a PNG image for inspection, which is valuable given there is no output schema. It does not overpromise or contradict 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 concise sentences, with the core purpose front-loaded and the sibling distinction stated immediately after. Every sentence carries useful information and there is 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 preview tool with readOnlyHint true and a fully documented input schema, the description covers the essential context: what it produces, that it returns the image, and how it differs from the placement tool. No critical information appears to be missing for an agent 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?
The input schema already documents all four parameters with 100% coverage, so the description is not required to explain them. The description adds general context about generating an invitation QR code but does not add parameter-level meaning 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?
The description states a specific verb and resource: 'Generate a QR-code PNG for an invitation.' It also clarifies the return value ('Returns the image so it can be inspected'), distinguishing it from set_card_project_qrcode, which places the QR code on a card. This is a clear and differentiated purpose.
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 explicitly names the sibling alternative set_card_project_qrcode and contrasts previewing the image with actually placing it on a card. This gives an agent direct guidance for choosing between the two related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_registryARead-only
Reconcile the registry against the gift tracker. Returns DUPLICATE_RISK (flagged fulfilled but purchased count is 0 — still buyable), UNATTRIBUTED (purchased with no order behind it, so giver and value are lost), ORPHAN_ORDER (an order with no matching registry item) and a MATCHED count. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint annotation by explaining exactly what kinds of results are returned and what each means: DUPLICATE_RISK, UNATTRIBUTED, ORPHAN_ORDER, and MATCHED count. It also explicitly states 'Read-only,' reinforcing that no mutation occurs.
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 compact and front-loaded with the core action. Each parenthetical earns its place by clarifying what each result category means, and the final 'Read-only' is a useful behavioral reinforcement despite also being in the annotations.
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, the description carries the full burden of explaining return semantics. It does so thoroughly by naming all four result categories and explaining the implications of the risk cases. An agent has enough context to call this 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?
The tool has zero parameters, so the baseline is 4; there is nothing for the description to explain. Schema coverage is vacuously 100%, and the description correctly focuses on behavior instead.
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 pair: 'Reconcile the registry against the gift tracker.' It also distinguishes this from simple read tools like get_registry and get_gift_tracker by describing a mismatch-detection operation with named result categories.
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 makes the use case clear: this is a read-only reconciliation operation that surfaces discrepancies between registry and gift-tracker data. It does not explicitly name alternatives or exclusion conditions, but with zero parameters and a self-contained purpose, the intended context is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_event_invitationADestructiveIdempotent
Remove an event invitation for a single guest or guest group. Pass exactly one of guest_group_id (removes for all guests in the group) or guest_id (removes for just that guest). Removing an invitation discards the guest’s recorded RSVP for this event (response, meal choice); re-inviting does not restore it. Other events’ invitations are preserved. Idempotent. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event entity ID from list_events (event_entity_id) | |
| guest_id | No | Single guest ID — removes for just that guest | |
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| guest_group_id | No | Guest group ID — removes for every guest in the group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the idempotentHint and destructiveHint annotations by disclosing that removal discards the guest's RSVP details, that re-inviting does not restore them, that other events are unaffected, and by detailing the two-step confirmation flow with a confirmToken. This is substantial behavioral context that annotations alone 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?
The description is dense but every sentence earns its place: purpose, scope selection, consequences, idempotence, and confirmation protocol. It is front-loaded with the core operation and parameter rule before explaining caveats and fallback behavior, with no 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?
Given the tool's destructive nature, idempotence, and non-trivial confirmation flow, the description covers everything an agent needs: what to pass, what will be lost, what is preserved, that it is idempotent, and exactly how to handle the two-step confirmation fallback. The absence of an output schema is acceptable because the description specifies the preview/confirmToken contract.
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 documents all parameters with 100% coverage, so the baseline is 3. The description adds meaningful semantics by imposing the mutually exclusive 'exactly one of guest_group_id or guest_id' rule and explaining the confirmToken's role in the confirmation fallback, which is valuable 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?
The description uses a specific verb and resource: 'Remove an event invitation for a single guest or guest group.' It clearly states the operation's target and scope, and the parameter-level conditional ('Pass exactly one of guest_group_id or guest_id') makes it easily distinguishable from sibling tools like invite_guest_to_event or remove_guest.
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 gives explicit usage instructions: pass exactly one of guest_group_id or guest_id depending on target scope, and explains effects like 'Other events' invitations are preserved.' It does not name sibling alternatives for when not to use this tool, but the usage context is otherwise clear and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_faqADestructive
Remove an FAQ from the public website. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| faq_entity_id | Yes | FAQ entity ID from list_faqs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses a confirmation requirement, a two-step fallback with a preview and confirmToken, and the need to repeat the call with the same arguments. This is rich behavioral context that prevents an agent from assuming a single call completes the 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?
The description is two sentences with no filler. The core purpose is front-loaded, and the confirmation mechanics are stated compactly in the second sentence. 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?
The description adequately covers the two invocation modes and references the MCP_CONFIRM_MODE contract. It explains what happens on the first call and what is needed for the second. It does not describe the final success response, but for a simple one-required-parameter tool this 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 the baseline is 3. The tool description adds context about the confirmation flow but does not explain parameter meanings beyond what the schema already provides. The schema already documents faq_entity_id and confirmToken precisely.
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 action ('Remove'), a specific resource ('an FAQ'), and the affected scope ('from the public website'). It differentiates itself clearly from sibling tools like add_faq, update_faq, and list_faqs by naming the exact operation.
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 usage context is implied by the purpose: this is the tool to use when an FAQ must be removed. It does not explicitly state when to prefer this over update_faq or list_faqs, and it offers no exclusions. The confirmation flow guidance helps with invocation but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_guestADestructive
Remove a guest group (household) from the guest list. This permanently deletes the household with every RSVP, event invitation and seat assignment its guests had; there is no trash. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| guest_group_id | Yes | Guest group ID from list_guests |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true, but the description adds substantial behavioral detail: there is no trash, deletion cascades to all related RSVPs/invitations/seat assignments, and the confirmation flow differs by client capability. This is exactly the kind of context 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?
Three front-loaded, information-dense sentences: the action, its permanent scope, then the confirmation protocol. No filler or repetition of schema details.
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?
Despite having no output schema, the description fully explains the destructive consequences and the two-step confirmation fallback, including what the first call returns and when the token can be used. This is complete enough for an agent to call the tool correctly and safely.
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 description adds value by explaining what the confirmToken is for, that the first call returns a preview, and that a repeat call with the token proceeds, which clarifies the guest_group_id confirmation semantics 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?
The description uses a specific verb and resource ('Remove a guest group (household) from the guest list') and goes further by spelling out the permanent deletion of every associated RSVP, invitation, and seat assignment. This clearly distinguishes it from add/update/remove sibling 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 explicitly explains when and how to confirm: a client-supported prompt, or a preview + confirmToken fallback with a repeat call. It does not name alternative tools or explicit when-not-to-use conditions, 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.
remove_home_sectionADestructive
Remove a story section from the public home page. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| homepage_entity_id | Yes | Home section ID from list_home_sections |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses the confirmation-first behavior, the two-step fallback with preview and confirmToken, and the requirement to call again only after explicit user approval. This adds substantial operational transparency about how the destructive action is gated.
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 compact, front-loaded with the primary purpose, and then logically explains the confirmation mechanism. Every sentence adds useful information without repetition 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?
The description adequately explains the action, the confirmation flow, and the token-based fallback, which is the main complexity of this tool. It could mention the success response shape or the permanence of the removal, but the destructiveHint annotation and confirmation gating make the behavior sufficiently clear for an agent 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 description coverage is 100%, so the schema already fully documents both parameters. The description reinforces the confirmToken protocol but does not add much meaning beyond what the detailed parameter descriptions already provide.
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 ('Remove') and a specific resource ('a story section from the public home page'), making the operation unambiguous. It differentiates the tool from its siblings add_home_section, update_home_section, and list_home_sections by focusing on the remova action on the home 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?
The description clearly implies this tool is for when a home section must be removed, and it explains the mandatory confirmation flow. It does not explicitly name alternative tools for related tasks (e.g., hiding a section via update_home_section), but the context and schema reference to list_home_sections provide adequate usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_poiADestructive
Remove a point-of-interest from the public Things-to-Do page. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| poi_entity_id | Yes | POI ID from list_pois |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses the confirmation prompt behavior, the two-step fallback with preview and confirmToken, and the requirement to repeat the call with the token. These are critical non-obvious behaviors that ensure safe and correct invocation.
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 redundancy: the first states the core action, the second explains the confirmation protocol. Every sentence contributes essential information and is well 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?
Given the tool's complexity—destructive action with a two-step confirmation flow—the description covers the non-obvious behavior (preview, confirmToken, repeat call) sufficiently for an agent to invoke it correctly. The schema handles parameter details and the annotation confirms 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%, so the baseline is 3. The description references confirmToken in context but does not add meaning beyond what the schema already provides; all important parameter details (POI ID source, token rules) are already 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?
The description uses a specific verb ('Remove') and a specific resource ('point-of-interest from the public Things-to-Do page'), making the tool's action unambiguous. It clearly distinguishes itself from sibling POI tools like add_poi, update_poi, and list_pois.
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 gives clear context for when the tool is used (to remove a POI from the public Things-to-Do page) and provides detailed operational guidance for the confirmation flow. It does not explicitly name alternatives or when-not-to-use conditions, but the purpose is self-evident relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_registry_itemADestructive
Remove an item from the registry guests shop from. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| collection_item_id | Yes | Item ID (item_id) from get_registry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, but the description goes beyond that by disclosing the confirmation-first behavior, including the two-step fallback with preview and confirmToken. This adds behavioral detail (how the tool interacts with the user and the MCP confirmation mode) that is not available from annotations alone. No contradiction exists.
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, which is efficient, but it is a long run-on with awkward phrasing ('registry guests shop from'). It front-loads the core action (Remove an item) and then adds confirmation details, but the structure could be clearer and more polished. It is reasonably concise but not a model 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?
The tool is destructive and has a confirmation flow, and the description covers the flow well. However, it does not mention what the final success response looks like, nor any side effects or irreversibility beyond the destructiveHint. Since there is no output schema, the agent is left without information on the return structure of a successful call. The confirmation behavior is well covered, but completeness for a destructive tool could be better.
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 have detailed descriptions in the schema. The tool description's mention of confirmToken and the confirmation flow echoes the schema but does not add new information beyond what is already in the schema's parameter descriptions. The main description references MCP_CONFIRM_MODE, which is not explained, but overall the schema carries the semantic load adequately.
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 clear action ('Remove an item') and identifies the resource (registry). Despite awkward grammar ('guests shop from'), the verb and object are unambiguous, and it distinguishes itself from sibling tools like add_registry_item and update_registry_item by the remove action.
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 implicitly indicates when to use the tool (to remove a registry item) and spends significant text explaining the confirmation flow, which is a usage guideline. However, it does not explicitly mention alternatives or exclusions (e.g., 'use add_registry_item to add, update_registry_item to modify'). The confirmation guidance is useful but selection context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_travel_itemADestructive
Remove a travel item from the public Travel page. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| travel_entity_id | Yes | Travel entity ID from list_travel_items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already mark destructiveHint=true, the description adds crucial behavior: it requires user confirmation, and on clients without elicitation it performs a two-phase call with a preview and confirmToken. This explains exactly how the destructive action is gated, which goes 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?
The description is a single dense sentence with no filler: it front-loads the core action and then details the confirmation behavior and fallback flow. The 'see MCP_CONFIRM_MODE' pointer is an efficient reference 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?
The description covers the destructive action, confirmation requirement, preview/token fallback, and repeat-call requirement, which is substantial for a tool with no output schema. It does not describe the exact shape of the preview response, but the provided information is sufficient for an agent to execute the flow 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 description coverage is 100% and both parameters already have detailed descriptions, especially confirmToken, which includes strong usage warnings. The tool description does not add new parameter semantics, 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 ('Remove') and resource ('a travel item from the public Travel page'), clearly distinguishing it from sibling remove_* tools such as remove_guest or remove_faq. It immediately tells the agent what operation is performed and on what object.
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 makes the use case obvious: removing travel items on the public Travel page, and it explains the confirmation flow required before the removal proceeds. It does not explicitly name alternatives like update_travel_item or add_travel_item, so it lacks an explicit when-not-to-use statement, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_vendorCDestructive
Unbook a vendor
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Vendor UUID from list_vendors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide destructiveHint=true, and the description adds no behavioral context beyond that. It does not disclose what gets unbooked or destroyed, whether the action is reversible, or what side effects occur on related vendor data.
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 brief and front-loaded with no wasted words, but it is under-specified rather than appropriately concise. 'Unbook a vendor' is a complete sentence, but it leaves essential meaning about scope and effect to inference.
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 operation with no output schema, this description is incomplete. An agent needs to know what 'unbook' means operationally, what is affected, and what the result looks like; none of that is provided.
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 uuid parameter description already tells the agent to use a UUID from list_vendors. The tool description adds no further parameter meaning, 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 resource ('vendor') and an action ('unbook'), so it is not a tautology. However, 'unbook' is ambiguous—it could mean deleting the vendor record or marking it as not booked—and the description does not differentiate this from the sibling add_vendor/update_vendor operations beyond the general direction.
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 alternatives such as update_vendor or remove_guest, and no context about preparation steps. The only implicit hint is the destructive annotation, which is not enough to help an agent decide between this and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_pagesA
Reorder pages in the website navigation. Pass the complete ordered list of page IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| page_ids | Yes | Full ordered list of page IDs in desired nav order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=false, and the description adds meaningful behavioral context beyond that: the operation replaces the full navigation order, since a complete list must be supplied. It could go further by explaining what happens to omitted pages or what response is returned, but it covers the crucial mutation semantics.
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 no filler. The purpose is front-loaded and the critical constraint ('complete ordered list') is stated immediately afterward.
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 mutation with annotations and a fully documented schema, the description is nearly complete. It does not mention retrieving the current page list via list_pages or what happens on success, but those are minor gaps for this operation.
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 describes page_ids as the 'Full ordered list of page IDs in desired nav order.' The tool description mostly restates that requirement, adding little semantic value 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?
Description uses a specific action ('Reorder') and a clear resource ('pages in the website navigation'), so an agent can immediately identify what the tool does. The complete-list requirement also helps distinguish it from related page tools like update_page or set_page_hidden.
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 clearly states the key usage condition: the agent must pass the complete ordered list of page IDs, not a partial diff. It does not explicitly name alternatives or say when not to use this tool, but for a single-purpose reorder tool the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_card_catalogARead-only
Search the invitation design catalog. Faceted search returning suites matching the requested card type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max suites to return. Default: 50. | |
| card_type | No | Lead card type: INVITATION (default), SAVE_THE_DATE, WEDDING_SHOWER_INVITATION, REHEARSAL_DINNER_INVITATION, THANK_YOU_CARD, etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that this is a safe read operation. The description adds that the search is 'faceted' and returns suites, which is useful but does not disclose behaviors such as result ordering, pagination beyond the limit parameter, or what happens when no matches are found. It does not contradict 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 description is short and front-loaded with the main action ('Search the invitation design catalog'), and the second sentence explains the result shape. Each part earns its place, though the phrase 'faceted search returning suites' is slightly awkward and could be more precise.
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 tool with two optional parameters and no output schema, the description adequately covers what is searched, what filters are relevant, and what is returned. It does not need to explain return values in detail since 'returning suites' provides sufficient orientation.
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 'limit' and 'card_type' already carry explanatory descriptions. The description only restates that matching is based on card type, adding little semantic value 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?
The description states a specific verb ('Search') and resource ('the invitation design catalog'), and explicitly describes the result ('returning suites matching the requested card type'). This clearly distinguishes the tool from related searches like search_registry_products or search_vendors by anchoring it in the invitation design domain.
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 use when searching for invitation card suites, but it does not explicitly mention when not to use it or name alternatives such as search_registry_products or search_vendors. The domain is clear, yet the guidance relies entirely on inference from the catalog reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_registry_productsARead-only
Browse Zola products in a category, scoped to your registry. Category IDs are Zola constants (e.g. 544 = Kitchen) — exposed via GET /v3/categories in the iOS app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50 | |
| offset | No | Default 0 | |
| category_id | Yes | Zola product category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with the readOnlyHint=true annotation; 'browse' describes a safe read operation. The description adds useful context beyond the annotation: results are scoped to the user's registry and category IDs are fixed Zola constants, not arbitrary product taxonomy values.
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 core purpose is front-loaded and the category-ID provenance earns the second 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 low-complexity read tool with only one required parameter and a readOnly annotation, the description covers purpose, scope, and parameter provenance. It stops short of 5 only because, with no output schema present, the return shape is never stated — though that's a minor gap for a browse operation.
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% (all three params documented), so the baseline is 3. The description adds value above baseline by grounding category_id with a concrete example (544 = Kitchen) and pointing to the source endpoint GET /v3/categories, which helps the agent supply a valid value.
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 resource (Zola registry products within a category) and the operation (browse), which distinguishes it from sibling search tools like search_vendors, search_storefronts, and search_themes. It stops short of 5 because the verb 'browse' is slightly imprecise about operation semantics and it doesn't state what the result set is.
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 registry-scoped, category-filtered nature of the operation implies when it should be used, and the sibling list confirms it targets a different domain than search_vendors/storefronts/themes. However, there is no explicit when/when-not statement or named alternative, so the agent must infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_storefrontsBRead-only
Search Zola vendor marketplace by category and location (1=Venues, 2=Photographers, 3=Florists, 7=Planners, 9=Bands/DJs)
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City name (e.g. Charlotte) | |
| limit | No | Results per page (default 24) | |
| offset | No | Pagination offset (default 0) | |
| state_province | Yes | State abbreviation (e.g. NC) | |
| taxonomy_node_id | Yes | Vendor category ID (1=Venues, 2=Photographers, 3=Florists, 7=Planners, 9=Bands/DJs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool is annotated readOnlyHint=true, and the description's 'Search' wording is consistent with a read-only operation. However, it adds no behavioral detail beyond that, such as result shape, pagination behavior, or what 'storefronts' means in this context.
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 front-loaded sentence with no filler, making it easy to scan. It loses one point because the category-ID mapping is duplicated from the input schema, so part of the sentence is not adding net-new value.
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 a simple read-only search, all required parameters documented, and no output schema, the description is minimal but workable. It is not fully complete because it omits any guidance about the overlapping 'search_vendors' tool and gives no sense of the returned data 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 schema already documents every parameter and even the same taxonomy-node ID mapping. The description adds the 'marketplace by category and location' framing but does not explain any parameter 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?
The description identifies a specific verb ('Search'), a specific resource ('Zola vendor marketplace'), and the two key search dimensions (category and location). It does not explicitly distinguish this tool from the similarly named 'search_vendors' sibling, so it falls just short of full 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 'by category and location' implies the natural use case, but the description states no when-to-use/when-not-to-use conditions and names no alternative tool. Given that 'search_vendors' exists as a sibling, the agent is left to infer which vendor-search tool fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_themesBRead-only
Browse the catalog of available wedding-website themes
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50 | |
| offset | No | Default 0 | |
| theme_layout_types | No | Default ["MULTI_PAGE"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes the read-only nature. The description adds no further behavioral details—such as pagination behavior, filtering semantics, or the structure of the returned list. With annotations present, the bar is lower, but the description still fails to disclose any useful behavioral context beyond what the annotation implies.
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, well-structured sentence that states the purpose immediately. There is no fluff or redundant phrasing, making it highly efficient and 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 simple search/list tool with fully documented parameters, the description is minimally adequate. It doesn't mention the output format or how filtering works, but the schema covers parameter semantics. Given no output schema and a straightforward purpose, the description could be more informative but is not severely deficient.
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?
All three parameters (limit, offset, theme_layout_types) have descriptions in the schema, so schema coverage is 100%. The tool description itself adds no parameter-specific meaning, but since the schema already documents them, the baseline 3 applies. The description doesn't explain how theme_layout_types affects results, but the schema's enum values offer some clarity.
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 clear action ('Browse') and resource ('catalog of available wedding-website themes'), which distinguishes it from sibling tools like get_current_theme that target the current theme. It is specific and unambiguous, though it doesn't explicitly contrast with related 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?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_current_theme or update_current_theme). It doesn't mention typical use cases, preconditions, or exclusions. An agent would have to infer its role from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vendorsARead-only
Search for vendors by name (typeahead) within a vendor category
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Vendor name to search for | |
| taxonomy_key | No | Vendor category key (e.g. wedding-venues, wedding-photographers, wedding-planners, wedding-bands-djs). Default: wedding-venues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering safety. The description adds the typeahead behavior and the category scoping, which are not present in annotations. This provides useful context about how the search operates (partial-name matching, category filtering) without repeating the read-only fact. It does not mention response format or limits, but the annotation lightens the 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?
The description is a single sentence with zero filler. It front-loads the core action ('Search for vendors by name') and immediately adds the typeahead and category qualifiers. Every word earns its place, making it highly efficient for an agent to parse quickly.
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 tool with two parameters (one required) and no output schema, the description is adequate. It covers the essential behavior (search by name within a category) and the typeahead aspect. It does not explicitly state that it returns a list of matching vendors, but that is a natural inference for a search tool, and the schema handles parameter details. The annotations cover safety, so the description meets the needs without over-explaining.
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 query and taxonomy_key are already documented in the schema. The tool description restates the query as 'by name (typeahead)' and taxonomy_key as 'within a vendor category', adding a slight behavioral nuance (typeahead) but not significant new meaning. With full schema coverage, a baseline of 3 is appropriate; the description adds marginal value 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?
The description clearly states the action (search), the resource (vendors), and the specific behavior (typeahead by name) plus a scoping constraint (within a vendor category). It distinguishes itself from sibling tools like list_vendors, add_vendor, etc., by emphasizing the name-based typeahead search, so an agent can immediately identify when this tool is relevant.
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 usage (searching vendors by name) but does not explicitly state when to choose this over alternatives such as list_vendors (which presumably returns all vendors) or search_registry_products. There is no mention of use cases like pre-filling a form or filtering a dropdown, and no exclusions or comparisons are provided. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_card_project_guestsA
Enable / disable guest groups for an invitation project and optionally override font sizes for printed names and addresses. Pass the full list of guest groups you want recorded.
| Name | Required | Description | Default |
|---|---|---|---|
| guest_groups | Yes | Full list of guest groups to record. Omitted groups are not affected by this call. | |
| project_uuid | Yes | Project UUID from list_card_projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=false, so the description must carry the behavioral burden. It clearly states the mutating action and optional overrides, but it does not spell out that omitted groups remain unchanged or describe the result/return 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 convey the operation, the optional behavior, and the key call requirement without redundancy. The action is front-loaded and 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 two-parameter mutation with fully documented schema fields, the description is nearly complete. It lacks an explicit prose statement of the 'omitted groups untouched' behavior, but the schema already covers that, so no major information 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 every parameter already has a meaningful description in the schema. The description adds the full-list instruction, but this is a marginal addition over the schema's own 'Omitted groups are not affected' note, so 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?
The description names a specific verb and resource: enabling/disabling guest groups for an invitation project, plus optional font-size overrides. It clearly differentiates from siblings like get_card_project_guests and set_event_guests by targeting card-project guest 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 gives clear context and a call instruction: pass the full list of guest groups to record. It does not explicitly name alternatives or exclusion conditions, but the invitation-project scope makes the intended use reasonably obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_card_project_qrcodeA
Place (or update) a QR code on a specific page of an invitation project. The page UUID comes from get_card_project (look under the customization's pages array).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL the QR code will resolve to | |
| color | No | Hex color (no #). Default: 000000 | |
| enabled | No | Whether to enable the QR code. Default: true. | |
| url_type | No | CUSTOM (default) | WEDDING_WEBSITE | WEDDING_WEBSITE_RSVP | |
| dimension | No | SMALL | MEDIUM (default) | LARGE | |
| page_uuid | Yes | Page UUID of the customization to put the QR on | |
| project_uuid | Yes | Project UUID from list_card_projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the useful upsert behavior 'Place (or update)', which clarifies that this tool can modify an existing QR code rather than only create one. The annotations only state destructiveHint=false, so there is no contradiction, but the description does not disclose further side effects or what happens to an existing QR code.
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 action and target are front-loaded, and the crucial cross-tool lookup instruction is placed second. 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?
With 7 parameters but a fully documented schema, the description covers the main contextual gap: where page_uuid comes from. It is sufficient for a confident call. It could be slightly more complete by mentioning what happens to an existing QR or how to preview the result, but these are not critical.
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 important meaning by explaining that page_uuid comes from get_card_project's customization pages array, which is not stated in the schema and is a key source of confusion for callers.
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 clearly states the action ('Place (or update)'), the object ('a QR code'), and the target ('a specific page of an invitation project'). This makes the tool's responsibility obvious and distinguishes it from page-level tools like update_page or preview_qrcode.
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 gives a concrete prerequisite: the page UUID comes from get_card_project, under the customization's pages array. This is clear contextual guidance, but it does not explicitly mention when not to use this tool or name alternative tools such as preview_qrcode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_event_guestsADestructiveIdempotent
Set which guest groups are invited to an event (bulk). For each group, invited:true ensures every guest in the group is invited to the event; invited:false removes the invitation — and with it any RSVP the guest recorded for this event (response, meal choice), which cannot be restored. Other events’ invitations are preserved. Idempotent. Use this to assign guests to events in bulk (e.g. by tier/affiliation/location). A call that uninvites anyone asks the user to confirm first (a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds — see MCP_CONFIRM_MODE). A call that only invites runs immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event entity ID from list_events (event_entity_id) | |
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| guest_groups | Yes | Guest groups to set for this event. Only the listed groups are affected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and idempotentHint, and the description adds substantial detail beyond those flags: uninviting deletes the guest's RSVP response and meal choice irreversibly, other events' invitations are preserved, and the two-step confirmation flow with confirmToken is explained. This directly tells the agent what gets destroyed and how confirmation behaves.
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 dense but every sentence earns its place: the core action, destructive consequences, idempotence, bulk-use guidance, and confirmation behavior are all covered without redundancy. Important warnings are front-loaded before the procedural confirmation detail.
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 tool's high complexity—bulk mutation, irreversible RSVP deletion, idempotence, and a two-mode confirmation flow—the description covers everything an agent needs to invoke it safely, including the confirmToken fallback. The lack of an output schema is mitigated by the description's explicit explanation of the confirmation-required response 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 schema already documents event_id, guest_groups, invited, and confirmToken thoroughly. The description reinforces the effect of invited:false but does not add parameter-level semantics beyond what the schema already provides, matching the baseline for high schema coverage.
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 and resource: 'Set which guest groups are invited to an event (bulk).' It clearly distinguishes itself from single-guest tools like invite_guest_to_event and remove_event_invitation by emphasizing bulk group assignment and the invited:true/false semantics.
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 gives explicit usage context: 'Use this to assign guests to events in bulk (e.g. by tier/affiliation/location).' It does not explicitly name alternatives or say when not to use it, so it stops short of a 5, but the context is clear enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swap_card_project_variationA
Swap one or more customizations on a project to different variations (e.g. switch paper type, color, or size). Pass a map of customization UUID → new variation UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID from list_card_projects | |
| customizations | Yes | { customization_uuid: new_variation_uuid } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only destructiveHint: false; the description does not disclose whether the swap is atomic, reversible, what happens on invalid UUIDs, or whether it overwrites existing variation assignments. As a mutating tool, this leaves a transparency gap beyond what annotations already 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?
Two sentences, front-loaded with the core action, and the parameter format is stated directly. No wasted words 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?
Both required parameters are fully described by the schema abbreviator. However, there is no output schema and the description offers no guidance on return values, error handling, or side effects, which are meaningful gaps for a mutating 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 description restates the exact map format '{ customization_uuid: new_variation_uuid }'. The examples add slight color but no genuine semantic information beyond the schema's 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?
The description uses the specific verb 'Swap', identifies the resource ('one or more customizations on a project') and gives concrete examples of variation types (paper type, color, size). This clearly differentiates it from the many update_* siblings in the card project domain.
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 operation's purpose strongly implies when to use it (changing a customization to a different variation), but the description does not explicitly compare it to alternatives like update_website_customization or note any prerequisites or exclusions. The agent must infer selection from the name and examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_rsvpsARead-only
Get RSVP tracking summary per event (attending, declined, not responded)
| 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 description's behavioral contribution is limited to stating it returns a summary with RSVP status counts. This adds value but does not disclose additional traits like data freshness or aggregation logic.
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 that is front-loaded with the action and resource. Every word is necessary, providing maximum information in minimal space 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 parameterless tool with annotations, the description covers the key functionality. However, it does not specify the output format (e.g., per event list or aggregated counts) or any limitations, which would improve completeness.
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?
There are no parameters, and schema description coverage is 100%. According to the rubric, 0 parameters yields a baseline of 4. The description does not need to add parameter information.
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 clearly states it 'Get RSVP tracking summary per event' and specifies the data fields (attending, declined, not responded). It is specific enough to distinguish from sibling tools like get_rsvp_page, though explicit differentiation is missing.
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 no guidance on when to use this tool versus alternatives like get_rsvp_page or list_events. It does not include any exclusions or context for optimal use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_budget_itemA
Update a budget item's actual cost and/or note by UUID
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Note for the budget item | |
| uuid | Yes | Budget item UUID from get_budget | |
| actual_cost_cents | No | Actual cost in cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false. The description adds useful behavioral context by indicating that either actual cost, note, or both can be updated ('and/or'), implying partial update semantics. It does not disclose side effects, whether omitted fields are left unchanged, or any authorization needs, but the simple scope and read-safe annotation keep this at a reasonable level.
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 that captures the action, target, fields, and identifier with no filler. Every word contributes to understanding.
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 partial-update tool with full schema coverage, no output schema, and a non-destructive annotation, the description covers the core invocation need. It could mention that UUIDs come from get_budget or how the update affects the budget summary, but these are minor 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 three parameters: uuid, actual_cost_cents, and note. The description reinforces the semantics but does not add meaning beyond the schema; it earns the baseline score.
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 ('Update'), a specific resource ('budget item'), and the exact fields involved ('actual cost and/or note'), plus the key identifier ('by UUID'). It is immediately clear what the tool does and it is distinguishable from sibling update tools like update_travel_item and update_vendor.
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 is provided about when to use this tool versus alternatives, when not to use it, or what prerequisites must be met. The only implicit signal is that the budget item must already exist and be identified by UUID; the description does not point to get_budget or mention that add_budget_item is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_current_themeB
Switch the wedding website to a different theme template
| Name | Required | Description | Default |
|---|---|---|---|
| theme_key | Yes | Theme key from search_themes (e.g., "galata", "blake-cranberry") | |
| theme_layout_type | No | Default MULTI_PAGE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond the annotations. It doesn't state whether the switch is reversible, what happens to existing page content, or whether the change applies immediately. Given destructiveHint=false, the agent gets some safety signal, but the description does not enrich 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?
The description is a single sentence that gets straight to the point. It is front-loaded and contains no filler, making it easy to parse. However, it could be slightly longer to cover usage, but for its brevity it scores high.
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?
The tool is simple with only two parameters and no output schema. The description provides a core purpose but omits any context about behavior, return values, or interaction with other features. Given the minimal annotations, a bit more guidance would be helpful, but the description is not inadequate for a basic update 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 schema already documents both parameters (theme_key and theme_layout_type). The description does not elaborate on parameter meaning, but the schema provides sufficient detail. 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?
The description clearly states the action ('switch') and the resource ('wedding website') with a specific object ('theme template'). It distinguishes from siblings like search_themes (searching) and get_current_theme (retrieving), though it doesn't explicitly name 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 description provides no guidance on when to use this tool vs alternatives. It doesn't mention prerequisites like searching for themes first, nor does it mention any alternative tools. This forces the agent to infer usage from the schema and name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_eventADestructiveIdempotent
Update a wedding event (name, time, venue, location, dress code, RSVP settings). Guests see these details on the website. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | No | Event name | |
| note | No | Event notes/description | |
| attire | No | Dress code | |
| end_at | No | End time ISO 8601 | |
| address1 | No | Street address | |
| event_id | Yes | Event entity ID from list_events | |
| start_at | No | Start time ISO 8601 (e.g. 2026-10-17T18:30:00Z) | |
| venue_name | No | Venue name | |
| postal_code | No | ||
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| country_code | No | Default: US | |
| collect_rsvps | No | Whether to collect RSVPs for this event | |
| state_province | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations by explaining the mandatory user confirmation flow, the two-phase fallback with preview/confirmToken, and the fact that guests see these details on the website. This does not contradict the idempotentHint or destructiveHint 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?
The description is compact and front-loaded with the core operation. The confirmation sentence is dense but earns its place because it documents a non-obvious call protocol.
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 14-parameter mutation tool with no output schema, the description covers the most important non-obvious behavior: the confirmation flow and public visibility of changes. The detailed schema descriptions and annotations cover the remaining specifics well enough 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?
The description groups fields into broad categories already present in the schema, and 79% schema description coverage means the schema carries most parameter meaning. The confirmToken semantics are thoroughly documented in the schema itself, so the description adds little beyond conceptual grouping.
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 operation ('Update a wedding event') and enumerates the editable aspects (name, time, venue, location, dress code, RSVP settings). This clearly differentiates it from sibling update_* tools targeting pages, FAQs, vendors, or website settings.
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 intended use is implied by the operation name and description, but there is no explicit guidance about when to prefer this tool over alternatives or when not to use it. No exclusionary or alternative-routing statements are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_faqB
Update an existing FAQ — all three fields (question, answer, display_order) must be supplied
| Name | Required | Description | Default |
|---|---|---|---|
| answer | Yes | ||
| question | Yes | ||
| display_order | Yes | ||
| faq_entity_id | Yes | FAQ entity ID from list_faqs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the schema requirement that all three fields are required, which is already captured by the input schema. It does not disclose what happens if the FAQ doesn't exist, whether fields are overwritten, or any error behavior. Annotations only provide destructiveHint: false, which is minimal, so the description carries the burden but adds no new behavioral context.
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, efficient sentence that front-loads the action and the critical requirement. 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 simple CRUD update, the description gives the essential constraint, but it lacks guidance on return values, error handling, or prerequisites (e.g., valid entity ID). Given low schema coverage and no output schema, the agent is left without information on what happens on success or failure.
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 description mentions the three field names but does not add any semantic meaning beyond the schema property names. Schema coverage is only 25% (only faq_entity_id has a description), and the description does not compensate by explaining the purpose or format of question, answer, or display_order.
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 clearly states the action ('Update') and the resource ('an existing FAQ'), and explicitly lists the three fields that must be supplied, distinguishing it from add_faq and remove_faq by noting it operates on an existing item.
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 usage for updating existing FAQs but does not explicitly state when to use it over add_faq or remove_faq. No exclusions or alternative routing is provided, so an agent must infer based on the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_guest_addressC
Update a guest group's mailing address
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| address1 | No | ||
| address2 | No | ||
| postal_code | No | ||
| country_code | No | Default: US | |
| guest_group_id | Yes | Guest group ID from list_guests | |
| state_province | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation, destructiveHint=false, tells the agent this is not a data-destroying operation, and the description is consistent with that. However, the description discloses nothing beyond the annotation — it does not say whether the update is partial (PATCH-like) or full-replacement, whether omitted address fields are cleared, or what response 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 7-word sentence conveys the core purpose with zero wasted words. It could carry slightly more substance (e.g., a note about partial updates) without becoming bloated, but as written it is efficient and immediately scannable.
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?
This is a 7-parameter mutation tool with no output schema and 29% schema coverage, yet the description supplies only a purpose one-liner. An agent evaluating this tool cannot tell whether optional fields accumulate or overwrite, whether updates are reversible, or what the call returns — significant gaps for a tool of this complexity.
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 only 29% — five of seven parameters (city, address1, address2, postal_code, state_province) have no schema description. The description's phrase 'mailing address' loosely groups these fields, but it adds no per-parameter meaning and does not compensate for the low coverage, leaving the agent to guess field formats or optionality 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?
The description states a clear verb ('update') and resource ('a guest group's mailing address'), making the tool's purpose immediately recognizable. The name plus description distinguish it from siblings like add_guest, remove_guest, and update_event, though it does not explicitly name or contrast any 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?
The description provides no when-to-use guidance, no exclusions, and no alternatives. An agent must infer the intended use solely from the tool's name, with no guidance about prerequisites such as the guest group having to exist or be fetched via list_guests (which is only noted in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_home_sectionA
Update a home page story section — all fields must be supplied
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| hidden | Yes | ||
| subtitle | Yes | ||
| description | Yes | ||
| display_order | Yes | ||
| homepage_entity_id | Yes | Home section ID from list_home_sections |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false. The description adds a meaningful behavioral detail: the update requires all fields, implying a full replace rather than a merge. However, it does not describe side effects, handling of an unknown ID, or any output behavior; with such sparse annotations, more transparency would be 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?
The description is a single sentence with no filler, and the most important constraint ('all fields must be supplied') is front-loaded after the action. 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 simple six-field update, the description plus schema is minimally viable: the ID source is documented in the schema, and field names are fairly self-evident. But there is no output schema, no behavior about validation or errors, and no context on what happens to the existing section beyond overwrite semantics.
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 only 17%, with only homepage_entity_id documented in the schema. The description adds no parameter-level meaning beyond restating that all fields must be supplied, which the schema already encodes via required fields. An agent must infer semantics from parameter names alone.
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 ('Update') and resource ('home page story section'), and the requirement 'all fields must be supplied' distinguishes this from partial edits. The sibling names add_home_section/remove_home_section/list_home_sections make the intended operation 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 description clearly frames this tool as the way to modify an existing home section and signals that a complete field set is required. It does not explicitly name add_home_section for creation or remove_home_section for deletion, but the context is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pageB
Update page-level metadata (title, intro copy, nav title, visibility, layout customization)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | On-page title | |
| hidden | No | Hide the page from the public site | |
| page_id | Yes | Page ID from list_pages | |
| nav_title | No | Title shown in nav bar | |
| intro_copy | No | Introductory paragraph on the page | |
| menu_title | No | Title shown in mobile menu | |
| description | No | Page description | |
| customization | No | Layout customization object (see list_pages for shape) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some context by listing the metadata fields and aligns with the non-destructive annotation. However, it does not disclose whether this is a partial update or a full overwrite, what the effect of 'visibility' is in practice, or what response to expect. The destructiveHint=false annotation lowers the burden, but richer behavioral detail would still be 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?
The description is one focused sentence that leads with the action and resource, then lists the scope. There is no filler, and every phrase contributes to understanding what the tool operates on.
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?
The description covers the basic purpose and the schema covers parameter semantics, but there is no output schema and the description does not explain return behavior, partial-update semantics, or how to choose this over more specific sibling tools. For an 8-parameter mutation tool with many related siblings, this leaves noticeable 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 parameters are already well documented in the schema. The description's field list roughly mirrors the schema properties but does not add meaning beyond the schema. 'Visibility' is a loose label for the 'hidden' parameter, and 'layout customization' matches 'customization'. 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?
The description clearly identifies the verb ('Update'), the resource ('page-level metadata'), and enumerates the affected fields: title, intro copy, nav title, visibility, and layout customization. It is not a tautology, but it does not explicitly distinguish itself from specialized siblings like set_page_hidden, which overlaps with the 'visibility' aspect.
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 is given about when to use this tool versus alternatives such as set_page_hidden, reorder_pages, or update_home_section. The description implies a general-purpose updater but never states exclusions or points to a more specific sibling for narrower tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_poiB
Update a point-of-interest. Provide only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| city | No | ||
| title | No | ||
| address1 | No | ||
| address2 | No | ||
| latitude | No | ||
| longitude | No | ||
| description | No | ||
| postal_code | No | ||
| country_code | No | ||
| contact_phone | No | ||
| display_order | No | ||
| poi_entity_id | Yes | POI ID from list_pois | |
| state_province | No | ||
| google_place_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false, so the safety profile is covered. The description adds a key behavioral trait: it is a partial update where only specified fields are changed, implying omitted fields remain untouched. This goes beyond the annotation and helps the agent understand the mutation semantics. It does not contradict 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 with no filler. The main action is front-loaded, followed by a concise, valuable usage instruction. 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 tool with 15 parameters, no output schema, and very low schema description coverage, this description is under-specified. It does not mention how to identify a POI (though the schema hints via poi_entity_id), what happens after update, or any return values/errors. While parameter names are somewhat self-explanatory, the description alone is insufficient for an agent to confidently invoke the tool in all 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 only 7% (only poi_entity_id has a description). The description does not compensate: it provides no parameter-specific details, no clarification of ambiguous names like display_order or google_place_id, and no guidance on required vs optional fields beyond the general 'fields you want to change.' With 15 parameters and minimal schema descriptions, the description should offer more.
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 uses a specific verb ('Update') and resource ('a point-of-interest'), clearly stating the tool's action. It does not explicitly distinguish itself from sibling update tools (e.g., update_vendor, update_page), but the resource name is sufficiently distinct. It lacks the explicit sibling comparison seen in top-tier descriptions, 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 'Provide only the fields you want to change' gives a clear instruction on how to invoke the tool (partial update) and implies it is used when modifying an existing POI. However, it does not explicitly mention alternatives like add_poi or remove_poi, nor does it state when-not-to-use this tool. The usage 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.
update_registry_itemADestructiveIdempotent
Update an existing registry item — all fields must be supplied (it's a full replace)
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | ||
| group_gift | Yes | ||
| most_wanted | Yes | ||
| collection_id | Yes | Collection the item belongs to | |
| personal_note | Yes | ||
| marked_fulfilled | Yes | ||
| collection_item_id | Yes | Item ID from get_registry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavioral detail beyond annotations: it explicitly states that all fields must be supplied because it is a full replace. This is crucial because it signals that omitted fields will be overwritten, which is not evident from annotations alone. The annotations already flag destructiveHint: true, so the description complements rather than contradicts, providing specific operational semantics.
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, focused sentence that front-loads the primary action and then states the critical caveat. There is no wasted text, and the full-replace behavior is presented immediately after the action, making it easy to parse.
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 7 required parameters, low schema coverage, and no output schema, the description only covers the full-replace behavior. It does not provide individual parameter semantics or any information about what the tool returns (since there is no output schema). An agent would lack the detail needed to correctly supply all fields, particularly the ones without schema descriptions. The description is too sparse for a complex mutation tool with all-required parameters.
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 only 29% (only collection_id and collection_item_id have descriptions). The description does not explain the other five parameters (quantity, group_gift, marked_fulfilled, personal_note, most_wanted) at all. It only mentions that all must be supplied, which is a general requirement but does not clarify their meaning or expected formats. Given the low schema coverage, the description fails to compensate, leaving significant ambiguity for the agent.
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 clearly states the action ('Update an existing registry item') and the critical behavior ('it's a full replace'). This distinguishes it from sibling tools like add_registry_item and remove_registry_item by indicating it modifies an existing item rather than creating or deleting.
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 usage for updating an existing item but does not explicitly state when to choose this tool over alternatives (e.g., 'use this when you need to modify an existing item; for new items use add_registry_item'). The 'full replace' note hints at a requirement, but there is no explicit when-not or alternative routing, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_travel_itemA
Update a travel item. Provide only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| city | No | ||
| code | No | ||
| name | No | ||
| note | No | ||
| type | No | ||
| source | No | ||
| address1 | No | ||
| address2 | No | ||
| latitude | No | ||
| timezone | No | ||
| longitude | No | ||
| postal_code | No | ||
| country_code | No | ||
| display_order | No | ||
| email_address | No | ||
| contact_number | No | ||
| state_province | No | ||
| google_place_id | No | ||
| travel_entity_id | Yes | Travel entity ID from list_travel_items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a partial-update behavior by instructing to provide only fields to change, which is useful beyond the annotations. However, it does not describe side effects, validation behavior, auth requirements, or what happens to omitted fields beyond the implication that they remain unchanged. The destructiveHint annotation is not contradicted.
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 extremely concise and front-loaded, with the core action stated in the first sentence and the crucial partial-update behavior in the second. Every sentence contributes meaningful guidance with no filler or repetition.
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 tool with 20 parameters, no output schema, and sparse annotations, this description is too thin to be fully actionable. It omits return behavior, required-identifier guidance beyond the schema, enum constraints, and any context about how the update interacts with related entities like travel lists or locations.
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 schema description coverage at only 5%, the description bears responsibility for clarifying parameter meaning, but it merely says to provide fields to change without explaining any of the 20 parameters. The input schema provides property names and a handful of enums, but the description adds almost no parameter-level semantics beyond the general partial-update pattern.
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 uses the specific verb 'Update' with the resource 'travel item', clearly identifying the action and distinguishing it from sibling tools like add_travel_item, remove_travel_item, and list_travel_items. The added instruction about changing only selected fields further clarifies the intended operation.
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 tool is for modifying an existing travel item and tells the agent only to provide changed fields, but it does not explicitly state when to prefer this over add_travel_item or remove_travel_item, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vendorC
Update a booked vendor's details
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | No | ||
| uuid | Yes | Vendor UUID from list_vendors | |
| No | |||
| event_date | No | ISO 8601 date | |
| price_cents | No | ||
| state_province | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, which offers minimal safety context. The description adds no behavioral information beyond 'update', such as whether changes are partial or full, whether existing details are overwritten, or what happens if the vendor is not booked.
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, concise sentence with no filler. However, it is under-specified relative to the tool's complexity: seven parameters, low schema coverage, and no usage guidance mean a somewhat longer description would be more appropriate.
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 low schema coverage, lack of output schema, and minimal annotations, the description is not complete enough for an agent to confidently invoke this tool. Critical parameter semantics, behavioral side effects, and guidance on distinguishing from add_vendor/remove_vendor are 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 low at 29%, and the description does not compensate by explaining the seven parameters. Only uuid and event_date have schema descriptions; city, name, email, price_cents, and state_province are left undocumented in both schema and description.
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 clearly states a specific action ('Update') and resource ('a booked vendor's details'), so an agent can tell this is a modification operation. However, it does not explicitly differentiate from sibling tools like add_vendor, remove_vendor, list_vendors, or search_vendors; the distinction is only implicit through the verb.
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 alternatives. No mention of prerequisites like the vendor needing to already exist or be booked, no exclusions, and no pointer to add_vendor or list_vendors for related workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_website_customizationA
Update website colors and fonts. Provide only what changes. Colors are 6-char hex without #. Note: when header_font_family_id changes, the wrapper auto-fetches current state and re-sends all active colors to defend against a Zola partial-update wipe bug. body_font_family_id is restricted to [68, 198]. header_color and nav_font_color exist on Zola's web-api endpoint but are NOT writable via the mobile-api this MCP uses — change them in the Zola web UI for now.
| Name | Required | Description | Default |
|---|---|---|---|
| accent_color | No | 6-char hex (no #) | |
| header_color | No | Writable only via Zola's web-api (cookie+CSRF), not the mobile-api this MCP uses. Passing this throws. | |
| nav_font_color | No | Writable only via Zola's web-api (cookie+CSRF), not the mobile-api this MCP uses. Passing this throws. | |
| body_font_color | No | ||
| background_color | No | ||
| body_font_family_id | No | Restricted to 68 (Libre Baskerville) or 198 (Circular). Other IDs return a generic API error. | |
| header_font_family_id | No | Font family ID — call get_website_customizations to see available font_family_ids | |
| navigation_background_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only destructiveHint: false in annotations, the description carries the behavioral burden and succeeds: it discloses the auto-fetch/re-send workaround for the Zola partial-update wipe bug, the throwing behavior of two non-writable parameters, and the restricted body_font_family_id range with its generic-error failure mode. No contradiction with 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?
Four sentences, each earning its place: purpose, update semantics, color format, bug workaround, field restrictions. The Zola bug sentence is long and dense, but it conveys critical behavior that would otherwise surface only as a runtime surprise. Slightly heavy on a single compound sentence, but no waste.
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 8-parameter, all-optional write tool with no output schema, the description covers format constraints, value restrictions, bug behavior, and field-level alternatives. Minor gaps: no statement of what happens when zero parameters are passed, no return-value description, and header_font_family_id validation only appears in the schema, not the description. These are small relative to the breadth disclosed.
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 description adds the 6-char hex-without-# format rule and the partial-update semantics that only provided fields are touched — details the schema lacks for the color parameters. It reinforces the schema's body_font_family_id restriction and the non-writable header_color/nav_font_color. At 63% schema coverage, the description meaningfully compensates for undocumented 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?
The description opens with a specific verb+resource pair — 'Update website colors and fonts' — making the tool's scope immediately clear. This distinguishes it from read siblings like get_website_customizations and theme-level tools like update_current_theme, though it doesn't explicitly name any sibling. The purpose is unambiguous and precise about what domain the update touches.
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 gives clear usage context: 'Provide only what changes' establishes partial-update semantics, and it explicitly directs the agent to the Zola web UI for header_color and nav_font_color, which throw if passed here. It does not explicitly reference sibling MCP tools as alternatives, but the field-level when/where guidance is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_wedding_settingsADestructiveIdempotent
Update top-level wedding settings. Provide only the fields you want to change; the rest are preserved. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| slug | No | URL slug — appears in the public website URL. Changing it breaks every link and QR code already shared or printed with the old URL | |
| title | No | Wedding title (e.g., "Alex & Jordan") | |
| hashtag | No | e.g. #alexjordan2026 — empty string clears it | |
| guest_count | No | ||
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| wedding_date | No | YYYY-MM-DD | |
| state_province | No | ||
| owner_last_name | No | ||
| owner_first_name | No | ||
| partner_last_name | No | ||
| enable_search_zola | No | Allow Zola search to find the site | |
| partner_first_name | No | ||
| enable_search_engine | No | Allow search engines (Google, etc.) to index the site |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the idempotent/destructive annotations by revealing the confirmation workflow: a native prompt when supported, otherwise a preview + confirmToken in phase 1 and a repeated call to commit. It also discloses non-destructive partial update behavior (unspecified fields preserved), which is exactly the kind of behavioral trait an agent needs before invoking a destructive-looking update.
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 two dense sentences with no filler: the first front-loads the action and partial-update rule, the second explains the confirmation flow. The reference to MCP_CONFIRM_MODE keeps it compact.
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?
The description covers update semantics, partial preservation, and the full confirmation/fallback path, so an agent can invoke the tool correctly even without an output schema. It does not describe the success response or error cases, but given the schema's rich parameter docs and annotations, this 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?
With only 50% schema coverage, the description partially compensates by stating that parameters are optional and that omitted values are preserved, which is critical for all 14 parameters. It also reinforces the schema's confirmToken handling for the two-step fallback, though it doesn't add meaning for the 7 undocumented 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?
The description states a specific action ('Update') and a precise resource ('top-level wedding settings'), immediately distinguishing it from page-, event-, vendor-, and FAQ-level update siblings. It also conveys the partial-update model, so an agent knows exactly what operation this tool performs.
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 clearly frames when to use the tool: to modify top-level wedding settings, and instructs that only changed fields be supplied, with untouched fields preserved. It doesn't explicitly name when-not-to-use alternatives like update_website_customization or update_page, but the top-level scope makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_card_projectARead-only
Validate an invitation project — reports any text-fit, image, or guest-addressing errors per customization. Use before placing an order.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID from list_card_projects |
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 behavioral detail about the kinds of errors reported, but with no output schema it does not clarify the response structure or whether the operation is purely in-memory vs. persistent validation, leaving some ambiguity.
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 deliver the core purpose, the types of errors checked, and a clear usage cue. There is no filler, and the action 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 one-parameter, read-only validation tool with full schema coverage, the description provides sufficient context: what it validates, what it reports, and when to use it. The lack of return-value detail is a minor gap given the simple nature of the tool and the absence of an 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 description coverage is 100% and the only parameter, project_uuid, is already documented as coming from list_card_projects. The description adds no additional meaning about the parameter beyond restating the resource being validated, so the baseline score of 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?
The description clearly states a specific verb ('Validate'), resource ('invitation project'), and the kind of output ('reports any text-fit, image, or guest-addressing errors per customization'). It is distinct from siblings like get_card_project, but it does not explicitly name or contrast any sibling, so it misses the top score.
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 before placing an order' gives explicit contextual guidance on when to invoke the tool. However, it does not mention when not to use it or point to alternatives such as preview_card_template, so it stops short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zola_healthcheckVerify credentials and upstream reachabilityARead-onlyIdempotent
Resolves the credential the way real tools do, then makes one authenticated request to mobile-api.zola.com. Reports which source supplied the credential, whether mobile-api.zola.com accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a mobile-api.zola.com-side problem'. Read-only; never returns the credential itself. Call this when a real tool fails and you want to know which hop broke.
| 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, idempotentHint=true, and openWorldHint=true. The description substantially enriches this by disclosing that it resolves credentials the same way real tools do, makes exactly one authenticated request, reports round-trip time, distinguishes failure modes, and never returns the credential itself. This exceeds annotation coverage and clearly communicates behavioral safety.
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 with zero waste. The first sentence states the core action, the second enumerates output details, and the third gives usage guidance. Each sentence earns its place and the most important information 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 zero-parameter, read-only diagnostic tool, the description covers all essentials: what it does, what it reports, when to use it, and its safety behavior. No output schema exists, but the description's enumeration of reported values is enough for an agent to interpret the result 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?
The tool has zero parameters and the schema covers 100% by having no properties. The baseline for zero parameters is 4; the description confirms no input is needed by focusing on what it performs. This is appropriate since there is nothing to explain 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?
The description states a specific verb ('Resolves', 'makes one authenticated request') with a concrete resource ('mobile-api.zola.com') and exact outputs ('which source supplied the credential', 'accepted it', 'round-trip time', 'plain-English hint'). It clearly differentiates this diagnostic tool from the 80+ sibling tools that perform CRUD or search operations, leaving no ambiguity about what it does.
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 explicitly says 'Call this when a real tool fails and you want to know which hop broke,' giving a clear invocation context. It doesn't list when-not-to-use or name alternative diagnostic tools, but none exist among the siblings—this is the only healthcheck—so the context is sufficient without exclusions.
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.
11 tool updates
v2.1.4- Changed
list_guests2 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / viewAdded value: +{ + "description": "Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact keeps ids, names, tier, invited/RSVP state, per-event invitations and whether an address is on file; it leaves out street addresses, emails and phone numbers. Ask for \"full\" only when you need contact details.", + "enum": [ + "compact", + "full" + ], + "type": "string" +}
- Changed
remove_event_invitation1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
remove_faq1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
remove_guest1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
remove_home_section2 fields changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +} - added
Input schema / properties / homepage_entity_id / descriptionAdded value: +"Home section ID from list_home_sections"
- Changed
remove_poi2 fields changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +} - added
Input schema / properties / poi_entity_id / descriptionAdded value: +"POI ID from list_pois"
- Changed
remove_registry_item2 fields changed- added
Input schema / properties / collection_item_id / descriptionAdded value: +"Item ID (item_id) from get_registry" - added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
remove_travel_item2 fields changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +} - added
Input schema / properties / travel_entity_id / descriptionAdded value: +"Travel entity ID from list_travel_items"
- Changed
set_event_guests1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
update_event1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
- Changed
update_wedding_settings1 field changed- added
Input schema / properties / confirmTokenAdded value: +{ + "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.", + "type": "string" +}
1 tool update
v2.1.2- Changed
update_wedding_settings2 fields changed- changed
Input schema / properties / hashtag / descriptionPrevious value: -"e.g. #merchris2026 — empty string clears it"New value: +"e.g. #alexjordan2026 — empty string clears it" - changed
Input schema / properties / slug / descriptionPrevious value: -"URL slug — appears in the public website URL"New value: +"URL slug — appears in the public website URL. Changing it breaks every link and QR code already shared or printed with the old URL"
55 tool updates
v2.0.0- Changed
add_faq1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_guest1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_home_section1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_poi1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_registry_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_travel_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_vendor1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
assign_seat1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_card_project1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_card_project1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_card_project_guests1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_card_suite1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_inquiry_conversation1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_registry1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_seating_chart1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_storefront1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
invite_guest_to_event1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
list_card_projects1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
mark_inquiry_read1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
preview_card_template1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
preview_qrcode1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_event_invitation1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_faq1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_guest1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_home_section1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_poi1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_registry_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_travel_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_vendor1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
reorder_pages1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_card_catalog1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_registry_products1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_storefronts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_themes1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_vendors1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_card_project_guests1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_card_project_qrcode1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_event_guests1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_page_hidden1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
swap_card_project_variation1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_budget_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_current_theme1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_event1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_faq1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_guest_address1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_home_section1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_page1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_poi1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_registry_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_travel_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_vendor1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_website_customization1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_wedding_settings1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
validate_card_project1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
zola_healthcheck1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
1 tool update
v1.11.0- Added
zola_healthcheck
2 tool updates
v1.10.0- Changed
get_registry3 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / limitAdded value: +{ + "description": "Max items to return. Default 100", + "type": "number" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Item offset. Default 0", + "type": "number" +}
- Added
reconcile_registry
75 tool updates
v1.4.2- First observed
add_faq - First observed
add_guest - First observed
add_home_section - First observed
add_poi - First observed
add_registry_item - First observed
add_travel_item - First observed
add_vendor - First observed
assign_seat - First observed
create_card_project - First observed
get_budget - First observed
get_card_project - First observed
get_card_project_guests - First observed
get_card_suite - First observed
get_current_theme - First observed
get_gift_tracker - First observed
get_inquiry_conversation - First observed
get_registry - First observed
get_rsvp_page - First observed
get_seating_chart - First observed
get_storefront - First observed
get_website_customizations - First observed
get_wedding_dashboard - First observed
get_wedding_settings - First observed
invite_guest_to_event - First observed
list_card_projects - First observed
list_events - First observed
list_faqs - First observed
list_favorite_card_suites - First observed
list_favorites - First observed
list_guests - First observed
list_home_sections - First observed
list_inquiries - First observed
list_pages - First observed
list_pois - First observed
list_seating_charts - First observed
list_travel_items - First observed
list_unseated_guests - First observed
list_vendors - First observed
mark_inquiry_read - First observed
preview_card_template - First observed
preview_qrcode - First observed
remove_event_invitation - First observed
remove_faq - First observed
remove_guest - First observed
remove_home_section - First observed
remove_poi - First observed
remove_registry_item - First observed
remove_travel_item - First observed
remove_vendor - First observed
reorder_pages - First observed
search_card_catalog - First observed
search_registry_products - First observed
search_storefronts - First observed
search_themes - First observed
search_vendors - First observed
set_card_project_guests - First observed
set_card_project_qrcode - First observed
set_event_guests - First observed
set_page_hidden - First observed
swap_card_project_variation - First observed
track_rsvps - First observed
update_budget_item - First observed
update_current_theme - First observed
update_event - First observed
update_faq - First observed
update_guest_address - First observed
update_home_section - First observed
update_page - First observed
update_poi - First observed
update_registry_item - First observed
update_travel_item - First observed
update_vendor - First observed
update_website_customization - First observed
update_wedding_settings - First observed
validate_card_project
TDQS
Scored across 77 tools
Most tools target a distinct resource and action (e.g., guests, events, vendors, registry, website sections), making their purposes clear. A few pairs could be confusing — search_vendors vs search_storefronts and set_page_hidden vs update_page — but the descriptions mostly resolve the boundaries.
The vast majority of tools follow a consistent verb_noun pattern (list_*, add_*, remove_*, update_*, get_*). Minor deviations exist: zola_healthcheck is a prefixed noun instead of a verb, and there's a singular/plural mismatch between get_website_customizations and update_website_customization.
77 tools far exceeds the threshold where an agent can efficiently scan and select the right one.pycountry The server attempts to cover an enormous wedge of wedding planning functionality, but the count creates an extreme mismatch for an MCP tool surface.
The surface is broad, covering guests, events, vendors, website content, registry, cards, seating, budget, and themes. However, there are notable gaps: no create/delete events, no update for guest contact details beyond address, no delete for card projects or seating charts, and budget only supports updating existing items.
Maintenance
Related MCP Connectors
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol server that integrates Google Calendar with Claude Desktop, enabling users to manage calendar events (view, create, update, delete) through natural language.589 npm59MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol server that connects Claude to the HoneyBook client portal, giving you natural-language access to contracts and invoices sent by your wedding vendors.221,373 npm1MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that gives Claude (or any MCP-compatible LLM) direct access to a self-hosted WordPress site over its REST API.73MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol server that connects Claude to OurFamilyWizard, giving you natural-language access to your co-parenting messages, calendar, expenses, and journal.111,254 npm1MIT