FavCRM
Server Details
An agentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing — with a public MCP server any AI agent can operate.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 3.9/5 across 190 of 190 tools scored. Lowest: 2.8/5.
Each tool targets a distinct resource and action, with clear descriptions that minimize ambiguity. Even related tools like create_post vs create_post_type are well-separated by their targets.
All tools follow a consistent verb_noun pattern (e.g., create_account, list_services, update_post), with no mixing of naming conventions. The pattern is predictable throughout the set.
190 tools is excessively large for any server, far exceeding the typical 3-15 tool range. The sheer volume overwhelms agents and suggests poor scoping, even for a comprehensive CRM platform.
The tool set covers CRUD operations across many domains (CRM, bookings, marketing, CMS, etc.), but notable gaps exist (e.g., no delete_account, delete_contact, update_booking). These are minor given the vast surface.
Available Tools
190 toolsaccept_team_invite_requestAInspect
Step 1 of agentic team invite acceptance. Validates an invite token and sends a 6-digit verification code to the invited email. Then call accept_team_invite_verify with the code to join and receive an MCP API key.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Invite token returned by create_team_member_invite or from the invite link |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it sends a verification email (side effect). Annotations already indicate non-read-only, non-destructive, open-world. 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?
The description is extremely concise (two sentences), front-loaded with 'Step 1 of agentic team invite acceptance', and every sentence serves a 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's low complexity (single parameter) and availability of output schema, the description covers the essential workflow and next step. It could mention error handling, but the tool is part of a well-defined sequence.
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 provides a good description of the token parameter. The tool description repeats the origin of the token (create_team_member_invite or invite link), adding minimal extra 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 clearly states the tool's role as 'Step 1 of agentic team invite acceptance', describes the action (validates token, sends verification code), and differentiates from the sibling tool accept_team_invite_verify by naming it as the next step.
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 explicit sequencing by labeling itself 'Step 1' and instructing to call accept_team_invite_verify next. It gives context for when to use this tool (after receiving an invite token) but does not explicitly state when not to use it or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accept_team_invite_verifyAInspect
Step 2 of agentic team invite acceptance. Verifies the emailed code, joins the invited user to the company, and returns a one-time MCP API key for that user.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 6-digit code from the invite email | |
| name | No | Optional display name when creating a new user | |
| token | Yes | Invite token returned by create_team_member_invite or from the invite link |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes side effects (joins user, returns key). Annotations (readOnlyHint=false, destructiveHint=false) are consistent; adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with step indication. No redundant 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?
Covers step order, verification, joining, key generation. Output schema exists, so return details are not required. Adequate for a multi-step flow.
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 already provides 100% parameter descriptions. Description adds no new parameter-level info, 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?
Clearly states it is step 2 of team invite acceptance, verifies code, joins user, and returns API key. Distinguishes from sibling accept_team_invite_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions as step 2, implying ordering. Lacks explicit when-not-to-use, but clear enough for agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_knowledge_textAInspect
Add a free-form text document to the knowledge base. Use for pasted policies, FAQs, internal notes, brand voice references — anything the agent should be able to retrieve later. Stored as a single document; agent-side embedding/retrieval happens elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Friendly title for the document | |
| content | Yes | Document body text |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false. The description adds that the document is stored as single and retrieval/embedding happens elsewhere, clarifying the tool's role. However, it does not disclose potential side effects (e.g., does adding a new document overwrite an existing one with the same name?), permissions needed, or error conditions. More context would strengthen transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each concise and front-loaded. The first sentence states the primary function, the second provides usage examples and a behavioral note. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema and sufficient annotations, the description covers the main purpose, usage, and a key behavioral trait (retrieval handled elsewhere). It could mention content size limits or uniqueness constraints, but these are not critical for basic usage. Overall, it is complete enough for the 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?
Both parameters (name, content) have descriptions in the input schema (100% coverage). The tool description does not add any additional parameter-level information. Baseline score of 3 is appropriate since schema descriptions are sufficient.
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 adds a free-form text document to the knowledge base, with explicit examples of use cases (policies, FAQs, internal notes). It does not explicitly differentiate from sibling tools like scrape_knowledge_url or list_knowledge_documents, but the purpose is specific enough: manual text addition vs other operations.
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 explicit usage guidance: 'Use for pasted policies, FAQs, internal notes, brand voice references — anything the agent should be able to retrieve later.' This tells the agent when to choose this tool. It does not list exclusions or alternatives, but the sibling set implies other tools for other actions (e.g., scraping, listing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_post_blockAInspect
Append one or more blocks to the end of a post. Each block must be a valid block object: { id, version, type, data }. Types: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | Yes | Block(s) to append | |
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which are consistent with appending (not destructive). The description does not disclose additional behaviors such as idempotency, side effects, or limits. It adds some context about block structure but lacks depth 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 concise: two sentences clearly state the purpose and the block object requirements. No extraneous information; it is well-structured 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?
Given the output schema exists and the tool has two required parameters, the description provides enough context for an agent to understand how to use it. The list of block types is helpful. However, it could be improved by noting when to use append versus other block manipulation tools (insert, replace, remove).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats the block object format (id, version, type, data) and lists types, but these are already detailed in the schema. No additional parameter semantics (e.g., formatting, constraints) are provided beyond what the schema defines.
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 appends blocks to the end of a post, specifying the required block object structure and listing valid block types. This distinguishes it from sibling tools like remove_post_block, reorder_post_blocks, and replace_post_block.
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. While it mentions appending to the 'end of a post,' it lacks direct comparison with insert, update, or other block operations. The list of block types provides some guidance but no explicit usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_surveyBDestructiveIdempotentInspect
Archive a survey and remove it from active survey lists.
| Name | Required | Description | Default |
|---|---|---|---|
| surveyId | Yes | Survey ID to archive |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds that the survey is 'removed from active survey lists,' which provides behavioral context but does not explain reversibility, side effects, or permission 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, clear sentence with 11 words. No extraneous information is included.
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 simplicity of the tool (one parameter, clear annotations, and an output schema that is presumably documented elsewhere), the description is adequate. It explains the core behavior and outcome, though it could be slightly more explicit about the soft-delete nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the only parameter (surveyId) with 100% coverage. The description does not add any additional meaning 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 clearly states the action (archive) and resource (survey), and implies the outcome (removed from active survey lists). However, it does not explicitly differentiate from potential sibling tools like delete_survey, though no such sibling exists in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., simply hiding a survey, or other mutation tools). There is no mention of when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_staff_to_serviceAInspect
Assign a staff member to a booking service. Pass users.id from list_staff.userId.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | users.id from list_staff.userId | |
| serviceId | Yes | Service ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No behavioral details beyond the basic action. Does not disclose idempotency, error handling, or what happens if staff already assigned. Annotations are neutral.
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, clear sentences with no wasted words. Front-loaded with the main action.
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 mutation tool with output schema. Lacks detail on behavior, but basic intent is clear.
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 descriptions. The description repeats the schema hint for userId, adding no new 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?
The description clearly states the action: assigning a staff member to a booking service. It specifically mentions the source of userId, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a hint on where to get userId, but lacks explicit guidance on when to use this tool versus alternatives like link_resource_to_service.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_post_cover_from_jobAInspect
Attach a previously generated ai-media job's output as the post's featuredImage. Use when generate_post_cover timed out (job kept running) or when reusing the same generation across multiple posts. Verifies the job belongs to your company and succeeded. Does NOT charge credits — credits were charged at submit time.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The ai-media job ID (from generate_image, generate_post_cover, or POST /v6/merchant/ai-media/generate) | |
| postId | Yes | The post ID | |
| assetIndex | No | Which asset to use when the job produced multiple outputs. Default 0. | |
| pollIfRunning | No | When true, advance polling once if the job is still running. Default true. | |
| pollTimeoutMs | No | When pollIfRunning is true, wait up to this long for terminal state. Default 30000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it verifies the job belongs to your company and succeeded, and it does not charge credits (credits charged at submit time). With annotations having readOnlyHint=false and destructiveHint=false, the description adds value by clarifying the verification step and credit policy. However, it could also mention the default polling behavior (pollIfRunning defaults to true) which is only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long: first sentence states purpose, second gives use cases, third adds key behavioral info. Every sentence is necessary, no fluff. It is front-loaded with the primary action.
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 (5 parameters, output schema exists), the description covers the core purpose, use cases, and an important behavioral aspect (no extra charge). The schema and output schema handle parameter details and return values. It could be slightly more complete by explicitly describing the polling behavior when the job is still running, but the overall context is sufficient for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema: it mentions attaching a job output, which implies postId and jobId, but does not elaborate on optional parameters like assetIndex, pollIfRunning, or pollTimeoutMs. The schema already documents these 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 clearly states the verb 'Attach' and the resource 'previously generated ai-media job's output as the post's featuredImage'. It distinguishes the tool from siblings like generate_post_cover and upload_post_cover_from_url by specifying its use case (reusing a previously generated job). The additional note about not charging credits adds clarity.
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 states when to use this tool: 'Use when generate_post_cover timed out (job kept running) or when reusing the same generation across multiple posts.' It also implies when not to use it (e.g., when generating a new cover or uploading from URL), and mentions prerequisites like the job belonging to the company and succeeding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_tagsBInspect
Attach one or more tags to a member/account. Useful for segmenting members after filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| tagId | Yes | Tag ID to attach | |
| accountIds | Yes | Member/account IDs to tag (max 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds little behavioral context beyond stating the action. It does not clarify idempotency or behavior on duplicate tags, which would be useful given idempotentHint=false.
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, front-loaded with core action, and contains no unnecessary words. 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 the presence of an output schema, return values are covered. The description misses explicitly stating that multiple accounts can be tagged simultaneously (the schema's accountIds array). Otherwise, it is reasonably complete for a simple mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description does not add additional meaning beyond the schema, so 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 identifies the verb 'Attach', resource 'tags', and target 'member/account'. It states the action and purpose ('useful for segmenting'). However, it uses singular 'a member/account' while the schema allows multiple accounts, slightly reducing precision.
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 a use case ('segmenting members after filtering') but does not give explicit guidance on when not to use or compare with alternatives. No sibling tool duplicates this functionality, so context is adequate but not strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_bookingBDestructiveInspect
Cancel a booking. Optionally provide a reason.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Cancellation reason | |
| bookingId | Yes | The booking ID to cancel |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description adds no new behavioral context beyond the optional reason. With annotations carrying the burden, a 3 is appropriate—description does not contradict but fails to elaborate on side effects or reversibility.
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, no redundant information. Front-loaded with the main action, optional parameter noted. Every sentence is purposeful.
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 cancellation tool, the description combined with annotations (destructiveHint, readOnlyHint) and output schema provides adequate context. Could mention potential side effects (e.g., notifications, refunds), but not required for 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?
Schema coverage is 100%, with descriptions for both parameters. The description reinforces that reason is optional, but does not add extra meaning beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Cancel a booking') and the resource (booking). It mentions the optional reason parameter. However, it does not explicitly distinguish from sibling tools like complete_booking or confirm_booking, leaving some 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?
No guidance on when to use this tool versus alternatives (e.g., complete_booking, mark_no_show). The description only states what the tool does, not when it is appropriate or inappropriate to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_subscriptionADestructiveInspect
Cancel a subscription. Destructive — turns off auto-renew and prevents further billing cycles. Existing paid periods stay valid until end.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: it explains the destructive nature ('turns off auto-renew', 'prevents further billing cycles') and clarifies that existing paid periods remain valid. This enhances understanding without contradicting the destructiveHint 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 extremely concise, consisting of two short sentences that immediately convey the core purpose and key behavioral traits. No unnecessary 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?
Given the tool's complexity (single parameter, clear annotations, and an output schema), the description adequately covers the essential behavioral context. However, it could be improved by noting prerequisites (e.g., subscription must be active) or idempotency implications.
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 does not add any information about the single parameter 'subscriptionId' beyond what the input schema provides (a subscription ID). Since schema coverage is 100%, a 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 the verb 'Cancel a subscription' and explains the outcome (turns off auto-renew, prevents further billing). However, it does not explicitly differentiate from the sibling tool 'pause_subscription', which might also turn off billing temporarily.
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 cancellation is desired and notes that existing paid periods remain valid. However, it does not explicitly state when not to use this tool (e.g., for temporary holds) or mention alternatives like 'pause_subscription'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_plan_operationARead-onlyIdempotentInspect
Preflight whether an intended operation is allowed by token scopes, enabled modules, subscription state, and quota. Provide toolName, quotaCode, or moduleCode.
| Name | Required | Description | Default |
|---|---|---|---|
| delta | No | Planned usage increment. Currently quota checks are single-resource preflights. | |
| toolName | No | MCP tool name to preflight, e.g. create_account | |
| quotaCode | No | Quota code to check, e.g. contacts or mcp_calls_per_minute | |
| moduleCode | No | Module code to check, e.g. whatsapp or crm |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, indicating a safe, non-destructive operation. The description adds behavioral context about what is checked (scopes, modules, subscription, quota), which is helpful beyond annotations. 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?
The description is highly concise: two sentences that front-load the core purpose and then specify parameter usage. Every word is necessary; 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?
With an output schema present, the description need not explain return values. It adequately covers the tool's purpose, the checks performed, and how to invoke it (which parameters to provide). For a preflight check tool, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all 4 parameters. The description adds value by stating 'Provide toolName, quotaCode, or moduleCode,' implying that at least one of these three is required, which is not explicit in the schema (all are optional). This grouping aids parameter understanding.
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 preflights whether an intended operation is allowed by checking token scopes, enabled modules, subscription state, and quota. It specifies the resource ('operation') and action ('preflight'), making it distinct from siblings like 'get_plan_status' which shows current plan state rather than preflight checks.
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 context that the tool should be used before performing an operation to check permissions and quotas. However, it does not explicitly mention when not to use it or point to specific alternatives among siblings, so it lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloneAInspect
Duplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer). Creates a copy in DRAFT status with "(Copy)" appended to the name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Override the name of the cloned entity (defaults to "Original Name (Copy)") | |
| entityId | Yes | ID of the entity to clone | |
| entityType | Yes | Type of entity to clone |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that the copy is created in DRAFT status and appends '(Copy)' to the name, which is behavioral context beyond annotations. It does not detail return values, but an output schema 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?
A single, dense sentence that effectively communicates the tool's purpose and key behavior with no wasted words. Front-loaded with the core action.
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 primary behavior: duplication, resulting status, and naming convention. It is sufficient for a clone operation with an output schema. Could optionally mention that all other fields are copied as-is, 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?
Schema coverage is 100%, with descriptions for each parameter. The description adds value by explaining the default name behavior ('(Copy)' appended) and listing the allowed entity types, which matches the enum but provides context.
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: 'Duplicate an existing record'. It specifies supported entity types (product, tier, campaign, etc.) and indicates the result (DRAFT status, '(Copy)' appended). This distinguishes it from sibling create_* and update_* 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 implies usage for duplicating records but does not explicitly state when to use it versus create_* tools or mention any prerequisites or limitations. No exclusions or alternative tools are cited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_customer_importAInspect
Commit a previewed customer import. Pass the same rows and sessionId returned by preview_customer_import. Creates/updates accounts and applies points, stamps, and credit deltas.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| sessionId | Yes | sessionId from preview_customer_import |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits such as creating/updating accounts and applying points, stamps, and credit deltas. Annotations (readOnlyHint=false, destructiveHint=false) are consistent, and the description adds context about side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every sentence provides essential information 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?
The description adequately covers the tool's purpose and usage. An output schema exists, so return values need not be explained. For a tool with two parameters and a clear prerequisite, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by linking both parameters (sessionId and rows) to the output of preview_customer_import. The input schema provides detailed descriptions for rows properties, and the description clarifies their origin, adding value over the schema 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 clearly states the verb 'Commit', the resource 'previewed customer import', and specifies the actions: creates/updates accounts and applies points, stamps, and credit deltas. It also distinguishes from sibling tools by referencing the prerequisite preview_customer_import.
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 instructs to pass the same rows and sessionId returned by preview_customer_import, providing clear when-to-use guidance. It does not explicitly state when not to use, but the context implies proper sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_bookingBInspect
Mark a booking as completed. Triggers commission calculation if configured.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingId | Yes | The booking ID to complete |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate a write operation but no destructive behavior. The description adds the side effect of commission calculation, which is an important behavioral trait. However, it does not disclose other potential effects like notifications or irreversibility.
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—two short sentences—and front-loads the main action. Every word is necessary, and there is no clutter.
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 presence of an output schema (not shown) and the action's simplicity, the description covers the primary function. However, it lacks context about required preconditions (e.g., booking state) and side effects beyond commission calculation, leaving some gaps for an agent.
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 one parameter (bookingId) and 100% schema description coverage, the schema already provides 'The booking ID to complete'. The description adds no further parameter-level information, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a booking as completed') and identifies a side effect (triggers commission calculation). It is specific but does not explicitly distinguish from related sibling tools like confirm_booking or mark_no_show.
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 does not specify prerequisites (e.g., booking must be in a certain state) or situations where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_bookingAInspect
Confirm a pending booking.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingId | Yes | The booking ID to confirm |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds no additional behavioral context (e.g., state changes, side effects).
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, no fluff. Could be slightly more informative without losing conciseness, but currently efficient.
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 one parameter and output schema. Description covers basic purpose, though missing details like confirmation side effects or error conditions. Adequate for low 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?
The only parameter 'bookingId' is described in the schema as 'The booking ID to confirm'. The description adds no extra meaning beyond schema coverage (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?
The description 'Confirm a pending booking' clearly states the action (confirm) and resource (booking). It distinguishes from sibling tools like cancel_booking and complete_booking.
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 confirm instead of create, cancel, or complete. Lacks context like 'only use on pending bookings' or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_accountAInspect
Create a CRM account/customer with a primary contact. Optionally enroll the account as a member; use enrol_membership later when the account already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Account/customer display name | |
| type | No | Account type. Defaults to individual. | |
| No | Email address | ||
| notes | No | Internal notes | |
| phone | No | Phone number | |
| source | No | Acquisition source. Defaults to api. | |
| tierId | No | Membership tier ID to enroll into. If omitted, the company default tier may apply. | |
| address | No | Postal address | |
| lastName | No | Last name for individual accounts | |
| expiresAt | No | Optional ISO expiry for the membership | |
| firstName | No | First name for individual accounts | |
| lifeStage | No | CRM life stage. Defaults to active. | |
| enrollMembership | No | Whether to create an active membership immediately |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation but not destructive; the description adds context about optional enrollment but could mention uniqueness constraints or error scenarios.
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 that efficiently convey purpose and usage without redundancy, fitting the input schema's complexity.
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 high parameter count and output schema, the description provides sufficient high-level guidance; lacks details on specific parameter interactions but remains 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?
With 100% schema coverage, the description adds meaning by linking parameters like 'tierId' and 'enrollMembership' to the optional membership enrollment, going beyond bare 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 'Create a CRM account/customer' and specifies the optional membership enrollment, distinguishing it from the sibling tool 'enrol_membership'.
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 says when to use this tool (new account) and when to use 'enrol_membership' (existing account), providing clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bookingAInspect
Create a new booking for a member. Use get_available_slots first to find valid times, then create the booking with the service, member, date, and time.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Booking notes | |
| endTime | Yes | End time in HH:MM format | |
| staffId | No | Staff member ID | |
| accountId | Yes | The member/account ID | |
| serviceId | Yes | The service ID | |
| startTime | Yes | Start time in HH:MM format | |
| resourceId | No | Resource ID | |
| bookingDate | Yes | Date in YYYY-MM-DD format |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutable (readOnlyHint=false) and non-destructive (destructiveHint=false) behavior. The description adds 'for a member' and the workflow advice but does not elaborate on side effects like availability changes or notifications. 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?
The description is two sentences: first states purpose, second provides essential workflow guidance. Every word contributes value, no fluff. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description does not need to explain return values. It covers the main workflow but could mention that required parameters exist (though schema lists them). Sufficient for the 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 coverage is 100%, and all parameters have descriptions. The description only generically mentions 'service, member, date, and time' without adding new meaning. Baseline 3 is appropriate as schema handles the detail.
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 'Create a new booking for a member' with a specific verb and resource. It distinguishes this tool from sibling tools like cancel_booking, complete_booking, and confirm_booking by focusing on the creation aspect and mentioning a prerequisite workflow.
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 advises to 'Use get_available_slots first to find valid times, then create the booking,' providing clear when-to-use guidance. It does not exclude alternatives but implies the proper workflow, earning a high score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_broadcastAInspect
Create a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the Broadcasts page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| channel | No | Channel (default whatsapp) | |
| templateId | No | Message template ID to use | |
| scheduledAt | No | ISO date to schedule the broadcast | |
| recipientFilter | No | Filter criteria for recipients, e.g. { tagIds: ["..."] } |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which show readOnlyHint=false), the description reveals that the broadcast is created as a draft and not sent, which is critical behavioral context. It adds the workflow step of admin review, though it could mention if repeated calls create multiple drafts.
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 uses two concise sentences, front-loading the purpose and immediately following with the key behavioral note. No wasted words, every sentence is essential.
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 5 parameters, nested objects, and an output schema, the description covers the core workflow (draft creation and admin review). It could optionally describe the response, but the output schema likely covers that, so completeness is 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?
Schema coverage is 100%, and each parameter has a description. The description adds overall behavioral context (draft nature, admin review) that enhances understanding beyond individual parameter descriptions, but the parameter descriptions themselves are already clear.
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 specific action 'Create a DRAFT WhatsApp or SMS broadcast campaign' with the verb 'Create' and resource 'broadcast campaign'. It distinguishes from sibling tools like 'create_campaign' by specifying it's a draft and the channels, providing precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions that the broadcast is not sent and requires admin review, guiding when to use it (for creating drafts) and what happens after. However, it does not explicitly mention alternatives or when not to use this tool compared to similar tools like 'create_campaign'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignAInspect
Create a marketing campaign (email, SMS, or WhatsApp) in DRAFT. For email channelConfig, use subject + htmlBody + optional plainTextBody. recipientSource="list" is accepted as an alias for "individual".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name (internal) | |
| status | No | Default DRAFT | |
| channel | Yes | email | sms | whatsapp | push | |
| segmentId | No | Required if recipientSource="segment" | |
| scheduledAt | No | ISO datetime for scheduled send (status must be SCHEDULED) | |
| recipientIds | No | Required if recipientSource="individual", "list", or "csv"; values are account IDs | |
| channelConfig | No | Channel-specific config: subject + htmlBody for email, body for sms/whatsapp, templateId, etc. Legacy email html is normalized to htmlBody. | |
| recipientSource | No | Where to source recipients from. "list" is normalized to "individual". |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly and non-destructive, so the description adds value by specifying that campaigns are created in DRAFT (consistent with schema) and providing alias details for recipientSource. It also clarifies email channelConfig beyond the schema. No contradictions, but lacks info on permissions or side effects.
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-load the core purpose and key usage details. No extraneous information; every sentence serves a purpose. Efficiently sized for quick consumption.
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 (8 params, nested object, output schema present), the description covers creation in draft, channel-specific config, and an alias. Schema captures the remaining details like status options and recipient sources. Output schema handles return values, so additional explanation is unnecessary. Slightly misses the push channel mention but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters (100% coverage), so baseline is 3. The description adds value by specifying plainTextBody as optional in email channelConfig and the recipientSource alias, which are not detailed in the schema. This enriches parameter understanding beyond the structured data.
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 creates a marketing campaign and specifies channels (email, SMS, WhatsApp) and default status DRAFT. However, it omits the 'push' channel present in the schema, potentially causing confusion. It distinguishes from siblings like create_broadcast and update_campaign by focusing on campaign creation in draft 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 implies usage for creating campaigns in draft but provides no explicit guidance on when to use this tool versus alternatives like create_broadcast or update_campaign. No when-not-to-use or exclusions are given, leaving agents to infer context from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryAInspect
Create a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the table is flat.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name | |
| slug | No | Auto-generated from name if omitted. | |
| sortOrder | No | Sort order (lower = earlier) | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate it's a non-destructive write operation. The description adds the fact that the table is flat and sub-categories need namespaced names, which is behavioral context. However, it does not mention error cases, uniqueness constraints, or the return structure despite an output schema being present.
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, front-loaded with the primary purpose. Every sentence adds value with zero 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?
Given the tool has 4 parameters, an output schema, and annotations, the description covers the core purpose and naming convention. It could mention uniqueness or return value, but overall it is adequate for an agent to understand the basic function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds practical examples for the 'name' parameter (e.g., 'Equipment', 'Injection — Botox') and explains the naming convention for sub-categories. It does not add semantics for other parameters but the schema already handles them.
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 'Create a CMS post category' with examples like 'Equipment' and 'Injection — Botox', and distinguishes from other category tools by specifying 'CMS post category'. It also gives guidance on sub-category naming using namespaced names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to create a post category) and provides guidance for sub-categories via namespaced names. It lacks explicit exclusions or comparisons with siblings but the context is sufficient for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactAInspect
Create a contact on an existing CRM account.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Contact name | |
| No | |||
| phone | No | Phone | |
| jobTitle | No | Job title | |
| accountId | Yes | Owning account ID | |
| isPrimary | No | Mark as primary contact |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, making the mutation nature clear. The description adds the constraint 'on an existing CRM account' but does not disclose additional behavioral traits such as potential duplicate handling or permission requirements. 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?
The description is a single sentence that directly states the tool's purpose with no extraneous words. It is optimally concise 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?
Given the presence of an output schema and full parameter descriptions, the description is minimally adequate. However, it lacks details about prerequisites (e.g., account existence), the relationship to other contacts (especially isPrimary), and any side effects beyond creation. For a tool with 6 parameters, slightly more context would be beneficial.
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 provides descriptions for all 6 parameters (100% coverage). The description does not add any meaning beyond what the schema already offers, 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 clearly states the action ('Create a contact') and the context ('on an existing CRM account'), using a specific verb+resource. It distinguishes from sibling tools like 'create_account' and 'update_contact'.
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, nor does it mention any prerequisites or exclusions. For example, it does not clarify that the account must already exist or that 'update_contact' should be used for modifying existing contacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_inbox_reply_suggestionAInspect
Create a draft reply suggestion that appears inline in the FavCRM Inbox composer. Use this for message.inbound events with replyPolicy="suggest"; it does not send anything to the customer.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Draft reply text for the merchant to review | |
| agentId | Yes | AI colleague ID creating the suggestion | |
| subject | No | Optional email subject suggestion | |
| metadata | No | Optional metadata such as rationale, confidence, or source refs | |
| conversationId | Yes | Inbox conversation ID | |
| sourceMessageId | No | Inbound message ID this draft responds to |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool creates a draft and does not send, aligning with annotations (readOnlyHint=false, destructiveHint=false). It adds behavioral context beyond annotations by explaining the draft nature and inline appearance.
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 extraneous information. Every sentence adds value: one for purpose, one for usage and behavioral caveat.
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 full schema coverage and output schema, the description effectively covers purpose and usage. No gaps identified, but it does not address the return value or metadata parameter, which is acceptable given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate parameter descriptions. The description adds no additional parameter meaning, 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 the tool creates a draft reply suggestion that appears inline in the FavCRM Inbox composer, clearly specifying the verb and resource. It distinguishes from sibling tools by focusing on reply suggestions, which is unique among the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use this tool for message.inbound events with replyPolicy='suggest' and clarifies that it does not send anything, providing clear context. However, it does not name alternative tools for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoiceAInspect
Create a new invoice for a customer. Optionally include line items inline. Returns the new invoiceId.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-form notes shown on the invoice | |
| dueDate | No | Due date (ISO 8601 date) | |
| currency | No | ISO currency code (defaults to company default) | |
| accountId | Yes | Customer accountId (CRM account) | |
| lineItems | No | Line items to bill — totals are computed server-side |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with annotations (readOnlyHint=false indicates mutation). It adds context: optional line items, server-side total calculation, and explicit return value. 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?
Two sentences, 18 words, no fluff. Front-loaded with the primary action and returns. 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?
The description adequately covers the tool's function, parameters, and return value. However, it omits prerequisites (e.g., accountId must exist) and potential error conditions. With output schema present, the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that lineItems are optional and that totals are computed server-side, which is not 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 ('Create') and resource ('invoice'), clearly states the target ('customer'), and mentions the return of the invoiceId. This distinguishes it from sibling tools like 'create_booking' or 'create_post'.
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. It does not mention prerequisites (e.g., customer must exist) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_noteAInspect
Add a note to a member/account, booking, ticket, or invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Note content | |
| entityId | Yes | The entity ID | |
| isPinned | No | Pin this note to the top | |
| entityType | Yes | Type of entity |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description's 'Add a note' is consistent but adds no further behavioral context (e.g., whether notes are editable, or if there are limits). 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 with no wasted words. Front-loads the action and target, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple note creation tool with good schema and annotations, the description covers the essential purpose and entity types. The existence of an output schema (not shown) reduces the need to describe returns, but a note about response could 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?
Schema coverage is 100% with descriptions for all parameters. The description only lists entity types, which is partially redundant. No new parameter 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 clearly states verb 'Add a note' and specifies the target resources: member/account, booking, ticket, or invoice. This distinguishes it from other create tools like create_ticket or create_invoice.
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., when to add a note vs create a task or write a message). No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_offer_ruleAInspect
Create an upsell/cross-sell offer rule as draft. Specify trigger type, conditions, and suggested products with optional discounts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule name | |
| type | Yes | Rule type: upsell, cross_sell, bundle, or post_purchase | |
| products | No | Products to suggest with optional discounts | |
| description | No | Rule description | |
| triggerType | Yes | When the offer triggers | |
| triggerConfig | No | Trigger-specific configuration |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not destructive, implying a safe create operation. The description adds that it creates as a draft, providing context about the initial state. No contradictions 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, efficient sentence that immediately states the purpose and key elements. 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?
The description covers the main purpose and key fields. With output schema present, return details are not needed. It mentions draft state. However, it could provide more detail on conditions (triggerConfig) or prerequisites, but overall fairly complete for a creation 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?
With 100% schema coverage, the schema already documents each parameter. The description mentions trigger type and products with discounts, aligning with key parameters, but does not add new meaning 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 clearly states the action (create) and resource (offer rule) and specifies it is created as a draft. It mentions key fields (trigger type, conditions, products with discounts), making it unambiguous and distinguishing from siblings like list_offer_rules or get_offer_rule.
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 provide explicit guidance on when to use this tool versus alternatives like create_promotion or when to use update for existing rules. The phrase 'as draft' implies initial creation, but no comparative context or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_outletAInspect
Create a shop outlet/location. Optionally pass id to preserve a legacy UUID during migration.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional outlet UUID (for legacy migration; non-standard formats accepted) | |
| name | Yes | Outlet name | |
| phone | No | Contact phone | |
| address | No | Street address | |
| logoUrl | No | Logo URL | |
| isActive | No | Whether outlet is active (default true) | |
| latitude | No | Latitude | |
| longitude | No | Longitude | |
| sortOrder | No | Display sort order (default 0) | |
| acceptsOrders | No | Whether outlet accepts online orders (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description's 'Create' confirms mutation. It adds useful behavioral context about the optional id parameter for legacy migration. However, it does not disclose other aspects like required permissions, rate limits, or side effects beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, 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?
The description covers the essential purpose and a specific migration feature. An output schema exists, so return value details are not needed. It is adequate for a creation tool with well-documented parameters, though it could mention prerequisites like authentication.
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 already has documented meaning. The description adds value for the id parameter by reiterating its migration purpose, but for other parameters it provides no extra 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 clearly states 'Create a shop outlet/location', which is a specific verb+resource pair. It distinguishes from sibling tools like 'list_outlets' and 'update_outlet' by explicitly being a creation 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 usage for creating outlets but does not explicitly contrast with sibling list, update, or other create tools. The mention of passing an id for legacy migration gives a narrow use case hint but no general guidance on when to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_plan_upgrade_linkAInspect
Create a Stripe Checkout link for a new paid subscription, or a Stripe Billing Portal link for an existing Stripe subscription. Use only after the user explicitly asks to upgrade or fix billing.
| Name | Required | Description | Default |
|---|---|---|---|
| planId | No | Target plan ID. Use list_plan_options first if unknown. | |
| confirm | No | Required true to create a Stripe-hosted payment or billing link. | |
| planCode | No | Target plan code, e.g. favcrm-lite. Either planId or planCode is required. | |
| returnUrl | No | Where Stripe should return after checkout/portal. Defaults to merchant billing settings. | |
| billingCycle | No | monthly |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=false and destructiveHint=false; the description explains it creates a link (not directly mutating), but does not detail side effects like updating subscription status or Stripe API calls. With annotations covering basic safety, the description adds moderate 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?
Two highly efficient sentences with no redundancy, front-loaded with the core action and usage condition.
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 an output schema present, the description covers both use cases (new vs existing subscription) and the explicit condition for use, providing complete guidance for an agent to invoke 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 has high description coverage (80%), so the description adds little beyond reinforcing the confirm requirement. 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 specifies it creates a Stripe Checkout link for new subscriptions or a Stripe Billing Portal link for existing subscriptions, and distinguishes from siblings like create_subscription or cancel_subscription by limiting usage to upgrade/billing fix requests.
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 states to use only after the user asks to upgrade or fix billing, providing clear context. However, it does not list alternatives or expressly exclude other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postAInspect
Create a new CMS post (blog_post, page, or any custom post type). The post type must already exist — use list_post_types to discover, create_post_type to add a new one. excerpt = plain-text summary only (auto-derived from blocks if omitted). Structured custom fields go in meta, keyed by the field schema defined with create_post_type_field.
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | Structured custom field values, keyed by field key (see list_post_type_fields). Validated against the post type field schema. Use this for all machine-readable data — never put JSON in excerpt. | |
| slug | No | URL slug. Auto-generated from title if omitted; collisions get -2, -3 suffix. | |
| type | Yes | Post type slug (e.g. blog_post, page, treatment). Must exist in post_types for this company. | |
| title | Yes | Post title | |
| blocks | No | Ordered array of content blocks. Each block has { id, version, type, data } where type is one of: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product, columns. Unknown types are rejected. | |
| status | No | Status (default draft) | |
| tagIds | No | Tag IDs to attach to the post | |
| excerpt | No | Plain-text summary only — never JSON. Auto-derived from the first paragraph/heading block if omitted and the post type supports excerpts. | |
| parentId | No | Parent post ID for nested types (e.g. pages). | |
| seoTitle | No | SEO title override | |
| sortOrder | No | Sort order (lower = earlier) | |
| visibility | No | Visibility (default public) | |
| categoryIds | No | Category IDs (post types with supportsCategories only) | |
| publishedAt | No | ISO timestamp; required when status=scheduled. | |
| featuredImage | No | Cover image URL | |
| seoDescription | No | SEO meta description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which already indicate a write operation), the description discloses key behaviors: auto-derived excerpt from blocks if omitted, auto-generated slug with collision handling, and structured custom fields in meta validated against a schema. No contradictions 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 paragraph that efficiently packs essential information without redundancy. It front-loads the main purpose and then provides supplementary details. Could be slightly better structured (e.g., bullet points) but remains concise and clear.
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 (16 parameters, nested objects, output schema), the description covers prerequisites, key parameter behaviors, and sibling tool references. It is complete enough for an agent to understand when and how to use it effectively.
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, the baseline is 3. The description adds context for excerpt (plain-text only, auto-derived) and meta (structured, keyed by field schema) and slug auto-generation, providing value beyond the schema. Thus slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a new CMS post' and lists example types (blog_post, page, custom post type), making the verb and resource crystal clear. It also distinguishes itself from sibling tools like create_post_type by noting the post type must already exist.
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 explicit guidance: use list_post_types to discover existing types and create_post_type to add a new one if needed. This tells the agent when to use this tool versus alternatives, covering prerequisites and decision points.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_post_typeAInspect
Define a new custom post type (e.g. "treatment", "service"). Required before creating posts of that type. After creating a post type, use create_post_type_field to define its structured field schema. Those fields are stored in meta on each post — do not use excerpt for structured data.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Icon name or URL | |
| slug | Yes | Lowercase identifier, e.g. "treatment". Auto-derived from label if omitted. | |
| label | Yes | Singular UI label, e.g. "Treatment" | |
| sortOrder | No | Sort order (lower = earlier) | |
| labelPlural | Yes | Plural UI label, e.g. "Treatments" | |
| supportsBlocks | No | Default true | |
| supportsExcerpt | No | Default true | |
| supportsNesting | No | Default false | |
| supportsCategories | No | Default true | |
| supportsFeaturedImage | No | Default true |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds valuable behavioral context beyond annotations, such as the requirement to create the post type before posts, and the warning that fields are stored in meta on each post. However, it does not specify whether the operation is reversible or if there are permission 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 only three sentences, all essential. It front-loads the purpose, then provides usage sequence, and ends with a critical behavioral caveat. 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?
Given the tool's complexity (10 parameters, 3 required, output schema exists), the description covers the main workflow and constraints. However, it does not explicitly mention what the return value contains (e.g., the created post type ID), but since an output schema is present, this is partially compensated.
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 the input schema has 100% coverage for all 10 parameters, the baseline is 3. The description does not add additional meaning beyond the schema—it lists the purpose but not parameter-level constraints or syntax. For example, it doesn't elaborate on the slug auto-derivation or default values mentioned 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 explicitly states 'Define a new custom post type' with examples like 'treatment', 'service'. It clearly identifies the action (define) and the resource (custom post type), distinguishing it from sibling tools like create_post_type_field and create_post.
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 explicit when-to-use context: 'Required before creating posts of that type.' It also directs the user to a specific sibling tool for the next step: 'After creating a post type, use create_post_type_field to define its structured field schema.' This clear sequencing and exclusion of alternative uses (like using excerpt for structured data) is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_post_type_fieldAInspect
Add a custom field to a post type schema. The field key becomes the key in meta when creating/updating posts. Use fieldType="repeater" with fields=[...] for repeatable structured rows. Use this instead of storing structured data in excerpt.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | snake_case key used in meta. Auto-derived from label if omitted. | |
| label | Yes | Human-readable field label, e.g. "Tagline" | |
| fields | No | Required for fieldType="repeater". Defines the child fields stored in each row object. | |
| options | No | For select/multiselect: { choices: [{ label, value }] }. For URL fields that should accept merchant uploads, use { uploadable: true } so the UI stores the uploaded file URL instead of asking the merchant to paste a raw URL. | |
| helpText | No | Optional hint shown in the UI | |
| required | No | Whether the field is required on post creation (default false) | |
| fieldType | Yes | Field type: text | textarea | richtext | number | boolean | date | datetime | select | multiselect | url | email | image | file | gallery | attachments | repeater | |
| sortOrder | No | Sort order (lower = earlier) | |
| postTypeId | Yes | Post type ID (from list_post_types) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so write behavior is expected. The description adds that the key becomes meta key and auto-derivation from label. It lacks info on uniqueness constraints, overwrite behavior, or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words, front-loaded with purpose. Efficiently conveys key 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 complexity (9 parameters, nested objects, output schema exists), the description covers the essential behavior. It could add details on duplicate key handling or field type constraints, but is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining that the key becomes meta key and clarifying the repeater usage pattern, going beyond the schema documentation.
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 purpose: 'Add a custom field to a post type schema.' It also explains that the field key becomes the meta key, and distinguishes from storing data in excerpt, providing a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance for using repeater field type and advises against using excerpt for structured data. However, it does not compare to sibling tools like update_post_type_field or list_post_type_fields, missing exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productAInspect
Create a new shop product as DRAFT. Merchant can review and activate from the portal.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU code | |
| name | Yes | Product name | |
| price | Yes | Price as decimal string (e.g. "29.99") | |
| categoryIds | No | Category IDs (first is primary) | |
| description | No | Product description | |
| memberPrice | No | Members-only price | |
| productType | No | Product type (default one_time) | |
| discountPrice | No | Discounted price |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the product is created as a draft, which is behavioral information not captured by annotations. Annotations provide no read-only or destructive hints, so the description helps by indicating the creation is not immediately activating the product.
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 that conveys the key information without unnecessary words. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage and the presence of an output schema, the description is fairly complete. However, it could mention that activation is required post-creation, but that is already implied by 'as DRAFT'.
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 explains parameters thoroughly. The description adds no additional meaning beyond implying that price and memberPrice are decimal strings, which is 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 clearly states the action ('Create'), the resource ('a new shop product'), and the initial state ('as DRAFT'). It effectively distinguishes from sibling tools like create_product_category by specifying the resource type.
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 context that the product is created as a draft and that the merchant can review and activate it from the portal. This implies a workflow step but does not explicitly state when to use this tool versus alternatives like update_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_product_categoryAInspect
Create a product category. Use parentId to create subcategories under an existing category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name | |
| parentId | No | Parent category ID for subcategories | |
| sortOrder | No | Display sort order | |
| description | No | Category description | |
| onlineEnabled | No | Show in online store (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the creation behavior and subcategory hint, but does not disclose additional aspects like required permissions or side effects. The description provides marginal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core action, and includes a helpful usage hint. Every sentence serves a purpose; 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?
Given the presence of an output schema (not shown), the description does not need to explain return values. It covers the main action and subcategory use case. It could mention prerequisites (e.g., parent category existence), but it's reasonably complete for a simple creation 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?
Input schema has 100% coverage with descriptions for all 5 parameters. The description reinforces the parentId parameter for subcategories, but does not add significant new semantics beyond what the schema already provides. 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 'Create a product category', using a specific verb and resource. It distinguishes from other create tools by specifying 'product category' and hints at subcategory creation via parentId, which adds clarity.
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 clear context for usage: create a product category, and use parentId for subcategories. However, it does not explicitly exclude use cases for sibling tools like create_category, so it lacks direct when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_promotionAInspect
Create a promotion / discount code. type=percentage or fixed_amount; value is the discount as a string ("10" = 10% or 10 currency units). Codes are uppercased server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Coupon code customers enter at checkout (auto-uppercased) | |
| name | Yes | Promotion name (internal) | |
| type | No | Default percentage | |
| value | Yes | Discount value as decimal string | |
| endsAt | No | ISO datetime — when the promo expires | |
| status | No | Default active | |
| startsAt | No | ISO datetime — when the promo becomes valid | |
| posEnabled | No | Allow at POS | |
| description | No | Description | |
| eventEnabled | No | Allow on event registrations | |
| minimumAmount | No | Minimum order amount required, decimal string | |
| onlineEnabled | No | Allow on online shop orders | |
| bookingEnabled | No | Allow on bookings | |
| maximumDiscount | No | Cap on percentage discounts, decimal string | |
| minimumQuantity | No | Minimum item count required | |
| usageLimitTotal | No | Max total uses across all customers | |
| usageLimitPerCustomer | No | Max uses per single customer |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate it's a write operation, and the description adds the server-side uppercasing of codes. However, it lacks details on permissions, idempotency, or behavior on duplicate codes. Some behaviors are disclosed but not comprehensively.
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 provide the core purpose and critical parameter clarifications. Every word serves a purpose; no redundancy or 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 has 17 parameters and an output schema, the description covers the essential aspects of creating a promotion. It explains the key parameters (type, value, code) but doesn't delve into optional parameters. An output schema exists, so return values need not be described. Overall, it provides sufficient context for correct usage.
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, the baseline is 3. The description adds value by clarifying the type enum meanings, giving an example for value, and noting code uppercasing. This goes beyond just repeating 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?
The description clearly states the tool creates a promotion/discount code, specifies the two possible types (percentage or fixed_amount), and explains how value is interpreted. It distinguishes itself from sibling tools like update_promotion, delete_promotion, list_promotions, and validate_promotion.
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 update_promotion or validate_promotion. No prerequisites, conditions, or typical use cases are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_resourceAInspect
Create a bookable resource (room, equipment, vehicle). Used by services that have requiresResource=true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Resource name (e.g. "Treatment Room A") | |
| type | Yes | Free-form type label, e.g. "room", "equipment" | |
| status | No | Default active | |
| capacity | No | How many concurrent bookings (default 1) | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety profile (no readOnlyHint, destructiveHint, etc.), and the description only says 'create' but doesn't disclose side effects, permissions needed, or whether creation is reversible. For a mutation tool, 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?
Two short sentences, no fluff, front-loaded with the action and context. 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?
Covers core purpose and usage context; output schema exists so return value is documented. Could mention constraints like name uniqueness, but overall adequate for a creation tool with 5 well-described params.
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 detailed parameter descriptions. The description adds no extra 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?
Description clearly states 'Create a bookable resource' with examples (room, equipment, vehicle), distinguishing it from siblings like list_resources and link_resource_to_service.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Used by services that have requiresResource=true', providing clear context for when to use this tool. Does not mention alternatives or exclusions, but the usage context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_segmentAInspect
Create a new customer segment. Use STATIC for manual member lists, DYNAMIC for criteria-based auto-filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Segment name | |
| criteria | No | Dynamic segment criteria | |
| description | No | Segment description | |
| segmentType | No | Segment type (default STATIC) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide basic read/write hints; the description does not disclose side effects, permissions, or any behavioral traits beyond creation.
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 purpose, no wasted words; excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core purpose and type distinction; output schema exists but description doesn't mention return values, which is acceptable.
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 covers all parameters; description adds context by explaining the type distinction and criteria usage, which adds 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 (create) and resource (customer segment), and distinguishes between STATIC and DYNAMIC types, which helps differentiate from other create 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?
Provides explicit guidance on when to use STATIC vs DYNAMIC, but lacks alternatives for updating segments or other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_serviceAInspect
Create a bookable service. Sets duration, price, capacity, and policies. Use list_service_categories first if you want to attach to an existing category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Service name | |
| type | No | Default one_on_one | |
| price | No | Decimal string, e.g. "80.00". Defaults to "0". | |
| status | No | Default active | |
| capacity | No | How many participants per slot (default 1) | |
| currency | No | ISO currency code, default HKD | |
| sortOrder | No | Sort order (lower = earlier) | |
| categoryId | No | Existing service category ID | |
| visibility | No | Visibility: public | members_only | hidden | |
| description | No | Description | |
| requireLogin | No | Default true — guests cannot book | |
| requiresStaff | No | Whether the service requires staff assignment | |
| allowedTierIds | No | Required when visibility=members_only | |
| commissionType | No | Commission type: "fixed" or "percentage" | |
| commissionValue | No | Commission amount as decimal string | |
| cooldownMinutes | No | Minimum gap before bookings can be cancelled (default 0) | |
| durationMinutes | Yes | Duration of one booking in minutes | |
| requiresResource | No | Whether the service requires a resource (room/equipment) | |
| commissionCurrency | No | Commission currency (ISO code) | |
| requiresConfirmation | No | If true, bookings start as pending and need confirm_booking |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=false and readOnlyHint=false, so the description's mention of 'Create' adds little beyond acknowledging mutation. It doesn't detail permissions, side effects, or error conditions.
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 front-loaded purpose and a usage hint. Every sentence earns its place with 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?
Given the output schema exists and the complexity of 20 parameters, the description covers the main aspects and provides a necessary prerequisite. However, it could mention default behaviors or success criteria, though not strictly required.
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 all parameters. The description provides a high-level summary but doesn't add meaning beyond the schema, resulting in a 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 clearly states the tool creates a bookable service and lists key attributes (duration, price, capacity, policies). It also distinguishes from sibling tools like create_service_category by mentioning the prerequisite step.
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 advises to use list_service_categories first when attaching to an existing category, providing a helpful prerequisite. However, it doesn't explicitly state when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_categoryAInspect
Create a service category (e.g. "Treatments", "Classes") to group bookable services.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name | |
| sortOrder | No | Sort order (lower = earlier) | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only, not destructive, etc. Description adds minimal behavioral context (examples of categories) but does not discuss side effects, duplicate handling, or authorization. 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?
Single concise sentence with efficient front-loading of verb and object. 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 creation tool with well-documented parameters and an output schema, the description covers the essential purpose. Lacks usage guidelines but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. Description does not add additional meaning beyond the schema, but provides a context example for category names. 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?
Clearly states the verb 'Create' and the specific resource 'service category' with an example ('Treatments', 'Classes') and purpose 'to group bookable services.' Differentiates from sibling 'create_category' by specifying 'service' category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives like 'create_category' or 'create_product_category.' No explicit when-not or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_packageAInspect
Create a service package/prepaid session bundle. Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Package name | |
| price | Yes | Package price | |
| status | No | Default ACTIVE | |
| validDays | Yes | Validity window after purchase, in days | |
| description | No | Description | |
| sessionCount | Yes | Number of included sessions | |
| applicableType | No | Default ALL | |
| applicableItems | No | Items used when applicableType=SELECTED |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not readOnly, not destructive (destructiveHint=false), and not idempotent. The description adds little beyond the obvious 'Create' action; it does not disclose side effects, authentication requirements, rate limits, or state that the package is immediately active. The agent must infer behavior from the schema and 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 two sentences, concise and front-loaded with the core purpose. Every word is meaningful; no redundancy or filler. It efficiently communicates the essential 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 complexity (8 parameters, output schema exists), the description is adequate but not exhaustive. It covers the primary purpose and a key parameter usage, but lacks context such as prerequisites (e.g., services/events must exist), typical use cases, or explanation of other parameters like status or description. The output schema exists, so return value details are not required.
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 descriptions for all 8 parameters. The description adds value by explaining the relationship between applicableType=SELECTED and applicableItems, clarifying their combined use for limiting to specific services/events. This semantic hint goes beyond the schema's default values and 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 clearly states the tool creates a 'service package/prepaid session bundle', specifying the verb and resource. It distinguishes from sibling tools like create_service or create_product by focusing on bundled prepaid sessions. The addition of 'Use applicableType=SELECTED with applicableItems to limit the package to specific booking services or events' further clarifies its role.
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 explicit guidance on using applicableType=SELECTED with applicableItems to limit the package scope, which is helpful for correct invocation. However, it does not mention when not to use this tool or recommend alternatives like other create_ tools, leaving some ambiguity about usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_scheduleBInspect
Create a bookable schedule window for a service, including recurring weekly/daily availability.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Start date or one-off date (YYYY-MM-DD) | |
| notes | No | Free-form notes | |
| endTime | Yes | HH:MM (24h) | |
| staffId | No | Optional companyMembers.id to bind this schedule to staff | |
| byWeekday | No | Weekdays for weekly recurrence: 0=Mon, 1=Tue, ... 6=Sun | |
| serviceId | Yes | Service ID | |
| startTime | Yes | HH:MM (24h) | |
| recurrence | No | Default none | |
| resourceId | No | Optional resource ID to bind this schedule to a room/resource | |
| maxCapacity | No | Max bookings per generated slot | |
| recurrenceEndDate | No | YYYY-MM-DD | |
| recurrenceInterval | No | Default 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false; description adds no further behavioral context (e.g., conflict handling, overwrite behavior, constraints).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, front-loaded with the core action, 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?
Despite output schema existing, the description is too brief for a tool with 12 params (including staffId, resourceId, recurrence details). Lacks high-level context for optional 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 coverage is 100%, so baseline is 3. Description does not add meaningful semantics beyond the schema (e.g., interaction between recurrence and byWeekday is not explained).
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 'Create a bookable schedule window for a service' with recurrence specifics, distinguishing it from siblings like 'update_service_schedule' and 'list_service_schedules'.
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 setting up service availability but lacks explicit guidance on prerequisites or when to use vs. alternatives like 'set_staff_availability' or 'update_service_schedule'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_subscriptionAInspect
Create a recurring subscription for a member. Bind to a membership tier or set a custom amount + cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Override amount per cycle (otherwise derived from tier) | |
| tierId | No | Membership tier ID — if set, amount/currency default from the tier | |
| currency | No | ISO currency code (otherwise derived from tier or company default) | |
| accountId | Yes | Customer accountId | |
| autoRenew | No | Auto-renew at period end (default true) | |
| billingCycle | No | Billing cycle (default monthly) | |
| currentPeriodEnd | No | Period end (ISO 8601). Defaults to start + cycle. | |
| currentPeriodStart | No | Period start (ISO 8601). Defaults to now. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral clues beyond readOnlyHint=false and destructiveHint=false. The description adds that it creates a recurring subscription and allows tier or custom settings, but lacks details on side effects (e.g., billing immediately, sending notifications, permissions required). Given the financial nature, more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action. No wasted words; every sentence adds value. Appropriate length for the tool's complexity.
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 output schema exists, the description covers the main purpose and parameter relationships. It does not describe what happens after creation (e.g., confirmation, immediate start) or mention defaults like autoRenew, but the schema handles parameter defaults. Slightly more behavioral context would elevate 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?
Schema coverage is 100% with descriptions for all 8 parameters. The description adds meaningful context by linking parameters into two usage modes (tier vs. custom amount+cycle), which helps the agent understand how parameters relate beyond individual 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 clearly states the action ('Create'), resource ('recurring subscription'), and scope ('for a member'). It distinguishes itself from siblings like cancel_subscription, pause_subscription, and get_subscription by emphasizing creation and binding to a membership tier or custom cycle.
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 creating new subscriptions and outlines two modes (tier-based or custom). It does not explicitly exclude other scenarios or provide alternatives, but the context is clear enough for an agent to infer when 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.
create_surveyBInspect
Create a survey with custom question blocks. Publish it later or set status to published for immediate portal access.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Optional URL slug; generated from title when omitted | |
| title | Yes | Survey title | |
| openAt | No | Optional ISO datetime when the survey opens | |
| status | No | Initial status | |
| closeAt | No | Optional ISO datetime when the survey closes | |
| settings | No | Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage | |
| visibility | No | Who can access the survey | |
| description | No | Optional survey description | |
| questionBlocks | Yes | Ordered survey question blocks |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false. The description adds that the survey can be published immediately or later, providing minimal behavioral context beyond what annotations offer. No mention of permissions, side effects, or other 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 two sentences with no wasted words. It front-loads the core purpose and provides a key usage hint about publishing. 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?
Given the tool's complexity (9 parameters, nested objects) and the existence of an output schema, the description is adequate but not comprehensive. It covers the main use cases but omits details like required fields (title, questionBlocks) and optional parameters. The schema fills some gaps, but more complete description would improve the agent's 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?
Schema coverage is 100% with descriptions for all 9 parameters. The description adds value by linking 'custom question blocks' to the questionBlocks parameter and mentioning the status parameter's behavior. This goes beyond the schema's descriptions, justifying a score above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a survey' and specifies it involves 'custom question blocks'. It is a specific verb+resource combination. However, it does not explicitly differentiate from sibling tools like update_survey or create_survey_invitation, missing an opportunity to distinguish.
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. The hint about publishing later or immediate is about the status parameter, not about tool selection. The description lacks when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_survey_invitationBInspect
Create a token-auth survey invitation for a specific member/account or contact.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | Intended channel, e.g. email, sms, whatsapp, link | |
| metadata | No | Optional invitation metadata | |
| surveyId | Yes | Survey ID | |
| accountId | No | CRM account ID to invite | |
| contactId | No | Contact ID to invite | |
| expiresAt | No | Optional invitation expiry ISO datetime | |
| recipientName | No | Recipient display name for link tracking | |
| recipientEmail | No | Recipient email for link tracking | |
| recipientPhone | No | Recipient phone for link tracking |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false). The description adds 'token-auth' but does not disclose key behaviors like whether the invitation is sent immediately, authorization requirements, or side effects. More context beyond annotations is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 14 words, no unnecessary words, front-loaded with action and resource. Extremely concise and well-structured.
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 complexity (9 parameters, some required, nested objects), the description is too sparse. It does not explain which parameters are required, how accountId vs. contactId interplay, or the purpose of recipient fields. Output schema exists but description should still provide enough context for parameter selection.
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 parameters are documented. The description adds some context by linking 'member/account or contact' to accountId/contactId, but does not explain the relationship between channel and recipient fields. 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 tool creates a token-auth survey invitation for a specific member/account or contact, using strong verb 'Create' and specific resource. It effectively distinguishes from sibling create_* tools by focusing on survey invitations.
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 creating survey invitations but provides no explicit guidance on when to use this tool versus alternatives (e.g., other invitation tools) or when not to use it. It lacks exclusion criteria or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskAInspect
Create a task. Optionally link to a CRM account or assign to a team member.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task title | |
| status | No | Status filter | |
| dueDate | No | ISO date (YYYY-MM-DD) | |
| priority | No | Priority | |
| accountId | No | Linked CRM account | |
| assigneeId | No | company_members.id | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the mutation is expected. The description adds no extra behavioral detail beyond 'Create', which is sufficient but minimal.
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 front-loads the main action and optional parameters. 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 acreate tool with 7 parameters and an output schema, the description is adequate but lacks details on behavior (e.g., idempotency, duplication handling). It covers the essential 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?
Schema coverage is 100% with descriptions for all 7 parameters. The description does not add semantic value beyond what the schema already provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('a task'), with optional linking to CRM account or team member. It effectively distinguishes this tool from siblings like update_task or create_ticket.
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. It mentions optional linking but lacks context on prerequisites, exclusions, 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.
create_team_member_inviteAInspect
Invite a team member to this company and return a one-time MCP accept token. The invited user must verify an email code through accept_team_invite_request and accept_team_invite_verify before membership and API key issuance.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional display name for a new user | |
| role | No | Team member role to grant on acceptance | staff |
| Yes | Invitee email address | ||
| modules | No | Optional legacy module list to attach to the company member | |
| permissions | No | Optional structured module permissions to attach to the company member | |
| expiresInHours | No | Invite lifetime in hours. Defaults to 72, max 336. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it specifies the return of a one-time accept token and the required verification process. It could further disclose side effects (e.g., email sending) or the creation of a pending invite record, but the provided information is sufficient.
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, front-loaded with the main action and return value. Every sentence adds value, and there is no superfluous 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 complexity (multi-step verification) and the presence of an output schema, the description covers the essential workflow. It could be more complete by noting the pending state of the invite or the expiration, but it is still informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add parameter-specific meaning; it only provides high-level context. The schema already documents each parameter 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 clearly states the action: 'Invite a team member to this company and return a one-time MCP accept token.' It uses a specific verb and resource, and distinguishes from siblings by referencing the verification workflow (accept_team_invite_request and accept_team_invite_verify).
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 clear context by explaining the required subsequent steps (verification through accept_team_invite_request and accept_team_invite_verify). However, it does not explicitly exclude alternative tools or state when not to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketCInspect
Create a support ticket for a member issue.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Where the ticket originated | |
| subject | Yes | Ticket subject/title | |
| category | No | Ticket category | |
| priority | No | Ticket priority | |
| accountId | No | Member/account ID this ticket is about | |
| contactName | No | Contact name if no account ID | |
| description | No | Detailed description of the issue | |
| contactEmail | No | Contact email if no account ID | |
| contactPhone | No | Contact phone if no account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and destructiveHint=false, but the description adds no additional behavioral context (e.g., permissions, side effects, or that the ticket may be sent for processing). It does not exceed what the 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?
The description is a single sentence—concise but lacking structure. It is not verbose, but it omits any supplementary information that could be included 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?
Despite an output schema being present, the description is too minimal for a tool with 9 parameters. It does not explain what a ticket is, how it relates to other entities (e.g., contacts, bookings), or any important prerequisites.
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 9 parameters have descriptions in the input schema (100% coverage), so the schema already documents parameter meaning. The description does not add extra information beyond the schema, earning a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a support ticket for a member issue. Verb and resource are clear, but it does not differentiate from sibling 'create_' tools like create_account or create_booking.
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 such as create_note or create_task. The description lacks any contextual advice for an AI agent to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_variationAInspect
Add a variation (size, color, etc.) to an existing product.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | Variation SKU | |
| name | No | Variation name | |
| price | Yes | Price as decimal string (e.g. "29.99") | |
| productId | Yes | The product ID | |
| memberPrice | No | Members-only price | |
| stockStatus | No | Stock status | |
| discountPrice | No | Discounted price | |
| stockQuantity | No | Stock quantity | |
| selectedOptions | No | Option selections e.g. {"Size": "Large"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, indicating a non-destructive write. The description adds minimal behavioral context beyond 'add a variation'—it doesn't specify side effects, prerequisites (e.g., product existence), or whether existing variations are affected. With annotations present, the description is adequate but not enriched.
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 concisely conveys the core action and resource. No extraneous words or repetition of schema 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 complexity (9 parameters, required fields, nested objects, output schema), the short description provides a clear high-level purpose but omits details like necessary product existence or the role of required parameters. Nonetheless, it is sufficiently complete for an experienced agent given the rich schema and 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?
While schema coverage is 100% (all parameters described), the description adds semantic value by explaining that variations represent attributes like 'size, color, etc.' This links to the selectedOptions parameter and gives context beyond the schema's generic parameter 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 'Add a variation (size, color, etc.) to an existing product.' clearly specifies the verb 'Add' and the resource 'variation' with context that it attaches to a product. It distinguishes from sibling tools like create_product (which creates a new product) by stating 'to an existing product'.
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 usage when adding a variation to an existing product, but provides no explicit guidance on when to use alternatives (e.g., update_product) or when not to use this tool. It lacks explicit 'when-to-use' and 'when-not-to-use' advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_whatsapp_connect_linkAInspect
Create a short-lived browser link for WhatsApp Business Embedded Signup. The user must open the link because Meta requires a browser popup to authorize and choose the WABA/phone number.
| Name | Required | Description | Default |
|---|---|---|---|
| ttlMinutes | No | Connect link lifetime in minutes. Defaults to 30. | |
| onboardingMode | No | Use cloud_api for a new WhatsApp Cloud API connection, or coexistence when connecting a WhatsApp Business App number. | cloud_api |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only and not idempotent. The description adds key behavioral details: the link is short-lived, and the user must open it in a browser for authorization. This goes beyond the annotations and helps the agent understand side effects.
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, no fluff. First sentence states the purpose, second provides essential usage context. 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?
The description covers the core function and a critical behavioral note (browser popup requirement). Since an output schema exists, the lack of return value explanation is acceptable. Minor gaps include missing prerequisites or expiry details, but overall sufficient for the moderate 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 coverage is 100% with descriptions for both parameters. The description only indirectly references ttlMinutes via 'short-lived'. It adds minimal extra meaning beyond what the schema provides, so 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 clearly states the verb ('Create') and resource ('short-lived browser link for WhatsApp Business Embedded Signup'). It distinguishes this tool from other create tools by specifying the exact purpose and mentions the browser popup requirement, which is unique.
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 context that the user must open the link due to Meta's browser popup requirement, implying when this tool is needed. However, it does not explicitly state when not to use it or mention alternative tools like get_whatsapp_connection_status, leaving room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_campaignADestructiveInspect
Delete a campaign. Only allowed in DRAFT status; sent campaigns are kept for audit history.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Campaign ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable behavioral context beyond the destructiveHint annotation by specifying the DRAFT-only constraint and audit trail behavior for sent campaigns. This helps the agent understand side effects and 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?
Two sentences, no extraneous information. Key information is front-loaded: action, condition, and consequence. Efficient and clear.
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 delete operation with one parameter and an output schema, the description covers essential context: allowed status and audit handling. It could mention idempotency or confirmation, but not necessary given annotations.
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 fully covers the single parameter 'campaignId' with a basic description. The tool description does not add further parameter details, but schema coverage is complete, 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?
Clearly states 'Delete a campaign' with a specific verb and resource. Further distinguishes itself by adding the condition that only DRAFT campaigns can be deleted, which sets it apart from siblings like update_campaign or restore_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit condition for use: 'Only allowed in DRAFT status'. Implicitly advises against use on sent campaigns by stating they are kept for audit history, though it doesn't name alternative tools for those scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_categoryADestructiveInspect
Delete a CMS post category. Posts in the category are not deleted; they are simply unlinked.
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | Yes | Category ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set 'destructiveHint': true, and the description adds context by clarifying that posts are not destroyed, only unlinked. This goes beyond the annotation's binary flag, providing critical behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no unnecessary words. 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?
For a simple delete operation, the description covers the main purpose and the key side effect (posts remain). Output is handled by the schema. Could mention prerequisites like 'category must exist,' 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?
With 100% schema description coverage and a single parameter ('categoryId'), the description adds no extra meaning. The schema already adequately documents the 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 clearly states the action ('Delete a CMS post category') and adds a critical nuance: posts in the category are not deleted but unlinked. This distinguishes it from sibling deletion tools like 'delete_post'.
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 (when a category needs to be removed) but does not provide explicit guidance on when not to use it, nor does it mention alternatives like 'restore_category' for recovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_invoiceADestructiveInspect
Delete a DRAFT invoice. Only invoices that have never been sent can be deleted; otherwise use void_invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true. The description adds the important behavioral constraint that only draft invoices can be deleted, and that an alternative exists for sent invoices. This adds context beyond annotations, but annotations already cover the destructive nature.
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 front-loaded purpose. Every word serves a purpose: identifies the target, states the condition, and provides the alternative. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with one parameter and an output schema, the description is complete. It covers the key condition, references the sibling tool, and doesn't need to explain return values as output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single parameter (invoiceId) with a description. The description adds context that the invoice must be a draft, which is crucial for correct parameter usage. This goes beyond the schema 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 the action ('Delete'), the resource ('invoice'), and a critical condition ('DRAFT'). It also distinguishes itself from the sibling tool 'void_invoice' by specifying when each is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool (only for draft invoices that have never been sent) and when to use the alternative (void_invoice). This is excellent guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_knowledge_documentADestructiveInspect
Soft-delete a knowledge document. The agent loses access immediately, but the document can be restored with restore_knowledge_document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | Knowledge document ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds valuable detail: it is a 'soft-delete', the agent loses access immediately, and the document can be restored. This goes beyond the annotation's binary destructiveness flag.
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, each earning their place: the first states the action and nature (soft-delete), the second explains consequences and restoration. No redundancy or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter), presence of output schema, and annotations that cover destructiveness, the description is fully adequate. It explains the nuanced behavior (soft-delete) and provides a complete mental model for usage.
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 sole parameter documentId is fully described in the input schema (100% coverage). The description does not add any extra meaning or contextual nuance beyond the schema, so 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?
Description clearly states it performs a soft-delete on a knowledge document, specifying the effect (immediate loss of access) and the restoration path. This distinguishes it from other deletion operations and from the sibling tool restore_knowledge_document.
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?
Description provides context that the deletion is reversible by mentioning restore_knowledge_document, guiding agents on when to use this tool vs restoration. However, it does not explicitly state when not to use it or compare to other deletion alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_postADestructiveInspect
Delete a CMS post by ID. Soft-deleted posts can be restored with restore_post.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that deletion is soft (posts can be restored), which adds important behavioral context beyond the annotations. Annotations only indicate destructiveHint true, but the description clarifies the type of deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. Every word is necessary and the description is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation with an output schema, the description covers the essential aspects: the action, target, and restoration capability. The sibling tools list provides broader context, and no further details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (the postId parameter is described as 'The post ID'). The tool description adds no additional details about the parameter beyond what is in the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('CMS post'), and the identifier ('by ID'). It also distinguishes from sibling tools by mentioning soft deletion and the restoration counterpart (restore_post).
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 states when to use this tool (to delete a post) and implies when not to (if intending to restore, use restore_post). However, it does not provide explicit exclusions or mention alternative deletion methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_post_typeADestructiveInspect
Delete a custom post type. Built-in types cannot be deleted. Fails if any posts of this type still exist — delete those first.
| Name | Required | Description | Default |
|---|---|---|---|
| postTypeId | Yes | Post type ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, but the description adds important behavioral context: it fails if posts of that type exist and that built-in types cannot be deleted. This goes beyond the annotation's simple destructive flag.
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, each providing essential information without unnecessary words. It is front-loaded with the main action and quickly states constraints.
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 (one required parameter, clear annotations, and an output schema), the description covers all necessary behavioral aspects and constraints. It is complete for an AI agent to understand and use 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 has 100% coverage with a description for the single parameter. The tool description does not add parameter-level details, but the schema already sufficiently documents the required 'postTypeId'. 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 it deletes a custom post type, distinguishes from built-in types, and provides a prerequisite condition. This is specific and distinct from sibling tools like 'delete_post_type_field'.
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 states when not to use (built-in types cannot be deleted) and when it will fail (if posts exist), implying the need to delete posts first. This provides clear guidance on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_post_type_fieldADestructiveInspect
Remove a field from a post type schema. Blocked when posts of this type still have data in the field unless force=true is passed (orphans the data).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Delete even if posts have data in this field. Existing meta values become orphaned. | |
| fieldId | Yes | Field ID | |
| postTypeId | Yes | Post type ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, and the description adds critical context: blocking behavior when data exists and orphaned data with force=true, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences clearly and efficiently convey purpose and key behavioral condition with no fluff; front-loaded with the main action.
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 core behavior and force condition; with an output schema present, it is adequate, though it could note irreversibility or that orphaned data becomes inaccessible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage baseline at 3, the description adds meaningful context about the force parameter's effect and the blocking condition, providing value beyond the 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?
The description clearly states 'Remove a field from a post type schema' using a specific verb and resource, and the condition about data blocking distinguishes it from related tools like update or restore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when removal is blocked and how to override with force, but does not explicitly contrast with alternative actions like updating or restoring the field, leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_promotionADestructiveInspect
Delete a promotion. Past usage records are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| promotionId | Yes | Promotion ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description adds the important detail that past usage records are preserved, providing transparency beyond the annotation. 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?
Two sentences, front-loaded with the core action and a key behavioral note. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and an output schema, the description covers the essential purpose and behavioral note. It is sufficiently complete, though it could mention idempotency or error handling, but 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%, and the description does not add additional meaning to the single parameter 'promotionId' beyond what the schema already provides. 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 the tool deletes a promotion and explicitly notes that past usage records are preserved. This distinguishes it from complete removal and from sibling tools like restore_promotion or update_promotion.
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 (delete a promotion) but does not provide explicit guidance on alternatives or when not to use. Given the presence of restore_promotion, it could mention that deletion is reversible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_packageADestructiveInspect
Delete a service package by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes | Service package ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows it's destructive. The description adds the 'by ID' detail but no further behavioral traits (e.g., cascading effects or soft-delete). Consistent 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?
Single sentence, no redundancy. Every word is necessary 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 one-parameter delete tool with an output schema and clear siblings (restore_service_package exists), the description is largely complete. It could mention that deletion is final or that restoration is possible, but not required.
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 covers 100% of the parameter (packageId with description). The description adds no additional meaning 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 'Delete a service package by ID' uses a specific verb and resource, clearly stating the action and scope. It distinguishes well from sibling tools like update_service_package or get_service_package.
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. There is no mention of prerequisites, when not to use, or that restore_service_package can undo this action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
earn_loyalty_pointsAInspect
Credit loyalty points or stamps to a member. Use field="points" for points, "stamps" for stamps. Server records a transaction with the reason as audit context.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Which loyalty unit to credit | |
| amount | Yes | Positive integer amount to credit | |
| reason | No | Audit-trail reason (e.g. "Booking completed", "Manual adjustment") | |
| accountId | Yes | The member/account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only mutation. The description adds that the server records a transaction with the reason as audit context, which is useful but not extensive. 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 sentences, front-loaded with the main action, no fluff. Every sentence is necessary and efficient.
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 existence of an output schema (not shown but noted), the description does not need to detail return values. It covers the core action and audit context. However, it omits prerequisites or error conditions, which are minor gaps for a simple mutation.
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%, but the description adds value by explicitly pairing 'field' values ('points' and 'stamps') to their use, which the schema's generic description ('Which loyalty unit to credit') does not provide. This helps clarify parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Credit' and resource 'loyalty points or stamps to a member.' It distinguishes between two types of loyalty units ('points' vs 'stamps'), differentiating it from siblings like 'issue_rewards' and 'get_loyalty_balance.'
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 (when crediting points or stamps) but does not explicitly state when not to use or contrast with alternatives like 'issue_rewards.' It provides specific guidance on using the 'field' parameter but lacks exclusionary context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrol_membershipAInspect
Enrol a member into a membership tier. Free tiers enrol immediately; paid tiers return PAYMENT_REQUIRED unless skipPriceCheck is set. Use list_tiers first to find the target tier.
| Name | Required | Description | Default |
|---|---|---|---|
| tierId | No | The membership tier ID. Omit to enrol on the default no-tier membership. | |
| accountId | Yes | The member/account ID to enrol | |
| expiresAt | No | Optional ISO date to override the tier-computed expiry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide basic safety info (not read-only, not destructive). Description adds valuable behavioral details about immediate enrolment for free tiers vs payment requirement for paid tiers, though does not cover idempotency or re-enrolment 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 sentences, front-loaded with the main action, followed by conditional behavior and a prerequisite. 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?
Covers main behavior and prerequisite, but fails to mention the expiresAt parameter or default tier behaviour, and introduces an undocumented parameter. Output schema exists, so return values are not required, but the inconsistency reduces 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?
Description references a 'skipPriceCheck' parameter that does not exist in the input schema, creating confusion. It adds no additional meaning for the existing parameters beyond what the schema already 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 clearly states the action ('Enrol a member into a membership tier') with a specific verb and resource, and distinguishes from related tools like list_tiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to 'Use list_tiers first to find the target tier' and explains when PAYMENT_REQUIRED occurs, providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_or_create_workroom_threadAInspect
Find or create a Workroom DM thread between a merchant user and an AI colleague. Use this when an inbound event deserves owner attention but no threadId was provided. This only prepares an internal Workroom channel.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional title if a new thread is created | |
| userId | No | Merchant user ID to notify. Defaults to the current MCP user when omitted. | |
| agentId | Yes | AI colleague ID for the Workroom DM |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=false. The description adds that it 'only prepares' the channel and is for internal use, clarifying it is a non-destructive creation. No contradictions, but could detail idempotency or error handling. Overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with clear front-loading: first sentence states core function, second gives use case, third clarifies scope. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given moderate complexity, full schema with descriptions, and presence of output schema, this description is complete. It covers when to use, what the tool does, and its limitations. No gaps for an agent to misinterpret.
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 describes all 3 parameters. The description maps 'merchant user' to userId and 'AI colleague' to agentId, adding minimal context. Title is not elaborated. Baseline 3 due to full schema coverage; description adds marginal 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?
Clearly states the verb (find or create) and resource (Workroom DM thread). Distinguishes from sibling 'post_workroom_message' by noting 'only prepares an internal Workroom channel', implying no message sending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when to use: 'when an inbound event deserves owner attention but no threadId was provided.' Does not explicitly name alternatives but the context and sibling 'post_workroom_message' imply the next step. Slightly lacking in explicitly advising against other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageAInspect
Generate an AI image via kie.ai and return its public R2 URL. Use to mint reusable URLs for content blocks (image, gallery), product photos, or any field that takes an image URL — does NOT attach to a post by itself. Costs credits (see list_image_models). On poll timeout the job continues running; pass jobId from the response to merchant ai-media APIs to retrieve it later.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for reproducible output | |
| prompt | Yes | Generation prompt | |
| modelCode | Yes | Image model code from list_image_models | |
| aspectRatio | No | Output aspect ratio (e.g. 16:9, 1:1) | |
| pollTimeoutMs | No | Default 60000. | |
| negativePrompt | No | Things to exclude from generation | |
| pollIntervalMs | No | Default 3000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm it is not read-only and not destructive. The description adds valuable context: it costs credits, the job continues on poll timeout, and the returned jobId can be used to retrieve the result later. This goes beyond the structured 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 three concise sentences with no wasted words. It front-loads the core purpose, then adds usage guidance and polling behavior, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown), the description need not detail return values. It covers purpose, usage boundary, cost, and async behavior fully, making it self-contained for an AI agent to understand and invoke 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?
All 7 parameters have descriptions in the input schema (100% coverage), so the schema already documents them. The description does not add new information about individual parameters beyond what is in the schema, meeting the baseline expectation.
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 generates an AI image via kie.ai and returns a public R2 URL. It specifies usage for content blocks and product photos, and explicitly distinguishes itself by noting it does NOT attach to a post, which differentiates it from sibling tools like create_post.
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 clear context for when to use the tool (minting reusable image URLs) and a key exclusion (does not attach to a post). It also mentions credit costs and references list_image_models for details, but does not explicitly state when not to use it or compare with alternatives like generate_post_cover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_post_coverAInspect
Generate an AI image and attach it as a post's featuredImage. Submits a kie.ai job, polls until complete, copies the result into the canonical post-asset R2 folder, and writes the public URL onto the post. Costs credits (see list_image_models). On poll timeout, the job continues — call attach_post_cover_from_job(postId, jobId) once it finishes to attach without paying again.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for reproducible output | |
| postId | Yes | The post ID | |
| prompt | Yes | Image generation prompt | |
| modelCode | Yes | Image model code from list_image_models (e.g. nano-banana-2) | |
| aspectRatio | No | Aspect ratio passed to the model, e.g. "16:9", "1:1" | |
| pollTimeoutMs | No | Default 60000. | |
| negativePrompt | No | Things to exclude from generation | |
| pollIntervalMs | No | Default 3000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses entire workflow: submitting a job, polling until complete, copying to R2, writing URL. Mentions credits cost and poll timeout behavior. Annotations (readOnlyHint=false, destructiveHint=false) are consistent with description. No contradiction; description adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is somewhat long but each sentence adds value. Front-loaded with main action and process. Structured logically with steps, side effects, and fallback. Could be slightly more concise, but 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?
Given the tool's complexity (8 params, polling, side effects), the description covers workflow, cost, fallback, defaults, and links to related tools. Output schema exists (not shown) so return values are covered. Sufficient for an AI agent to use 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?
All 8 parameters have schema descriptions (100% coverage). Description adds meaning: explains prompt usage, modelCode source, aspect ratio format, poll timeout/interval defaults, seed for reproducibility, negativePrompt. Also clarifies behavior on timeout and fallback 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 tool generates an AI image and attaches it as a post's featuredImage. It specifies the action (generate and attach), the resource (post), and the process (kie.ai job, poll, copy, write URL). Distinguishes from sibling tools like generate_image and attach_post_cover_from_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use: generate and attach a cover image. Mentions costs, references list_image_models, and gives fallback on timeout (call attach_post_cover_from_job). Lacks explicit when-not-to-use alternatives like upload_post_cover_from_url, but the fallback guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachment_textARead-onlyIdempotentInspect
Read the text/Markdown content of a file attached to a Workroom thread or sent by a customer (PDF, image, or document). Extracts on first read and caches the result. Returns status "ready" with markdown, or "skipped"/"failed"/"not_found" with a reason. Use when a message references an attachment you need to read.
| Name | Required | Description | Default |
|---|---|---|---|
| attachmentId | Yes | The attachment ID from the message attachments list |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral information beyond annotations: extraction on first read, caching, and possible return statuses ('ready', 'skipped', 'failed', 'not_found') with reasons. This complements the annotations (readOnlyHint, idempotentHint) without 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?
The description is two sentences long, front-loads the core purpose, and includes usage guidance. Every word serves a purpose; no redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single parameter, comprehensive annotations, and an output schema (as indicated by context), the description adequately covers all necessary aspects: purpose, usage, behavior, and return values.
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 coverage is 100% with a clear description for the single parameter 'attachmentId'. The tool description does not add additional semantic meaning beyond what the schema already provides, so 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 the verb 'Read' and the resource 'text/Markdown content of a file attached to a Workroom thread or sent by a customer'. It distinguishes from sibling tools by specifying the context of attachment reading, and mentions supported file types (PDF, image, or document).
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 includes explicit usage guidance: 'Use when a message references an attachment you need to read.' It does not explicitly state when not to use or mention alternative tools, but the guidance is clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_logARead-onlyIdempotentInspect
Fetch a single audit log entry by ID, including before/after snapshots when available.
| Name | Required | Description | Default |
|---|---|---|---|
| auditLogId | Yes | Audit log ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent; description adds snapshot inclusion detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, focused sentence with no extraneous 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?
Output schema covers return values; description adds snapshot detail. Minor gap: no error/not-found info.
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 covers 100% of parameters; description does not add parameter meaning beyond 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?
Description clearly states it fetches a single audit log entry by ID, with snapshots. Distinguishes from list/search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when you have an ID, but no explicit when-to-use or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_slotsARead-onlyIdempotentInspect
Find available booking slots for a service on a specific date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ISO date to check (YYYY-MM-DD) | |
| staffId | No | Optional: filter by specific staff member | |
| serviceId | Yes | The service to check availability for | |
| resourceId | No | Optional: filter by specific resource |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds no extra behavioral details (e.g., what happens with no slots, pagination), which is acceptable but not additive.
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, 11 words, front-loaded with verb and resource. No unnecessary information. Highly efficient.
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 rich annotations, full schema coverage, and an output schema (not shown), the description covers the essential purpose. It could mention return type (time slots) but that is likely covered by 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 description maps to serviceId and date but does not elaborate on optional parameters (staffId, resourceId). The schema already provides sufficient meaning, so no added 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 clearly states the verb 'Find', resource 'available booking slots', and scope 'for a service on a specific date'. It distinguishes itself from siblings like create_booking or list_bookings by focusing on slot availability.
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 checking availability, but does not explicitly state when not to use or mention alternatives. However, the context and sibling names make the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_detailARead-onlyIdempotentInspect
Get full booking details including line items, status history, and participants.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingId | Yes | The booking ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it's a safe read. The description adds value by specifying the exact content returned (line items, status history, participants), which 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?
A single sentence that is concise and front-loaded with the key purpose. No wasted words; every part 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 that the tool has only one required parameter, high annotation coverage, and an output schema (though not detailed here), the description is sufficient to understand the tool's functionality. It completes the picture of what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'bookingId', which has a description 'The booking ID'. The description does not add any additional meaning or format beyond what the schema already provides. 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 the verb 'Get', the resource 'booking details', and specifies what is included ('line items, status history, and participants'). This distinguishes it from sibling tools like 'list_bookings' which returns a list, 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?
The description implies usage when full booking details are needed, but does not explicitly state when not to use it or suggest alternatives (e.g., 'list_bookings' for summary, 'get_booking_settings' for settings). No when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_settingsARead-onlyIdempotentInspect
Get global booking settings for the customer booking flow, cancellation rules, visibility options, and confirmation requirements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about what settings are returned (cancellation rules, visibility, etc.), which is useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and resource. Each word adds value; 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?
With zero parameters and an output schema, the description adequately describes what the tool returns. Could be slightly more specific about 'visibility options' but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline is 4. The description adds meaning about what the tool retrieves (global booking settings covering specific areas).
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 'Get global booking settings' with specific aspects (customer booking flow, cancellation rules, visibility options, confirmation requirements). Distinct from siblings like update_booking_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?
No explicit guidance on when to use or alternatives. It's a simple getter, but the description could mention that it retrieves system-wide defaults, not per-booking settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_statsARead-onlyIdempotentInspect
Get booking counts: today, this week, this month, and breakdown by status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description specifies the output categories (today, week, month, status breakdown), which complements the readOnlyHint and idempotentHint annotations by detailing what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous information, efficiently conveys the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter stats tool with output schema, the description covers the key output dimensions, and annotations cover safety; no 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?
No parameters exist, so the description cannot add further meaning; schema coverage is 100%, 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?
Clearly states the tool retrieves booking counts with specific breakdowns (today, week, month, by status), distinguishing it from other booking tools like get_booking_detail or list_bookings.
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?
Does not explicitly advise when to use this tool over alternatives; usage is implied as when aggregated counts are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactARead-onlyIdempotentInspect
Fetch a single contact by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The contact ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to add much. It adds no extra context beyond the annotations, which 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, concise, front-loaded with key action and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description is sufficient for a simple fetch. Could mention error cases (e.g., not found) but not critical given sibling context and annotations.
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% (only contactId with description 'The contact ID'). Description does not add any meaning beyond what the schema provides, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'fetch a single contact by ID', which is specific and distinguishes from siblings like list_contacts (multiple) and search_crm (by query).
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 vs alternatives like list_contacts or search_crm. It implies usage when contact ID is known, but lacks exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_messagesARead-onlyIdempotentInspect
Get messages from a specific conversation thread. Shows the chat history between the merchant and a contact.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search within messages | |
| conversationId | Yes | The conversation ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat that. It adds context about showing 'chat history between merchant and a contact', but does not disclose details like pagination behavior or rate limits. With annotations present, this is acceptable but not exceptional.
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 concise sentences that are front-loaded with the core purpose. No extraneous words, 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 that annotations cover safety and the output schema likely covers return structure, the description is complete enough for an agent to understand what the tool does. It could mention pagination or sorting, but not necessary for basic usage.
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 input schema already fully describes the three parameters (conversationId, limit, search). The description does not add any additional meaning or use-case-specific guidance 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 it retrieves messages from a conversation thread and shows chat history. The verb 'Get' and resource 'messages from a conversation' are specific, and it distinguishes from sibling tools like list_conversations and post_workroom_message.
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. For instance, it does not suggest using list_conversations first to obtain a conversation ID, nor does it mention that this tool is read-only compared to a tool like post_workroom_message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_statsARead-onlyIdempotentInspect
Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active promotions, rewards redeemed, messages sent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond listing the KPIs. It does not contradict annotations, but adds minimal value beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that lists the KPIs. It is front-loaded and contains 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?
The tool is simple (no params, good annotations, output schema exists). The description lists all KPIs returned, which is sufficient. No need to explain return values further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter information. Baseline score of 4 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 it gets 'high-level business KPIs' and lists specific metrics like member count, new members, etc. It uses a specific verb ('Get') and resource ('dashboard stats'), which distinguishes it from sibling tools like get_booking_stats or list_contacts.
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 lists the KPIs, helping an agent decide if these metrics are needed, but it does not explicitly state when to use this tool versus alternatives (e.g., other get_*_stats tools like get_booking_stats). No when-not 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.
get_invoiceARead-onlyIdempotentInspect
Fetch a single invoice with line items, payment history, and customer detail.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, destructiveHint, making the safety profile clear. The description adds value by detailing the response content (line items, payment history, customer detail), which annotations do not cover.
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 conveys the core purpose and included data without any extraneous words. It is efficiently structured.
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 (1 parameter, output schema exists), the description is adequate. It mentions what data is returned, which is helpful. Minor gap: no mention of error handling or null invoice, but 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?
The input schema has 100% description coverage with a basic description for invoiceId. The tool description adds no further meaning, so 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 explicitly states the action (fetch), the resource (single invoice), and what is included (line items, payment history, customer detail), clearly distinguishing it from siblings like list_invoices.
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 this tool (when needing details for one invoice) but provides no explicit guidance on when not to use it or which sibling to choose instead, such as list_invoices for a list view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_statsARead-onlyIdempotentInspect
Outstanding totals, overdue counts, and revenue this period. Used by the weekly-snapshot playbook.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent. The description adds that it returns totals, counts, and revenue, but doesn't elaborate on behavior like averaging, time ranges, or caching. Adequate but not detailed.
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?
Extremely concise with two sentences. The first sentence lists key outputs, and the second provides usage context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no inputs and an output schema present, the description gives a reasonable summary of return values. However, 'this period' is vague—could specify duration (e.g., 'current month'). Still, for a snapshot tool, it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The description doesn't need to add parameter info. It correctly focuses on output. Baseline is high.
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 returns 'Outstanding totals, overdue counts, and revenue this period', which are specific metrics. It also mentions being used by a specific playbook, distinguishing it from sibling invoice 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 says 'Used by the weekly-snapshot playbook', providing clear context for when to use it. While it doesn't list alternatives or when not to use, the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_documentARead-onlyIdempotentInspect
Fetch a single knowledge document with metadata + status. Content bytes are still served via GET /v6/merchant/ai/knowledge/{id}/content — this tool returns metadata only.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | Knowledge document ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, destructiveHint, idempotentHint. The description adds valuable behavioral context: it returns only metadata and status, not content bytes, and points to the specific endpoint for content. 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?
Two sentences, no wasted words. First sentence states purpose, second sets clear boundaries. Excellent structure.
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 one parameter, output schema present, and rich annotations, the description is fully adequate. It specifies what is returned and what is not, and no additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'documentId' is documented in the schema with description 'Knowledge document ID'. Schema description coverage is 100%, so baseline is 3. The description adds no further parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch a single knowledge document with metadata + status' and explicitly distinguishes from content retrieval by noting the separate endpoint for content bytes. This is a specific verb+resource with clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by indicating that content is served separately, implying when not to use this tool. It could be more explicit about alternatives like 'list_knowledge_documents' or 'query_company_knowledge', but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loyalty_balanceARead-onlyIdempotentInspect
Get a member's current loyalty balance — points, stamps, credits, lifetime totals, and active membership tier. Returns null if the member is not enrolled.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | The member/account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral context: it returns null when the member is not enrolled. This is information beyond what annotations provide, enhancing transparency without 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?
The description is extremely concise: two sentences that front-load the essential action and outputs. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (not shown but indicated as present), the description does not need to detail return values. It nonetheless summarizes the main return components. Combined with comprehensive annotations and a single required parameter, the description is fully adequate for an agent to use 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?
There is only one parameter (accountId) and the schema provides a full description ('The member/account ID'). The tool description does not add additional meaning for this parameter beyond what the schema already communicates. With 100% schema description coverage, a 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 uses a specific verb ('Get'), identifies the resource ('member's current loyalty balance'), and specifies the scope ('points, stamps, credits, lifetime totals, and active membership tier'). It also includes a distinctive behavior (returns null if not enrolled). This clearly distinguishes it from sibling tools like get_member_profile or get_membership_tier.
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 indicates when to use this tool (to retrieve loyalty balance details) and what happens in the non-enrolled case (returns null). However, it does not explicitly advise against using it for other purposes or direct users to alternative tools for related data, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_member_profileARead-onlyIdempotentInspect
Get detailed profile for a specific member/account by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | The account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context such as auth requirements or rate limits, but 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?
The description is a single sentence of 12 words, front-loaded with the purpose. It contains 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?
With an output schema available, the description does not need to detail return values. The tool is simple with one parameter, and the description is complete for 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 only parameter, accountId, is fully described in the input schema (100% coverage). The description adds no extra meaning beyond what the schema provides, meeting 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 clearly states 'Get detailed profile for a specific member/account by ID.' This uses a specific verb and resource, distinguishing it from sibling tools like search_members and list_contacts.
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 by specifying the resource type, but it does not provide explicit guidance on when to use this vs. alternatives like search_members or list_contacts. No exclusions or when-not scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_membership_tierARead-onlyIdempotentInspect
Get a specific membership tier by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| tierId | Yes | The tier ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, idempotentHint, and destructiveHint, but the description adds no extra behavioral context (e.g., what happens if tier not found, auth requirements, or rate limits). It simply restates the purpose.
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 redundant information. Every word is necessary and 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 get-by-ID tool with an output schema present, the description is complete. It conveys the core purpose and input requirement; the output schema covers return details.
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 parameter, which already explains 'tierId' as 'The tier ID'. The description adds no new meaning beyond stating retrieval 'by ID', so baseline score 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 'Get a specific membership tier by ID' uses a clear verb ('Get') and resource ('membership tier'), specifying the retrieval method (by ID). It is distinct from sibling tools like list_tiers, which retrieves all tiers.
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_tiers or get_member_profile. No explicit when/when-not or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offer_ruleARead-onlyIdempotentInspect
Get offer rule detail including associated products and discounts.
| Name | Required | Description | Default |
|---|---|---|---|
| ruleId | Yes | The offer rule ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds that the detail includes associated products and discounts, which is useful but does not disclose other behaviors like error handling, rate limits, or authentication needs. Annotations carry most of 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, clear sentence with no redundant information. It is front-loaded with the action and resource, efficiently conveying 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 retrieval tool with one parameter, the description is complete. It specifies what is returned (offer rule detail including associated products and discounts), and since an output schema exists, there is no need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (ruleId), with description 'The offer rule ID' in the schema. The description does not add any new meaning or context for the 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 clearly states 'Get offer rule detail including associated products and discounts,' specifying the action (Get), resource (offer rule), and scope (including products and discounts). This distinguishes it from siblings like list_offer_rules (which lists rules) and create_offer_rule (which creates).
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 a single offer rule by ID, but does not explicitly state when to use it over alternatives like list_offer_rules or create_offer_rule. No clear guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-onlyIdempotentInspect
Get full order detail including line items.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The order UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds minimal extra context (e.g., 'including line items') but does not contradict annotations. With annotations present, the baseline is met.
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 immediately conveys the tool's purpose. No redundant or extraneous 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 presence of annotations and an output schema, the description is complete for a simple read operation. It specifies what is returned (order detail with line items) and aligns with the tool's safe, idempotent nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single parameter 'orderId' described as 'The order UUID'. The description does not add any additional meaning beyond the schema, so 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 the tool retrieves full order details including line items. It uses a specific verb ('get') and resource ('order'), and distinguishes from sibling tools like list_orders and update_order_status.
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. There is no mention of prerequisites, exclusions, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_plan_statusARead-onlyIdempotentInspect
Show the current organisation plan, subscription/payment state, enabled modules, and quota usage. Use before deciding whether an agentic operation is allowed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. Description adds specific data returned (plan, subscription, modules, quota), which complements 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 front-loaded action and usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and no parameters, the description provides all necessary context for an agent to use 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?
No parameters, schema coverage 100%. Description adds nothing extra needed 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?
Clear verb 'show' with specific resource: current organisation plan, subscription state, modules, quota usage. Distinguishes itself from siblings like 'check_plan_operation' by focusing on status 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?
Explicitly states 'Use before deciding whether an agentic operation is allowed', providing clear when-to-use context. No need for exclusions as this is a read-only check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postARead-onlyIdempotentInspect
Get detailed CMS post including content blocks, categories, and tags.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so disclosure burden is met. Description adds content details but no additional behavioral traits like authorization needs or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant words. Front-loaded with verb and resource, then specifies return 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?
Given simple tool with one parameter and output schema present, description is complete enough. It mentions key return components. No major gaps for a get 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 has 100% coverage with a well-described postId parameter. Description adds no new 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?
Description clearly states the tool gets a detailed CMS post with specific fields (content blocks, categories, tags), distinguishing it from siblings like list_posts and delete_post.
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?
Description does not provide explicit guidance on when to use this tool vs alternatives. While context implies it for a single post, no when-not-to or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotentInspect
Get full product detail including images, options, and variations.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds value by specifying that the response includes 'images, options, and variations', which is beyond the annotations. 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?
The description is a single, concise sentence that front-loads the purpose ('Get full product detail') and adds relevant specifics without filler. Every word contributes 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 (one parameter, read-only, with output schema), the description sufficiently covers what the tool returns. The output schema handles return value details, so no further explanation 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?
Schema description coverage is 100% (one parameter, productId, documented). The description does not add any extra meaning beyond the schema, meeting the baseline expectation.
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 full product detail including images, options, and variations', specifying the action (get), resource (product), and scope. It distinguishes itself from sibling tools like 'list_products' and other getters by emphasizing 'full' detail.
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. However, the context of sibling tools (e.g., 'list_products' for listing, 'create_product' for creation) implies that this tool is for retrieving detailed information of a single product. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotionBRead-onlyIdempotentInspect
Get details of a specific promotion/coupon code.
| Name | Required | Description | Default |
|---|---|---|---|
| promotionId | Yes | The promotion ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, indicating a safe read operation. The description adds no additional behavioral traits (e.g., auth requirements, error handling), but 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?
Single sentence with 8 words, perfectly concise and front-loaded. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with output schema and annotations, the description is mostly complete. It could be improved by hinting at the returned details, 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?
Schema coverage is 100% with a single parameter 'promotionId' described as 'The promotion ID'. The description does not add any further meaning or context to the 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?
Description clearly states 'Get details of a specific promotion/coupon code' with a specific verb and resource. However, it does not differentiate from sibling tools like list_promotions or validate_promotion.
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 provided on when to use this tool versus alternatives such as validate_promotion or list_promotions. The description lacks any when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_segment_membersBRead-onlyIdempotentInspect
Get the members that belong to a specific segment.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| segmentId | Yes | The segment ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description does not add any behavioral details beyond that, such as pagination behavior or result 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?
A single, front-loaded sentence that clearly conveys the tool's purpose. It is concise without extraneous words, though could be slightly expanded for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and presence of an output schema (not shown), the description is adequate but lacks mention of pagination (limit parameter) or the fact that it returns a list.
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 both parameters well-described. The description does not add extra meaning beyond the schema, meeting the baseline for full 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 clearly states the verb 'Get' and the resource 'members that belong to a specific segment,' distinguishing it from sibling tools like 'get_member_profile' (individual member) or 'list_segments' (list segments).
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 'search_members' or 'get_member_profile'. It lacks context about prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_detailARead-onlyIdempotentInspect
Get full service details including addons, staff, resources, and tier pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The service ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. The description adds context on included data but does not disclose additional behavioral traits such as pagination, error handling, or required permissions beyond what annotations 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?
Single sentence, front-loaded with key purpose, no wasted words. Efficiently communicates scope and included 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?
Given the output schema exists and annotations are present, the description is largely sufficient. It could mention prerequisites (e.g., serviceId must be valid) but overall covers the main purpose without redundancy.
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 serviceId described. The description adds no extra semantic detail about the parameter 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 clearly states the tool retrieves 'full service details' and lists specific components (addons, staff, resources, tier pricing), distinguishing it from other get_ tools that may focus on subsets or other objects.
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 comprehensive service info but does not explicitly mention when not to use it or provide alternatives (e.g., list_services for summaries, get_service_package for packages).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_packageARead-onlyIdempotentInspect
Get service package detail including applicability and selected booking service/event items.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes | Service package ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds context about the response contents (applicability and selected items) but no further behavioral details such as error handling or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, precise sentence (10 words) with no filler, front-loading the verb and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, rich annotations, and the presence of an output schema, the description adequately covers purpose and scope. Slightly incomplete regarding potential prerequisites or error conditions, but acceptable for a read 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% for the single parameter, with a description already present. The tool description does not add additional meaning beyond the schema for the 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 clearly states the tool gets service package detail, mentioning specific content like applicability and selected items, distinguishing it from list, create, delete, and update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided; usage is implied by the tool name and description, but alternatives like list_service_packages are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscriptionARead-onlyIdempotentInspect
Fetch a single subscription with customer, tier, billing cycle, and renewal info.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety. The description adds mention of returned fields but no additional behavioral traits like authentication, rate limits, or side effects. 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?
Single sentence of 13 words, front-loaded with verb and resource, no unnecessary information. 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?
Output schema exists, so return values need no explanation. Tool is simple (1 required param). The description covers purpose, resource, and included fields adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (subscriptionId). The description does not add meaning beyond the schema's 'Subscription ID'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fetch' and the resource 'single subscription', and lists specific fields (customer, tier, billing cycle, renewal info). It distinguishes from sibling tools like list_subscriptions (list) and cancel/pause/resume (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 implies usage when a single subscription's details are needed, but does not explicitly state when to use vs alternatives or provide exclusions. No guidance on when not to use or comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_surveyARead-onlyIdempotentInspect
Get survey detail, including blocks, publishing status, visibility, settings, and response count.
| Name | Required | Description | Default |
|---|---|---|---|
| surveyId | Yes | Survey ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds scope of returned data but no additional behavioral traits (e.g., rate limits, authentication needs). 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?
Single concise sentence front-loads the action and key details. No redundant or unnecessary words, efficient and clear.
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 output schema exists (so return values are documented), description covers the tool's purpose and data scope adequately. Could mention that the survey must exist, but not critical 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?
Only parameter 'surveyId' is described in schema as 'Survey ID'. Schema coverage is 100%, so description does not add meaning beyond schema. 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?
Description clearly states action ('Get') and specific resource ('survey detail'), listing key included fields (blocks, publishing status, visibility, settings, response count). This distinguishes it from sibling tools like 'get_survey_responses' and 'get_survey_stats'.
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?
Description implies usage by listing what is retrieved, but does not explicitly state when to use this tool versus alternatives. No exclusions or context provided for 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_survey_responsesCRead-onlyIdempotentInspect
List responses for a survey.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max responses (default 50) | |
| surveyId | Yes | Survey ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds no further behavioral context such as pagination behavior, data freshness, 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?
Very concise single sentence. However, it is borderline underspecified; slightly more detail would improve usability without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, reducing need to explain return values. But description is minimal and could mention pagination or default limit 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?
Schema description coverage is 100%, so parameters (surveyId, limit) are already documented. Description adds no additional meaning beyond what 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 clearly states verb 'List' and resource 'responses for a survey', differentiating from sibling tools like list_surveys. However, lacks specifics on scope (e.g., all responses vs paginated) that could further clarify its 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?
No guidance on when to use this tool versus alternatives such as get_survey or list_surveys. No context about typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_survey_statsARead-onlyIdempotentInspect
Get response and invitation metrics for a survey overview dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| surveyId | Yes | Survey ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no additional behavioral context beyond these annotations, so it meets the baseline but doesn't add extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that efficiently communicates the tool's purpose with 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?
For a simple tool with one parameter and an output schema, the description is complete. It tells the agent exactly what metrics are returned without needing further explanation.
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 description for surveyId. The tool description adds no extra meaning beyond what the schema already provides, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets 'response and invitation metrics for a survey overview dashboard', which is a specific verb+resource combination. It distinguishes from siblings like get_survey and get_survey_responses.
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_survey or get_survey_responses. The description only states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_statsARead-onlyIdempotentInspect
Get ticket counts grouped by status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, indicating safe read operation. The description does not add behavioral context beyond what annotations convey, nor does it contradict them.
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 concise sentence with no unnecessary words. Perfectly 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 no parameters and an output schema present, the description provides sufficient context for a simple stats tool. Could mention example status values, but baseline completeness is 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?
No parameters exist, so schema coverage is 100%. The description correctly implies no input needed, consistent with baseline 4 for zero 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 tool's purpose: retrieving ticket counts grouped by status. It is specific and distinguishes from sibling tools like 'list_tickets' which return individual tickets.
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 'list_tickets' for detailed view. The description implies it's for summary statistics, but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_whatsapp_connection_statusARead-onlyIdempotentInspect
Check whether WhatsApp Business is connected for this company, including WABA/phone metadata and the latest agentic connect session state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds value by specifying the data returned (WABA/phone metadata, session state), enhancing transparency without 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?
The description is a single sentence with no wasted words, front-loaded with the key action 'Check'. It is perfectly concise for a simple 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?
Given zero parameters and the presence of an output schema, the description sufficiently covers the tool's purpose and data. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter information, and baseline score of 4 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 tool checks WhatsApp Business connection status, including specific metadata. It uses a specific verb ('Check') and resource ('WhatsApp Business connection'), distinguishing it from tools like create_whatsapp_connect_link.
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 check connection status), but does not explicitly mention when not to use it or alternatives. Given the simple nature and zero parameters, this is adequate but could be improved with exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_rewardsBInspect
Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| expiresAt | No | Optional ISO date when the reward expires | |
| memberIds | Yes | Member/account IDs to receive the reward (max 50) | |
| giftOfferId | Yes | The gift offer/reward scheme ID to issue |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (all false), and the description only says 'Issue a gift/reward' without disclosing side effects, authorization needs, rate limits, or any behavioral traits beyond the basic action.
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 (one sentence) and front-loads the purpose. It could benefit from slight expansion on output or constraints, but it is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, 100% schema coverage, and an output schema, the description does not explain return values or limitations (e.g., member count from schema) and is adequate but not thorough.
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. The description adds no extra meaning beyond stating required inputs, meeting the baseline but providing no additional context.
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 issues a gift/reward to multiple members, specifying the action (issue), resource (gift/reward), and target (multiple members). It distinguishes from siblings like earn_loyalty_points by focusing on issuing rather than earning.
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 mentions required inputs (gift offer ID and member IDs) but provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_resource_to_serviceBInspect
Link a room/resource to a booking service.
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | Service ID | |
| resourceId | Yes | Resource ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations providing safety profile (destructiveHint=false, idempotentHint=false), the description does not explain if linking can overwrite existing links, if it is reversible, or if it requires specific permissions. It carries the full burden but adds minimal 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?
A single, clear sentence with no unnecessary words. It is appropriately front-loaded 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?
The description is minimal but functional given that there is an output schema. However, it lacks prerequisites (e.g., resource and service must exist) and assumes the agent knows the semantics of linking.
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 provides descriptions for both parameters ('Service ID', 'Resource ID'). At 100% coverage, the description adds no extra meaning, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Link' and identifies the resources ('room/resource' and 'booking service'). It clearly distinguishes from sibling tools like create_resource or create_service, but could be more precise about the type of resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as when to link versus create new resources or services. The context of when-not-to-use is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_logsCRead-onlyIdempotentInspect
List recent audit log entries for this company. Filter by action, resource, resourceId, user, source, outcome, destructive flag, and created date range.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return | |
| action | No | Exact tool/action name, e.g. delete_campaign | |
| source | No | Audit source, e.g. mcp, ai_agent, payment_webhook, merchant_api | |
| userId | No | Actor user ID | |
| outcome | No | Execution outcome | |
| resource | No | Resource name, e.g. campaigns | |
| resourceId | No | Resource ID | |
| destructive | No | Whether the audited tool was destructive | |
| createdAfter | No | ISO timestamp lower bound | |
| createdBefore | No | ISO timestamp upper bound |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds only that results are 'recent' (vague) and lists filter options. It does not disclose ordering, pagination, rate limits, or how 'recent' is defined, offering minimal extra behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear purpose and a concise list of filters. It is front-loaded with the main action ('List recent audit log entries'). There is no unnecessary verbiage, though it could be slightly improved by specifying default ordering or time range.
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 10 optional parameters and an output schema exists, the description is adequate but not thorough. It lacks details on default ordering (likely descending by creation date), pagination behavior, and the definition of 'recent'. The output schema presumably covers return values, but additional context would help agent reasoning.
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 100% description coverage, so each parameter is already documented. The description reiterates the filterable fields but adds no new meaning or constraints beyond what the schema provides. Baseline of 3 is appropriate as it neither harms nor significantly enhances parameter understanding.
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 lists audit log entries and enumerates filterable fields. It uses a specific verb ('list') and resource ('audit log entries'), which is good. However, it does not explicitly differentiate from sibling tools like 'get_audit_log' or 'search_audit_logs', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_audit_log' (for a single entry) or 'search_audit_logs' (possibly for advanced search). There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bookingsARead-onlyIdempotentInspect
List bookings with filters for date range, status, service, staff, or member.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| dateTo | No | ISO date — bookings up to this date | |
| status | No | Filter by booking status | |
| staffId | No | Filter by staff member ID | |
| dateFrom | No | ISO date — bookings from this date | |
| accountId | No | Filter by member/account ID | |
| serviceId | No | Filter by service ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds filter context but no further behavioral details beyond what annotations cover.
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 efficiently conveys the tool's purpose and key capabilities.
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 optional parameters, 1 enum, and an output schema, the description sufficiently covers the tool's function. It lists all filter types, making it complete for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions filters generically but doesn't add significant meaning beyond the schema's parameter 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 clearly states it lists bookings and mentions specific filters (date range, status, service, staff, member). It uses the verb 'List' and resource 'bookings', but doesn't explicitly differentiate from sibling list tools, though the filter details help distinguish.
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 listing bookings with filters but provides no when-not-to-use guidance or alternatives. Siblings like get_booking_detail exist, but no comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsARead-onlyIdempotentInspect
List marketing campaigns (email, SMS, WhatsApp) with delivery stats.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort column | |
| limit | No | Max results (default 20) | |
| order | No | Sort order | |
| search | No | Search by campaign name | |
| channel | No | Filter by channel |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it includes 'delivery stats', which is consistent but doesn't reveal additional behavioral traits. 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?
One sentence with 8 words, perfectly concise with no fluff. Front-loads the key purpose and channel 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?
Given the full schema descriptions, annotations, and output schema, the description adequately covers the tool's purpose. However, it could mention pagination or ordering implications which are handled by 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 100%, so the description adds no extra meaning beyond what is already in the schema parameters. Baseline 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 the tool lists marketing campaigns with delivery stats, specifying channels (email, SMS, WhatsApp). The verb 'List' and resource 'campaigns' are explicit, distinguishing it from sibling tools like 'create_campaign' or 'update_campaign'.
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 listing campaigns, but provides no guidance on when to use this tool versus alternatives like 'search_crm' or other list tools. No explicit context on when to avoid or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesARead-onlyIdempotentInspect
List CMS post categories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, covering behavioral safety. The description adds clarification on the resource type ('CMS post categories'), consistent 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?
Extremely concise at 4 words, front-loaded with the verb and resource, no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with zero parameters and an output schema; the description suffices to convey its purpose fully.
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%. The description adds no parameter info, 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 it lists 'CMS post categories', distinguishing it from sibling tools like list_service_categories and list_product_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 implies usage for listing CMS post categories but does not explicitly mention when to use or avoid, nor references alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsARead-onlyIdempotentInspect
List contacts (people linked to CRM accounts), optionally filtered by account or search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Match name, email, or phone | |
| accountId | No | Filter by account |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the domain ('people linked to CRM accounts') and optional filters, which is useful beyond the annotations. 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?
The description is a single sentence that efficiently conveys purpose and optional filters. No extraneous words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters, annotations, and an output schema (presumably), the description is adequate. It covers the main functionality without needing additional details like pagination behavior, which may be implied by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The description summarizes the filters but adds no new semantic information beyond what the schema provides. 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 tool lists contacts linked to CRM accounts with optional filters. It uses a specific verb ('List') and resource ('contacts'), distinguishing it from sibling tools like create_contact or search_crm.
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 search_crm or get_contact. It lacks explicit when-to-use, 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.
list_conversationsARead-onlyIdempotentInspect
List messaging conversations across channels (WhatsApp, SMS, email, etc). Shows unread counts and last message time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by contact name, phone, or email | |
| status | No | Filter by conversation status | |
| channel | No | Filter by channel |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds some return behavior (unread counts, last message time) but does not disclose other traits like pagination or rate limits. Adequate but not exceptional.
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 with no unnecessary words. It front-loads the purpose and includes key output features.
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, 4 optional parameters with full schema coverage, and presence of an output schema, the description provides sufficient information for an agent to understand and use 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% with clear parameter descriptions and enums, so the description adds minimal semantic value beyond the schema. The description mentions channels but does not detail parameter usage 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 clearly states the tool lists messaging conversations across multiple channels and mentions specific return fields (unread counts, last message time). It is distinct from sibling list_* tools which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives like get_conversation_messages or other list tools. Usage context is implied but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dealsARead-onlyIdempotentInspect
List CRM deals (sales pipeline) with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Items per page (default 20) | |
| stage | No | Filter by stage | |
| search | No | Search by name or description | |
| dealType | No | Filter by deal type | |
| accountId | No | Filter by account |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds context about the sales pipeline domain and optional filters, providing additional transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core purpose and concise, with 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?
Given the output schema existence and standard list tool pattern, the description is sufficient, though it could optionally include pagination or sorting behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 6 parameters with descriptions, so the baseline is 3. The description does not add deeper meaning beyond stating 'optional filters', making it adequate but not outstanding.
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 lists CRM deals (sales pipeline) with optional filters, distinguishing it from siblings like search_crm or list_contacts.
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 listing deals from the sales pipeline, but lacks explicit guidance on when to prefer this over alternatives like search_crm or other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_image_modelsARead-onlyIdempotentInspect
List AI image-generation models exposed to merchants (sanitized — provider/cost details hidden). Use to pick a modelCode for generate_post_cover.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds the key behavioral detail that results are sanitized (provider/cost hidden). 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?
Two front-loaded sentences with zero waste: first sentence states what it does, second sentence states why to use it. 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?
With zero parameters and an output schema assumed to exist, the description fully covers the tool's purpose and behavior. The sanitization caveat adds necessary context for correct usage.
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, so description adds no param info; baseline is 4. Feels appropriate as the output is fully described by the purpose.
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 AI image-generation models, specifies they are sanitized, and explicitly links the output to picking a modelCode for generate_post_cover. Distinguishes from siblings by naming the dependent tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('to pick a modelCode for generate_post_cover'). While it doesn't state when not to use it, the context of a simple listing tool with no parameters makes this sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoicesARead-onlyIdempotentInspect
List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort column | |
| limit | No | Max results (default 20) | |
| order | No | Sort order | |
| search | No | Search by invoice number, account name, email, or phone | |
| status | No | Filter by invoice status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context (e.g., pagination, rate limits), so it is adequate but not enhanced.
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 that immediately convey the purpose and a key usage tip. No extraneous 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 annotations covering safety and an output schema presumed present, the description covers the core functionality and a useful filter. However, it could mention other filterable fields like search or sort.
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 5 parameters have descriptions in the schema (100% coverage). The description adds value by giving a specific example (status 'OVERDUE') that goes beyond the enum listing.
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 action ('list invoices') and mentions optional filters. It differentiates from sibling list tools by targeting invoices specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete example of filtering by status 'OVERDUE' but does not explain when to use this tool over alternatives like get_invoice 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.
list_knowledge_documentsARead-onlyIdempotentInspect
List merchant knowledge base documents (uploads + scraped URLs). Use to discover what raw sources exist for the LLM-wiki pattern. Pass updatedAfter for delta sync. Content bytes are fetched separately via GET /v6/merchant/ai/knowledge/{id}/content — this tool returns metadata only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 100) | |
| updatedAfter | No | ISO timestamp — only return docs updated after this. Use for delta sync. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds that it only returns metadata and content is fetched via a separate endpoint, providing full transparency without 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?
Three sentences, each serving a purpose: purpose, use case, and parameter guidance with a note on content separation. Front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with optional parameters and output schema (not needed to explain returns), the description covers purpose, usage, parameter hints, and behavior. Complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters 100%. Description adds context for `updatedAfter` (delta sync) and implies default for `limit`, but adds minimal extra beyond 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 tool lists knowledge base documents (uploads + scraped URLs) and specifies its use for discovering raw sources for the LLM-wiki pattern. It differentiates from siblings by focusing on knowledge documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use for discovering raw sources, mentions delta sync with `updatedAfter`, and clarifies that content is fetched separately, guiding 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.
list_my_companiesARead-onlyIdempotentInspect
List all companies/organisations the current user has access to. Use this to see available orgs before switching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and no destructive behavior. The description adds user-scoping context but does not reveal additional behavioral traits 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?
The description is two concise sentences with no extraneous information, efficiently conveying purpose and usage 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?
The tool is simple with no parameters and an output schema; the description covers purpose and usage context fully, supported by rich annotations.
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 coverage is 100%. The description does not need to add parameter info; it fulfills the baseline expectation for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all companies/organisations the current user has access to' with a specific verb ('List') and resource ('companies'), and distinguishes itself from siblings like 'switch_company' by noting its use before switching.
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 'Use this to see available orgs before switching', providing clear when-to-use context and implying an alternative tool (switch_company).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesBRead-onlyIdempotentInspect
List notes attached to a member/account, booking, or ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10) | |
| entityId | Yes | The entity ID | |
| entityType | Yes | Type of entity the notes are on |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, but the description adds no further behavioral context (e.g., whether results are ordered, pagination behavior, any side effects). With annotations present, the description still fails to add value beyond them.
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 that is front-loaded and free of fluff. It could be slightly more structured (e.g., bullet points), but it is concise and effective.
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 presence of an output schema, the description adequately covers the basic purpose and entity associations. However, it omits details like sorting, pagination beyond the limit hint, and error conditions, which could be helpful.
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 clear parameter descriptions for limit, entityId, and entityType. The tool description adds no extra meaning beyond what the schema already provides, resulting in 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 clearly states the action 'List notes' and specifies the resource 'notes attached to a member/account, booking, or ticket'. It distinguishes from sibling list tools by explicitly mentioning the entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like other list tools. There is no mention of prerequisites, when not to use, or scenarios where other tools 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.
list_notification_logsARead-onlyIdempotentInspect
List notification delivery logs for the current company. Recipients are masked by default for incident-response safety.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 100) | |
| dateTo | No | ISO timestamp upper bound | |
| status | No | Status filter | |
| channel | No | Notification channel filter | |
| dateFrom | No | ISO timestamp lower bound | |
| entityId | No | Entity ID filter | |
| eventType | No | Event type filter | |
| recipient | No | Substring search on recipient |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, which the description does not contradict. The description adds important behavioral context: 'Recipients are masked by default for incident-response safety,' which informs the agent about data privacy. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no wasted words. The description is concise and efficient.
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 high schema coverage, annotations, and presence of an output schema, the description adds the key behavioral note about recipient masking. It lacks details about pagination defaults or return format, but these are covered in schema and output schema, making the description sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all 8 parameters having descriptions in the schema. The tool description does not add any additional parameter-level information, 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 'List notification delivery logs' with a specific scope ('for the current company'), providing a specific verb and resource that distinguishes it from sibling list tools. No other sibling tool covers notification logs specifically.
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 list_audit_logs or other list tools. The usage is only implied by the tool name and description, and there is no mention of when not to use it or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_offer_rulesARead-onlyIdempotentInspect
List upsell/cross-sell offer rules with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by rule type | |
| limit | No | Max results (default 20) | |
| status | No | Filter by status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent; description adds 'with optional filters' but no further behavioral details like sorting or default limit 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?
Single sentence is concise, front-loaded with purpose, and contains 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?
Output schema exists, so return values are covered. Description adequately covers the listing action with filters, though it could mention default sorting or pagination.
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 description adds no new meaning beyond 'optional filters'. 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?
Clearly states verb 'List' and resource 'upsell/cross-sell offer rules', distinguishing it from other list tools in the sibling set.
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 (list offer rules when needed) but no explicit guidance on when not to use or alternatives like get_offer_rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersARead-onlyIdempotentInspect
List shop orders with optional status and search filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by order number or customer name/email | |
| status | No | Filter by order status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what annotations (readOnlyHint, idempotentHint) already provide; it does not mention pagination or default 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?
Single sentence, no unnecessary words, perfect conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple list tool with optional filters and an output schema; could mention default limit 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?
All 3 parameters are described in the schema with 100% coverage; the description adds no additional meaning 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 tool lists shop orders with optional filters, distinguishing it from other list tools for different resources.
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 listing orders with optional filters but does not provide explicit when-not-to-use or alternatives, though it's adequate for a simple list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_outletsARead-onlyIdempotentInspect
List shop outlets/locations for the company.
| Name | Required | Description | Default |
|---|---|---|---|
| activeOnly | No | When true, only return active outlets (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no extra behavioral context. It neither contradicts annotations nor reveals additional traits like pagination or error handling, which is acceptable given the tool's simplicity.
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 redundant information. It is appropriately front-loaded and efficient.
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 presence of an output schema and the simple nature of the tool (single optional parameter), the description covers the essential purpose. It might lack explicit mention of result ordering or limits, but these are not critical for this type of list 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% with a single parameter 'activeOnly' described in the schema. The description does not add any additional meaning beyond what the schema provides, thus 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 'List shop outlets/locations for the company' with a specific verb and resource. It distinguishes itself from sibling tools like 'create_outlet' and 'update_outlet' by indicating a read 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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention filtering or prerequisites. It implicitly suggests use for listing outlets but lacks explicit when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_plan_optionsARead-onlyIdempotentInspect
List active FavCRM plans with prices, quotas, included modules, and whether each is the current plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds context about the output fields but does not disclose additional behavioral traits (e.g., auth needs, rate limits, pagination). The description 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?
Single sentence, concise, front-loaded with the verb and resource. 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 list tool with no parameters and an output schema presumably present, the description sufficiently explains what will be returned. Complete within its scope.
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, so schema description coverage is 100%. The description does not add parameter info but that's unnecessary. According to guidelines, baseline for zero params 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 clearly states the verb 'List' and the resource 'active FavCRM plans', and specifies the returned details (prices, quotas, modules, current plan indicator). It distinguishes itself from siblings like list_subscriptions by focusing on plans.
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 vs alternatives like list_subscriptions or list_tiers. The description does not mention when not to use it or provide contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postsARead-onlyIdempotentInspect
List CMS posts (blog posts and/or pages) with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by post type slug (blog_post, page, or any custom type — see list_post_types). | |
| limit | No | Max results (default 20) | |
| search | No | Search by title | |
| status | No | Filter by status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it lists both blog posts and pages, but schema covers parameter behaviors. 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?
Single sentence of 12 words stating core purpose immediately. No wasted words, front-loaded with specific verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 optional parameters and an output schema (not provided), description adequately covers listing posts with filters. Could mention pagination or return format, but output schema presumably handles that. Complete enough for simple 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 descriptions cover all 4 parameters (type, limit, search, status) with details like default limit and enum values. Description only mentions 'optional filters' generically, adding no new meaning beyond 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?
Description clearly states verb 'List' and resource 'CMS posts (blog posts and/or pages)', with optional filters. Distinguishes from sibling tools like get_post (single post) and list_post_types (list types).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for listing posts with filters but provides no explicit guidance on when to use vs alternatives like get_post or search_crm. No 'when not to use' or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_post_type_fieldsARead-onlyIdempotentInspect
List the custom field schema for a post type. Use this before creating posts to know which keys to pass in meta and what types they expect.
| Name | Required | Description | Default |
|---|---|---|---|
| postTypeId | Yes | Post type ID (from list_post_types) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds that it returns a schema, which is consistent but doesn't disclose additional behavioral traits beyond what annotations provide. Score 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The description is front-loaded with the purpose and immediately adds actionable context. 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?
Given the tool's simplicity (1 parameter, read-only, output schema exists), the description fully covers what an agent needs: purpose, usage timing, and parameter origin. No gaps remain.
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 is only one parameter, postTypeId, which is already well-described in the schema as 'Post type ID (from list_post_types)'. The description does not add new meaning beyond the schema, so with 100% schema coverage, the baseline score of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb and resource: 'List the custom field schema for a post type.' It also adds usage context ('Use this before creating posts to know which keys to pass in meta'), making the purpose unmistakable and distinguishing it from sibling tools like create_post_type_field or list_post_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('before creating posts') and what benefit it provides. While it doesn't explicitly list alternatives, the context from siblings (e.g., create_post_type_field) implies when not to use it. A score of 4 reflects clear guidance without full exclusionary detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_post_typesARead-onlyIdempotentInspect
List all post types defined for this company (built-in: blog_post, page; plus any custom types).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds useful context about built-in vs custom types and company scope, but no additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with all essential information. No wasted words, front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and an output schema present, the description fully explains what is returned (all post types, with examples). No missing information.
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 baseline is 4. Description adds no parameter information, which is acceptable as schema coverage is 100% and schema is empty.
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 the verb 'list' and resource 'post types', gives examples of built-in types, and implies scope 'for this company'. Distinguishes from sibling tools like create_post_type, delete_post_type, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that it lists all post types for the company, but does not explicitly guide when to use it over alternatives like list_posts or other list tools. No exclusions or when-not-to-use statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_product_categoriesARead-onlyIdempotentInspect
List all product categories for the shop.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds no extra behavioral details (e.g., pagination, limits), but 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?
The description is a single, concise sentence with no unnecessary information. Every word serves a 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 simple nature (no parameters, output schema exists), the description is adequate. It could mention whether the list is exhaustive or paginated, but it is complete enough for this 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?
There are zero parameters, and schema coverage is 100%. The description need not add parameter details; a baseline of 4 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 tool lists all product categories for the shop. The verb 'list' and resource 'product categories' are specific. However, it does not differentiate from the sibling tool 'list_categories', which may have overlapping functionality.
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 like 'list_categories' or 'create_product_category'. The description lacks context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-onlyIdempotentInspect
List shop products with optional filters by name, status, or category.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by product name | |
| status | No | Filter by status | |
| categoryId | No | Filter by category ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no additional behavioral context such as pagination behavior, default sorting, or response structure. 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?
The description is a single sentence of 10 words, front-loading the main action and including key filter options. Every word contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 optional params, output schema present, clear annotations), the description is adequate but lacks mention of pagination, default limit other than 'default 20' in schema, or that it returns all matching products. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with each parameter explained. The description mentions 'name, status, or category' filters, which only partially maps to the four parameters. It adds no new semantics beyond the 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?
The description clearly states the tool lists shop products and mentions optional filters by name, status, or category. This is a specific verb+resource combination that distinguishes it from sibling tools like list_bookings or list_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 specifies when to use (listing products with optional filters) but does not mention alternatives like get_product for single product retrieval or list_product_categories for category listing. No explicit when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promotionsARead-onlyIdempotentInspect
List promotion/coupon codes with optional status filter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by name | |
| status | No | Filter by status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; description adds status filter context but no additional behavioral traits like pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action and resource, 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?
Description plus schema cover basics; with output schema present, missing pagination details are acceptable but could be improved.
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%; description only restates the status filter without adding new meaning to limit or search 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?
Description clearly states verb 'List' and resource 'promotion/coupon codes' with an optional status filter, distinguishing it from sibling tools like get_promotion (single) or create_promotion.
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?
Description implies use for listing with optional filter but provides no explicit guidance on when to use alternatives like get_promotion for a single item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resourcesARead-onlyIdempotentInspect
List booking resources (rooms, equipment, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no further behavioral context (e.g., pagination, scope, or result structure). It is adequate but not enhanced.
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 with no unnecessary words. It front-loads the verb and resource, making it easily parsable.
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 and the presence of an output schema, the description is mostly complete. It could be improved by clarifying scope (e.g., 'all resources accessible to the current user') but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' is fully described in the input schema (coverage 100%). The description repeats no parameter info and adds no additional meaning 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 (list) and the resource type (booking resources) with examples (rooms, equipment). It effectively distinguishes from sibling tools like list_services and list_products.
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 such as list_bookings or search_crm. The description does not mention any context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reward_schemesARead-onlyIdempotentInspect
List loyalty reward schemes (points/stamps programs) configured for this business.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by name |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description aligns with these but adds no extra behavioral context (e.g., auth requirements, rate limits, or side effects). With annotations, a score of 3 is appropriate as description does not contradict but also does not enhance.
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, 12 words, perfectly front-loaded. Every word adds value. No unnecessary information. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (list operation), annotations present, full schema descriptions, and an output schema (mentioned), the description is complete. No missing context for selection or 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?
Both parameters (limit, search) are already described in the input schema with clear descriptions. Schema description coverage is 100%, so description adds no additional semantic value beyond what the schema provides. Baseline score 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?
Describes exactly what the tool does: listing loyalty reward schemes (points/stamps programs) for the business. Specific verb 'List' and resource 'reward schemes' with context. Distinguishes from siblings like get_loyalty_balance and issue_rewards.
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 such as get_loyalty_balance or earn_loyalty_points. Does not mention context or exclusions. Agent has to infer from name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segmentsARead-onlyIdempotentInspect
List customer segments. Segments group members by criteria for targeted campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by segment name |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds only a definition of segments, not behavioral details (e.g., pagination, sorting, or response structure). 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?
Two sentences with no redundancy. Essential information is front-loaded. Every word serves a 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 list tool with few parameters, annotations, and an output schema, the description provides adequate context. It explains the purpose and definition of segments, though it omits details like default sorting or pagination limits.
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 descriptive parameter names and descriptions. The tool description adds no additional meaning for 'limit' or 'search', so baseline 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 'List customer segments', which is a specific verb-resource pair. It also explains what segments are, and the name distinguishes it from siblings like 'create_segment' and 'get_segment_members'.
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 for listing all segments but provides no explicit comparison to alternatives like 'get_segment_members' or search functions. However, the context is clear enough for a list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_categoriesARead-onlyIdempotentInspect
List service categories (groups for booking services like "Treatments", "Classes").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the description adds limited behavioral context beyond explaining what service categories are. It does not contradict annotations but does not elaborate on additional traits like authorization or data scope.
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, no wasted words. Front-loaded with the action ('List') and resource ('service categories'), followed by a clarifying parenthetical.
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 thorough annotations (readOnly, idempotent, non-destructive) plus an output schema, the description is sufficient. It could mention that it returns a list of all categories, but this is reasonably implied.
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%. The description adds value by giving concrete examples ('Treatments, Classes'), which clarify the meaning of service categories beyond the schema 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 clearly states the tool lists service categories, with specific examples ('Treatments', 'Classes'). This distinguishes it from the sibling 'list_categories' tool, which likely covers all categories, not just service-specific 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?
No explicit guidance on when to use this tool versus alternatives like 'list_categories' or other list tools. The purpose is implied but lacks direct when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_packagesARead-onlyIdempotentInspect
List service packages/prepaid session bundles with optional search, status, sorting, and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort column: name, price, or createdAt | |
| limit | No | Max results (default 20) | |
| order | No | Sort order | |
| search | No | Search package name | |
| status | No | Filter by package status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds non-annotation context about optional search, status, sorting, and pagination parameters. 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?
A single sentence that is front-loaded with the core action and includes all key features without 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?
Given the presence of an output schema, the description adequately covers the tool's behavior. It mentions all optional parameters and the object type, making it complete for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description restates parameter categories but does not add new meaning beyond the schema, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'service packages/prepaid session bundles', specifying optional filtering features. It effectively distinguishes from sibling tools focused on other resources.
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 provide explicit guidance on when to use this tool versus alternatives, such as search or other list tools. However, the purpose is straightforward enough that a 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesBRead-onlyIdempotentInspect
List booking services with name, price, duration, and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by name | |
| status | No | Filter by status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description doesn't need to repeat safety information. It adds minimal behavioral context (only the returned fields) but is not contradictory.
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 that front-loads the purpose. Every word contributes meaning; there is no redundancy or 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?
Given the presence of an output schema and good annotations, the description is minimally adequate. However, it lacks usage context and does not help distinguish from many sibling list tools.
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 provides descriptions for all three parameters. The description does not add additional meaning beyond the schema, so baseline score 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 'List booking services' and enumerates the fields returned (name, price, duration, status). It uses a specific verb and resource, but does not explicitly differentiate from sibling list tools like list_bookings or list_service_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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or scenarios where another 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.
list_service_schedulesBRead-onlyIdempotentInspect
List schedule windows for booking services.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| dateTo | No | YYYY-MM-DD | |
| staffId | No | Staff member ID | |
| dateFrom | No | YYYY-MM-DD | |
| serviceId | No | Service ID | |
| isOverride | No | Filter to override entries only | |
| resourceId | No | Resource ID (room/equipment) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety profile (readOnly, idempotent, not destructive). The description adds minimal behavioral context, e.g., no explanation of pagination, date range defaults, or what a 'schedule window' entails. 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?
The description is a single, front-loaded sentence that directly states the function. No unnecessary words, achieving maximal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to contextualize the tool among many siblings. It does not explain how schedule windows relate to bookings, or when to use this over get_available_slots or list_services. The 7 optional parameters need more usage 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?
With 100% schema description coverage, the schema already documents all 7 parameters. The description does not enhance understanding of parameters like dateFrom, dateTo, staffId, etc., beyond what they convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (schedule windows), and the context (for booking services). It differentiates from siblings like get_available_slots (available slots vs schedule definitions) and list_bookings (actual bookings vs schedule windows).
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 lacks guidance on when to use this tool versus alternatives such as get_available_slots or list_service_categories. No mention of typical use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shipping_methodsARead-onlyIdempotentInspect
List all shipping methods configured for the shop.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds no behavioral details such as pagination, rate limits, or return characteristics.
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 wasted words, but could be slightly more descriptive about the scope (e.g., 'for the current shop context'). Appropriate length.
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 list tool with output schema and clear annotations, the description is adequately complete. It covers the basic 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?
No parameters exist in the input schema, so description does not need to explain any. Schema coverage is 100%, baseline is high.
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 it lists all shipping methods for the shop. It uses a specific verb and resource, and distinguishes itself from sibling list tools like list_services or list_products.
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. For a simple list tool, it's adequate but lacks context like 'use this to get an overview of available shipping options'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_staffBRead-onlyIdempotentInspect
List staff/team members in the business.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the scoping phrase 'in the business' but does not disclose other behaviors like pagination or response details.
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 wasted words. It could be more informative, but it is efficient.
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 and presence of an output schema, the description is adequate but minimal. It does not mention ordering or filtering, which could be helpful.
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 single parameter 'limit' is fully described in the schema with its default value. The description adds no additional meaning beyond what the schema already 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 clearly states the tool lists staff/team members, which is a specific verb and resource. It distinguishes from other list tools by focusing on staff, though it is brief.
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 alternative list tools or any exclusions. The description lacks context for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsARead-onlyIdempotentInspect
List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| status | No | Filter by subscription status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds no additional behavioral context beyond listing and filtering, but 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?
Single sentence with no unnecessary words. Front-loaded action verb 'List' and efficient structure.
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 2 parameters and output schema, the description covers the main purpose and primary filter. Could mention limit or pagination, but output schema likely provides that.
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 covers 100% of parameters with descriptions. Description reinforces the status parameter with example values, but doesn't add significant 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 clearly states the tool lists member subscriptions and mentions filtering by status. It distinguishes itself from 'get_subscription' (a sibling tool for single subscription), but does not explicitly differentiate from other list_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is to list subscriptions with optional status filter. No explicit when-to-use or when-not-to-use guidance, nor mention of alternatives like 'get_subscription'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_survey_invitationsARead-onlyIdempotentInspect
List survey invitation history without exposing token hashes or old invitation tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max invitations (default 50) | |
| surveyId | Yes | Survey ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds valuable context by explicitly stating the tool does not expose token hashes or old tokens, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, immediately states the main action, and has no unnecessary words. 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?
With an output schema present, the description does not need to explain return values. The description covers the tool's purpose and key behavioral trait (no token exposure), but omits details like pagination or sorting, which are acceptable for a straightforward listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters described. The description adds no extra meaning beyond what the schema provides, so baseline score 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 clearly states the function (list survey invitation history) and specifies what is not exposed (token hashes or old invitation tokens), distinguishing it from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a usage context (safe, no sensitive data exposure) but does not explicitly state when to use this tool over siblings or provide alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_surveysARead-onlyIdempotentInspect
List surveys with optional status/search filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search survey title or description | |
| status | No | Filter by survey status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context (e.g., pagination, ordering, or rate limits). Falls into the baseline 3 as annotations already cover 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?
A single clear sentence that conveys the essential information without any fluff. 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?
Given the simplicity of the tool (3 optional params, no required ones), the annotations, and the existence of an output schema, the description is sufficient. It could optionally mention default limit behavior but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter clearly described (limit, search, status). The description only reiterates 'optional status/search filters' without adding meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'surveys', and the optional status/search filters. This distinguishes it from sibling tools like list_survey_invitations or list_survey_workflows.
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 mentions optional filters but does not explicitly specify when to use this tool versus alternatives like list_survey_workflows or get_survey. No guidance on context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_survey_workflowsARead-onlyIdempotentInspect
List automation workflows attached to a survey.
| Name | Required | Description | Default |
|---|---|---|---|
| surveyId | Yes | Survey ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it lists workflows 'attached to a survey,' which aligns with the parameter surveyId. The annotations already provide readOnlyHint=true and destructiveHint=false, so behavioral safety is fully covered. 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?
The description is a single sentence with zero wasted words. It is front-loaded and instantly comprehensible.
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 (one parameter, output schema exists, annotations present), the description is sufficient. However, it could optionally mention that the list returns workflow details, but the output schema covers that.
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 100% coverage with a description 'Survey ID' for the only parameter. The description does not add any extra meaning or constraints 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 clearly states the verb (list) and resource (automation workflows) and scope (attached to a survey). It distinguishes itself from siblings like list_surveys and upsert_survey_workflow by specifying the exact resource and 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 provides no explicit guidance on when to use this tool versus alternatives like list_surveys or upsert_survey_workflow. While the purpose is clear, it lacks 'when-not-to-use' or context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsARead-onlyIdempotentInspect
List all available tags for the merchant.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search tags by name |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating safe read-only behavior. The description adds minimal context beyond affirming the tool lists tags, so transparency is adequate but not enhanced.
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 essential purpose without any unnecessary words. It is front-loaded and efficient.
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 an output schema present, the return values are presumably documented. The description is straightforward for a simple list operation, but could be more complete by noting potential pagination or ordering behavior, though this is likely acceptable 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?
The input schema has 100% description coverage with the 'search' parameter described. The tool description does not add any additional meaning or context beyond the schema, so it meets the baseline without adding 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 clearly states the tool lists all available tags for the merchant. The verb 'list' and resource 'tags' are specific, and the scope 'for the merchant' distinguishes it from sibling tools like attach_tags (mutation) or list_tiers (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when tags need to be retrieved, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., searching vs listing all), nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksARead-onlyIdempotentInspect
List tasks with optional status, assignee, and account filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| status | No | Filter by task status | |
| accountId | No | Filter by related CRM account | |
| assigneeId | No | Filter by assignee company_members.id |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read. The description adds context about filters, which is consistent. No additional behavioral traits (e.g., pagination, sorting) are needed beyond what annotations and schema 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 a single, concise sentence that front-loads the purpose and filters. Every word is meaningful, with no redundancy or unnecessary 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 simplicity (4 optional params, output schema present, annotations covering safety), the description adequately covers what an agent needs to know. The output schema likely handles return value documentation, so the description's brevity is appropriate.
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 explains all 4 parameters. The description merely summarizes the filter options ('status, assignee, and account filters'), which adds minimal extra meaning 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 clearly states the action ('List'), the resource ('tasks'), and the scope ('with optional status, assignee, and account filters'). This specificity distinguishes it from sibling tools like create_task, update_task, etc.
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 listing tasks with filters but does not explicitly state when to use this tool versus alternatives like search_* or list_* tools for other entities. No guidance on 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.
list_ticketsBRead-onlyIdempotentInspect
List support tickets with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| search | No | Search by subject | |
| status | No | Filter by status | |
| category | No | Filter by category | |
| priority | No | Filter by priority | |
| accountId | No | Filter by CRM account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no behavioral context beyond 'optional filters'—no mention of pagination, performance, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence with no unnecessary words or repetition. Front-loads the core action.
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 presence of an output schema and exhaustive parameter descriptions, the description suffices for a list tool. However, it lacks details on output format or behavior like default limit (20).
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 thoroughly documents parameters. The description's 'optional filters' adds no new meaning beyond the schema 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 explicitly states 'List support tickets with optional filters,' which includes a specific verb and resource. It distinguishes itself from sibling tools like 'get_ticket_stats' (statistics) and 'create_ticket' (creation).
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 other list tools (e.g., list_bookings). No exclusions or context about 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.
list_tiersARead-onlyIdempotentInspect
List all membership tiers with member counts and stats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds 'member counts and stats' but doesn't contradict annotations; provides minimal extra 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?
Single sentence, no wasted words, front-loaded with 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 list tool with no parameters and an existing output schema, the description adequately covers its purpose and expected return content.
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 with 100% schema description coverage, so description need not add parameter info. Baseline for 0 params 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?
Description clearly states 'list all membership tiers with member counts and stats', using specific verb+resource and distinguishing from sibling list_* tools by focusing on membership tiers and including stats.
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 vs alternatives like list_segments or list_services; no context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_invoice_sentAInspect
Mark an invoice as sent to the customer (transitions DRAFT → OPEN). Use after delivering the invoice via email or share link. Idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool is idempotent, but the annotation sets idempotentHint to false, creating a direct contradiction. This undermines trust and fails to disclose the tool's true 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?
The description is concise (two sentences) and front-loaded with the core action. However, the contradictory idempotency statement reduces reliability, keeping it from a perfect score.
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 state-transition tool with one parameter and an output schema, the description covers the main action, transition, and usage context. It could mention prerequisites (invoice must be in DRAFT), but it's fairly 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?
With 100% schema coverage, the description adds no extra meaning beyond the schema's Invoice ID description. Baseline 3 is appropriate; no additional context is provided.
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 ('Mark an invoice as sent'), the resource ('invoice'), and the state transition ('DRAFT → OPEN'). This is specific and distinguishes it from sibling tools like create_invoice, void_invoice, etc.
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 advises to use the tool after delivering the invoice via email or share link, providing clear context. It also notes idempotency, implying safe repeated use. It does not explicitly list when not to use it, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_no_showAInspect
Mark a booking as no-show when the customer did not attend.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingId | Yes | The booking ID to mark as no-show |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety profile (all hints false), so the description bears the full burden. It implies a state change but does not disclose consequences (e.g., charges, irreversibility, notifications) or permissions required. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and to the point, with no unnecessary words. 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?
The tool is simple with one parameter and an output schema, so the description is mostly complete. However, it could mention that marking a no-show is typically irreversible or has billing implications, given the lack of behavioral transparency from annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'bookingId', so the schema already documents it fully. The description adds no further meaning beyond what the schema provides, resulting in a 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 clearly states the verb 'mark' and the resource 'booking', and specifies the condition 'when the customer did not attend', distinguishing it from sibling tools like cancel_booking or complete_booking.
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 states when to use the tool ('when the customer did not attend'), providing clear context. It does not, however, mention when not to use it or alternatives, which could be helpful but isn't critical given the clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_subscriptionAInspect
Pause an active subscription (status → past_due, no further auto-renew). Use resume_subscription to reactivate.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the specific state change (status → past_due) and side effect (no further auto-renew), which adds value beyond annotations (readOnlyHint=false, destructiveHint=false). 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?
Two sentences, front-loaded with purpose and effect, includes pointer to sibling tool. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and output schema present, the description sufficiently covers the main behavior. Could mention that the subscription must be active to pause, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter is well-defined in the schema. The description does not add additional meaning 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?
Clearly states the verb 'Pause', the resource 'active subscription', and the specific effect: status becomes past_due, no further auto-renew. Also distinguishes from sibling resume_subscription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions using resume_subscription to reactivate, providing guidance on when to use this tool vs alternative. Could be improved by noting prerequisites like subscription must be active.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_workroom_messageAInspect
Post an internal message from an AI colleague into a Workroom thread. Use this to report findings, ask the owner for approval, or share source links after reading CRM/Inbox data. This does not send anything to customers.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | AI colleague ID that is a participant in the thread | |
| content | Yes | Message to show in Workroom. Markdown is allowed. | |
| metadata | No | Optional generic metadata, e.g. {sourceRefs:[{type:"inbox_conversation",id:"..."}]} | |
| threadId | Yes | Workroom thread ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation with no special hints. The description adds that the message is internal-only, but does not disclose other behaviors like whether messages can be edited or deleted, or permission 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 two sentences: the first states the purpose, the second provides usage scenarios. It is concise, front-loaded, and contains no extraneous 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 that an output schema exists and the tool is straightforward, the description covers the primary purpose and usage. It lacks some details like message formatting or behavior, but is generally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 4 parameters (100% coverage). The tool description provides usage context but adds minimal meaning beyond what the schema already specifies.
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 posts an internal message from an AI colleague into a Workroom thread. It specifies the action, source, and destination, and lists example use cases, effectively distinguishing it from 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?
The description explicitly states when to use the tool (report findings, ask approval, share links) and mentions it does not send to customers, ruling out external communication. However, it does not mention alternative tools for customer messaging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_customer_importAInspect
Preview a bulk customer import (max 2000 rows). Matches existing accounts by phone/email and shows create vs update actions plus points/stamps/credit deltas. Use commit_customer_import with the returned sessionId to apply.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| filename | No | Original filename for audit |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is a preview (non-destructive), matches existing accounts by phone/email, and shows deltas for points/stamps/credit. It does not mention rate limits or authentication, but for a preview tool, the behavioral traits are adequately covered. Annotations provide no readOnlyHint, so description carries 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 two sentences, no unnecessary words, and puts the core purpose first. 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 that an output schema exists (not shown but implied), the description does not need to detail return values. It covers purpose, usage flow, matching logic, max rows, and next step. For a preview tool with moderate complexity, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description adds some context by mentioning phone/email matching, which clarifies the purpose of those fields. However, it does not describe the structure of the 'rows' array or the 'filename' parameter beyond what is in the schema. It partially compensates but not fully.
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 'Preview', the resource 'bulk customer import', and specific scope 'max 2000 rows'. It also describes the behavior of matching by phone/email and showing create vs update actions. This distinguishes it from its sibling 'commit_customer_import'.
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 tells the agent to use 'commit_customer_import with the returned sessionId to apply' after previewing. It implies bulk import usage, but does not explicitly exclude alternative tools like 'create_account' for single record operations. Still, for its specific purpose, guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_company_knowledgeARead-onlyIdempotentInspect
Search this company's knowledge base and return grounded snippets with source document IDs. Use for merchant policies, FAQs, pricing notes, brand guidance, and other uploaded references.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matching snippets (default 5) | |
| query | Yes | Question or keywords to search for in company knowledge | |
| maxSnippetChars | No | Maximum characters per snippet (default 600) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so the description's role is to add context. It mentions 'grounded snippets with source document IDs,' which is helpful but brief. No further behavioral details (e.g., authentication or limits) are provided, but output schema covers return format.
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: the first clearly states the core action and output, the second lists use cases. Highly front-loaded, no filler, 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?
Given the tool's simplicity (3 parameters, no nested objects) and the presence of both annotations and output schema, the description adequately explains the purpose and typical use. It could mention that it searches only company knowledge (not CRM or platform), but is 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?
Schema description coverage is 100%, so baseline is 3. The description does not add additional meaning beyond the schema descriptions; it only lists usage examples. No parameter-specific elaboration.
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 searches the company's knowledge base and returns grounded snippets with source document IDs. It lists specific use cases (policies, FAQs, etc.), differentiating it from general search tools like 'search_crm' or 'query_favcrm_platform', though it could explicitly exclude other search types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (for knowledge base content) but lacks explicit guidance on when not to use or alternatives. It implicitly suggests this is for knowledge base queries, but does not contrast with sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_favcrm_platformARead-onlyIdempotentInspect
Search FavCRM MCP tools, enabled skills, and feature areas for how to use the platform. Use before guessing tool names or JSON arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Restrict search area (default all) | |
| limit | No | Maximum results (default 8) | |
| query | Yes | Plain-language capability question, e.g. "create a booking" or "send a campaign safely" |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, making safety clear. The description adds that it searches multiple areas but offers no additional behavioral details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two front-loaded sentences: one stating what the tool does and one providing usage guidance. Every sentence is valuable and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema with full parameter descriptions and the presence of an output schema, the description sufficiently covers the tool's purpose and usage. It is complete enough for an agent to understand and use 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 already documents parameters. The description references using plain-language queries and mentions area/limit but adds no significant meaning 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 tool searches FavCRM MCP tools, skills, and feature areas, with a specific verb and resource. It distinguishes itself from sibling tools by serving as a discovery aid before guessing tool names or arguments.
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 advises to use this tool before guessing tool names or JSON arguments, providing clear usage context. However, it does not mention when not to use the tool or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_invoice_paymentAInspect
Record a manual payment against an invoice (cash, bank transfer, cheque, card terminal). Updates invoice status to PARTIAL or PAID based on the running total.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Internal note about this payment | |
| amount | Yes | Payment amount as decimal string, e.g. "100.00" | |
| method | Yes | Payment method | |
| invoiceId | Yes | Invoice ID to record payment against | |
| reference | No | External reference (cheque number, bank transfer ID) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool updates invoice status to PARTIAL or PAID based on running total, which is a key behavioral trait. Annotations confirm it's a write operation (readOnlyHint=false) with 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?
Two sentences, front-loaded with the action and purpose. Every sentence provides necessary information without excess.
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 explains the primary effect (status update) and acceptable payment methods. While it omits error handling or concurrency details, the presence of an output schema reduces the need for return value documentation.
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 parameters are already documented. The description adds context about the effect of the payment on invoice status but does not significantly enhance parameter meaning 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?
Clearly states the verb 'Record a manual payment against an invoice' and lists accepted payment methods. Distinguishes from sibling tools like create_invoice and void_invoice by specifying the action and effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly indicates that this tool is for manual payment recording and lists methods. Lacks explicit when-not-to-use or alternative tools, but the context is clear enough for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_organisation_requestAInspect
Step 1 of agentic signup. Sends a 6-digit verification code to the email. After the user reads the code, call register_organisation_verify with it to finish and receive an API key. Use this when a user wants to create a new FavCRM workspace from inside an MCP client.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Owner email — receives a 6-digit code (10 min TTL) | ||
| country | No | ISO 3166-1 alpha-2 country code (HK, US, GB, ...) | |
| industry | No | Vertical — drives default templates | |
| timezone | No | IANA timezone (e.g. Asia/Hong_Kong); falls back to country default | |
| organisationName | Yes | Business / brand name (used as the first company name too) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond annotations: it sends a 6-digit code to the email, the code has a 10-minute TTL (from schema), and the API key is only obtained after verification. Annotations indicate non-idempotent but not destructive, which aligns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding essential information: action, next step, usage context. No redundant words; front-loaded with the key behavior.
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 core purpose and workflow. Given that an output schema exists and the tool is straightforward, it is sufficiently complete, though it could mention potential error cases or prerequisites.
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 parameter descriptions are detailed. The description adds workflow context (code sent to email, two-step process) but does not elaborate on individual parameter meanings 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 verb ('sends a verification code') and resource ('email'), explicitly identifies this as Step 1 of agentic signup, and distinguishes it from sibling tools like register_organisation_verify by outlining the two-step flow.
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 a clear usage context: 'Use this when a user wants to create a new FavCRM workspace from inside an MCP client.' It also explains the next step, though it does not explicitly mention 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.
register_organisation_verifyAInspect
Step 2 of agentic signup. Confirms the 6-digit code and creates the workspace. Returns an API key the agent should set as Authorization: Bearer for all subsequent FavCRM MCP calls in this session.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 6-digit code from the verification email | |
| requestId | Yes | From register_organisation_request |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which show readOnlyHint=false and destructiveHint=false), the description discloses that the tool creates a workspace, returns an API key, and requires the agent to set it as an Authorization header. No contradictions 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 two sentences, front-loaded with 'Step 2'. Every sentence adds essential information without any fluff. It is clear and 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?
Given the presence of an output schema (known from context signals but not shown), the description adequately covers the return value (API key) and the fact that the workspace is created. It could also mention that the workspace is created, but it does. Good completeness for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for both parameters (code and requestId). The description adds value by linking requestId to register_organisation_request and clarifying that code is a 6-digit verification code. This cross-reference helps the agent understand the workflow.
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 is 'Step 2 of agentic signup', 'confirms the 6-digit code and creates the workspace', and returns an API key. This distinguishes it from sibling tools like register_organisation_request (step 1).
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 context that this is step 2, following register_organisation_request. It also instructs the agent to use the returned API key for subsequent calls. However, it 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.
remove_post_blockADestructiveInspect
Remove the block at the given index (0-based). All subsequent blocks shift up by one.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | 0-based index of the block to remove | |
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds the behavioral detail that subsequent blocks shift up by one, which is useful. However, it does not disclose additional traits like undoability or permission requirements beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action. It is concise and includes essential information without fluff. Could be slightly more structured but very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool, full schema coverage, output schema existence, and annotations, the description is adequate. It explains the core effect but lacks some context like return values (though output schema handles that) and when to prefer other tools.
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 does not add new meaning beyond the schema. It restates that the index is 0-based, which the schema also says, so the description adds minimal value for parameter understanding.
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 removes a block at a given 0-based index and explains the effect on subsequent blocks. It distinguishes itself from sibling tools like replace_post_block (which replaces) and append_post_block (which adds at end) by specifying removal.
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 replace_post_block or reorder_post_blocks. The description does not mention prerequisites or when not to use it, which is important for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_post_blocksAInspect
Reorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID | |
| orderedBlockIds | Yes | Block IDs in the desired order; must match the existing set exactly |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) do not fully characterize the mutation. The description adds the constraint about ordering and membership, but does not disclose what happens on failure (e.g., partial reorder) or whether the operation is reversible. More could be said about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Every word serves a purpose: the first sentence defines the action, the second adds a crucial constraint. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reorder tool with an output schema (not shown), the description covers the essential input semantics. It does not describe return values, but the output schema presumably handles that. Minor gap: no mention of validation or error cases, 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?
Schema coverage is 100%, so the description adds marginal value. However, it reinforces the critical constraint that the list must contain every existing block exactly once, which is not as explicit in the schema description ('must match the existing set exactly' could be interpreted loosely). This adds meaningful 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 clearly states the action ('Reorder blocks') and the resource ('blocks'), with the method 'passing block IDs in the desired order'. It is distinct from sibling tools like 'append_post_block', 'remove_post_block', and 'replace_post_block', which handle different operations on blocks.
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 reordering existing blocks but does not explicitly contrast with siblings like append/remove/replace. It provides a constraint ('must contain every existing block id exactly once') but lacks guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_post_type_fieldsAInspect
Reorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.
| Name | Required | Description | Default |
|---|---|---|---|
| postTypeId | Yes | Post type ID | |
| orderedFieldIds | Yes | Field IDs in the desired order |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=false and readOnlyHint=false. The description adds that sortOrder is updated, which is a specific behavioral consequence, but does not cover potential side effects (e.g., what happens if incomplete field list is provided) or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two clear sentences. Every word adds value: 'Reorder fields on a post type' states purpose, and 'Pass field IDs... sortOrder is updated to match' explains mechanism. No 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?
Given the tool's simplicity (2 params, output schema exists), the description covers the main intent and effect. It lacks details about validation, error handling, or whether all field IDs must be included, but these are partially covered by the schema and annotations. For a straightforward reorder tool, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the semantic that the order passed will be reflected in sortOrder, which goes slightly beyond the schema descriptions of 'Post type ID' and 'Field IDs in the desired order', but the added value is marginal.
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 'Reorder fields on a post type', specifying the exact action and resource. The sibling context includes similar reordering tools like reorder_post_blocks, but the tool name and description together clearly differentiate reordering post type fields from other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use the tool ('Pass field IDs in the desired display order'), but does not explicitly mention when to use this tool over alternatives like reorder_post_blocks or update_post_type_field. The context is clear enough from the tool name and resource, but lacks explicit exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_post_blockAInspect
Replace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update_post.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | Replacement block | |
| index | Yes | 0-based index of the block to replace | |
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (consistent with a replace operation) and destructiveHint=false. The description adds the efficiency benefit over update_post but does not disclose other behavioral traits like auth requirements or reversibility. 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 concise sentences with the main action front-loaded. Every sentence provides value: the first defines the operation and index, the second explains the benefit over the sibling update_post. 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?
Given the complexity of the block schema (many types), the description is minimal but sufficient for the tool's simple purpose. The output schema exists, so return values are covered. It could mention that the block must match one of the supported types, but the schema already does that.
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 detailed oneOf schemas for the block parameter. The description adds no additional meaning beyond what the schema provides, so baseline score 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 clearly states 'Replace a single block at the given index (0-based)', which specifies the verb and resource. It distinguishes from update_post by noting it avoids fetching the full post, differentiating it from sibling tools like update_post, remove_post_block, and append_post_block.
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 this tool: for a single block replacement without needing the entire post. It contrasts with update_post, but does not explicitly mention when not to use or provide alternatives like remove_post_block or append_post_block for other modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_agent_issueAInspect
Report a FavCRM platform issue when an agent finds a missing MCP path, tool failure, confusing schema, CLI/docs issue, or SDK fallback. Include logs, AI analysis, references, and clarification questions so the platform team can follow up.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Issue area | |
| logs | No | Relevant error messages, command output, or stack traces | |
| title | Yes | Short issue title | |
| severity | Yes | Impact level | |
| toolCalls | No | Relevant MCP/CLI/SDK calls, arguments, and outcomes | |
| aiAnalysis | Yes | Agent analysis of likely root cause and impact | |
| references | No | Source links, file paths, docs, screenshots, or IDs that support the report | |
| stepsTried | Yes | Concrete steps the agent tried before reporting | |
| workaround | No | Temporary workaround used, if any | |
| environment | No | Runtime context such as MCP URL, CLI version, token type, client, sandbox, model, OS | |
| actualBehavior | Yes | What actually happened | |
| expectedBehavior | Yes | What the agent or user expected to happen | |
| clarificationQuestions | No | Questions the platform team should ask the agent/user to resolve ambiguity |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly, non-idempotent, non-destructive. Description adds behavioral context: creating an issue report with detailed attachments, but no contradiction. It provides insight into how the report is structured without hiding any side effects.
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-loading purpose and listing key content. No wasted words; every phrase adds value. Perfectly concise for a reporting 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?
Given the tool's 13 parameters (7 required), enums, nested objects, and high schema coverage, the description provides a solid overview. It could mention output behavior or condition for use, but it is largely complete for an issue reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant detail beyond the schema—it lists high-level components but does not explain parameter relationships or constraints further. Adequate but not outstanding.
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 is for reporting FavCRM platform issues, listing specific problem areas (missing MCP path, tool failure, confusing schema, CLI/docs issue, SDK fallback) and required content. This verb+resource combination is distinct from sibling tools which are domain-specific operations.
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 states when to use (agent encountering platform issues) and what to include (logs, AI analysis, references, clarification questions). It does not explicitly mention when not to use or provide alternative tools, but the context is clear and no sibling overlaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_send_approvalAInspect
Create a merchant-owned Workroom approval request for a customer-facing send. The agent must not call send_message, send_whatsapp_message, send_test_campaign, or send_campaign directly.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | AI colleague ID that is a participant in the thread | |
| payload | Yes | Exact tool payload to execute if the merchant approves | |
| summary | Yes | Human-readable draft/recipient/campaign summary shown above the approval buttons | |
| threadId | Yes | Workroom thread ID where the approval button should appear | |
| actionType | Yes | The customer-facing action to execute only after merchant approval |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) but no destructive or idempotent hints. The description adds behavioral context: the tool creates an approval request that requires merchant approval and blocks direct sends. It does not discuss side effects or approval outcomes, but 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?
The description is extremely concise at two sentences. The first sentence states the core purpose, and the second provides critical prohibition. No wasted words; 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 the tool's complexity (5 params, nested objects, enum), the description covers the essential: purpose, key constraint (no direct send), and approval requirement. It does not detail the return value, but an output schema exists. Overall, it is sufficiently complete for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already described. The description adds minimal extra meaning beyond the schema, only reinforcing that the payload is the tool payload to execute upon approval. With full schema coverage, 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 explicitly states the tool's purpose: 'Create a merchant-owned Workroom approval request for a customer-facing send.' It uses a specific verb ('create') and resource ('approval request'), and distinguishes from sibling tools by naming the prohibited direct send functions.
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 guidance by instructing the agent not to call four specific sibling tools directly. It implies that this tool should be used when merchant approval is required for customer-facing sends. Though it lacks explicit conditions for when not to use, the prohibition provides strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_campaignAInspect
Restore a previously deleted campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Campaign ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly and non-destructive, which the description supports. However, it does not add details about what restoration entails (e.g., permissions, side effects).
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, clear sentence that is front-loaded and contains no unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is adequate but missing a mention that the campaign must have been previously deleted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'campaignId', described as 'Campaign ID'. The description adds no additional meaning 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 ('Restore') and resource ('previously deleted campaign'), clearly distinguishing it from sibling tools like delete_campaign and create_campaign.
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 undeleting campaigns but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_categoryBInspect
Restore a previously deleted CMS post category.
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | Yes | Category ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not destructive. The description adds the context of restoring a deleted category, but does not disclose potential side effects (e.g., permission requirements, impact on other data). With annotations covering safety, the description provides adequate but minimal 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, clear sentence with no unnecessary words. It is front-loaded with the key action and resource, making it easy for an agent to quickly understand 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 is simple (one parameter, output schema exists, annotations present), the description is minimally complete. However, it lacks context about preconditions or the state of the category before restoration, which could be inferred but not stated. A brief note on when this tool applies 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?
The input schema has 100% description coverage for the single parameter (categoryId), so the baseline is 3. The description does not add any additional meaning beyond what the schema provides (e.g., format, restrictions, or usage hints).
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 'Restore' and the resource 'previously deleted CMS post category', distinguishing it from sibling tools that restore other entities (e.g., restore_campaign, restore_invoice). However, it lacks specificity about the scope of restoration (e.g., whether associated posts are affected), which prevents a perfect 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?
No guidance is provided on when to use this tool versus alternatives, such as other restore tools or update_category. The description does not mention prerequisites (e.g., the category must be in a deleted state) or situations where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_invoiceAInspect
Restore a previously deleted DRAFT invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID to restore |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds context about restoring deleted drafts but lacks details on permissions, side effects, or state constraints beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no wasted words. The key elements (verb, resource, qualifier) are front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one required parameter and an output schema, the description covers the essential behavior. It could mention that the invoice must be in a deleted state, but the core action is well-defined.
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 single parameter invoiceId is fully described in the schema (100% coverage). The description adds no extra meaning beyond the schema's definition.
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 ('Restore') and the resource ('previously deleted DRAFT invoice'), distinguishing it from siblings like delete_invoice or create_invoice.
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 (restoring a deleted draft invoice) but does not explicitly state when not to use or provide alternative tools. The specificity of 'DRAFT' helps narrow use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_knowledge_documentBInspect
Restore a previously deleted knowledge document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | Knowledge document ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal behavioral context beyond the verb 'Restore'. No mention of idempotency, side effects, or what happens if the document is already active. Annotations do not contradict but the description adds little value.
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 superfluous words. It is appropriately concise, though it could benefit from more structure.
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 presence of an output schema and only one parameter, the description is still too sparse. It lacks context on state changes, error conditions, or expected behavior, leaving significant gaps for a restoration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add any meaning beyond the schema's 'Knowledge document ID'. 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 clearly states the verb 'Restore' and the resource 'previously deleted knowledge document', distinguishing it from other restore tools like restore_campaign. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives or any prerequisites (e.g., document must be deleted). The description does not help an agent decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_postBInspect
Restore a previously deleted CMS post.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which are consistent with a restore operation. The description adds minimal behavioral context beyond what annotations imply. It could elaborate on what the restore entails (e.g., restoring original content and visibility).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. While it is very short, it is appropriately sized for a simple tool, though it could benefit from a bit more detail without becoming verbose.
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 (1 parameter, 100% schema coverage, and presence of an output schema), the description is minimally complete. However, it lacks context about the scope of restoration (e.g., draft status, metadata) or any side effects, 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?
Schema coverage is 100% for the single parameter postId, and the schema already describes it as 'The post ID'. The tool description adds no additional meaning, meeting the baseline of 3 as per guidelines.
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 ('Restore') and the resource ('a previously deleted CMS post'), distinguishing it from siblings like restore_campaign or restore_category. It is specific and 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 provides no guidance on when to use this tool versus alternatives (e.g., create_post, update_post). It does not specify prerequisites, such as the post being in a deleted state, or mention any context like required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_post_typeAInspect
Restore a previously deleted custom post type.
| Name | Required | Description | Default |
|---|---|---|---|
| postTypeId | Yes | Post type ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description states 'restore a previously deleted custom post type', which implies undoing a deletion. Annotations show readOnlyHint=false and destructiveHint=false, but no additional behavioral context is provided. 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 the verb and resource, 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?
Simple tool with one parameter and output schema. Description is adequate but lacks usage guidelines and behavioral details, which would be helpful for a complete 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?
Schema coverage is 100% for the single required parameter postTypeId with a brief description. The tool description adds no further meaning 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 specific verb 'restore' and resource 'custom post type', clearly indicating the action. Distinguishes from sibling tools like delete_post_type or update_post_type.
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 vs alternatives such as restore_post_type_field or restore_post. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_post_type_fieldAInspect
Restore a previously deleted field on a post type schema.
| Name | Required | Description | Default |
|---|---|---|---|
| fieldId | Yes | Field ID | |
| postTypeId | Yes | Post type ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, so the description's mention of 'previously deleted' adds value by specifying a precondition. However, it does not disclose other behavioral traits like idempotency or side effects beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose with no unnecessary words. It is well-structured and front-loaded with the key action.
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 restoration operation, the description provides the core intent but lacks details on error conditions (e.g., what if the field doesn't exist or isn't deleted), permissions, or output. Given the presence of an output schema, completeness is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already defines both parameters ('fieldId' and 'postTypeId'). The description adds no additional meaning or context for the parameters, 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 the action ('restore') and the resource ('a previously deleted field on a post type schema'). It distinguishes from sibling tools like 'delete_post_type_field' and 'create_post_type_field' by specifying that the field must have been previously deleted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a field has been deleted, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives or prerequisites. More context would help the agent decide between this and other field-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_promotionAInspect
Restore a previously deleted promotion.
| Name | Required | Description | Default |
|---|---|---|---|
| promotionId | Yes | Promotion ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds the action 'restore' without contradicting these. However, it does not elaborate on potential side effects or state prerequisites beyond being 'previously deleted'.
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 efficiently conveys the core 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 restore operation with an output schema present, the description is mostly complete. It could mention prerequisites or error conditions, but the existing text is adequate for basic usage.
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 provides 100% coverage for the single parameter with a description 'Promotion ID'. The tool description adds context that the promotion was previously deleted, but does not provide additional semantic 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 clearly states the action ('restore') and the resource ('previously deleted promotion'). It effectively distinguishes from sibling tools like 'delete_promotion' and 'create_promotion'.
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 clear context that this tool is for restoring previously deleted promotions. However, it does not explicitly mention when not to use it or list alternative tools, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_service_packageAInspect
Restore a previously deleted service package by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes | Service package ID to restore |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=false, so description adds limited value. It does disclose the 'restore' action implying a write operation, but lacks details on permissions, side effects, or whether the operation is reversible.
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?
Extremely concise, single sentence, front-loaded with verb and object. No extraneous 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 simplicity of the tool (one parameter, clear action), the description is sufficient. It does not explain return values, but an output schema exists. No major gaps, though could mention if the package must be previously deleted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the only parameter 'packageId' having a clear description. The description does not add extra semantic context 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 clearly states the action ('Restore') and the target resource ('service package'), with the method ('by ID'), distinguishing it from sibling restore tools for other entities.
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, such as when a package is deleted or prerequisites like the package must exist in a deleted state. No mention of avoiding conflicts or complementing delete_service_package.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_subscriptionBInspect
Resume a paused subscription back to active.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the action, but does not disclose potential side effects, error conditions, or authorization needs beyond what annotations provide. Annotations already indicate non-read-only and non-destructive, so no contradiction, but little added value.
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, front-loaded with the action. However, it could be slightly expanded for clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (one required parameter, with output schema), the description is adequate but lacks details on expected behavior for edge cases (e.g., invalid subscription ID, already active state). Slightly below complete for a minimal 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 does not add additional meaning beyond the schema's description of 'Subscription ID'. Baseline 3 is appropriate as schema already documents the 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 clearly states the tool resumes a paused subscription to active, using a specific verb and resource, and distinguishes from sibling tools like pause_subscription and cancel_subscription.
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, such as prerequisites (subscription must be paused), or when not to use it (e.g., if already active or cancelled). No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_audit_actionADestructiveInspect
Revert an audited action by restoring the captured before snapshot. Only works for allowlisted target tables with full before/after audit snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for reverting this action | |
| auditLogId | Yes | Audit log ID to revert |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds behavioral context: it restores the before snapshot, implying it overwrites current data, and notes the allowlist constraint. There is 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 concise with two sentences: one stating the purpose and one adding a key constraint. No wasted words, front-loaded with the primary action.
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 purpose, constraint, and snapshot requirement. Output schema exists, so return values need not be explained. It could mention side effects or reversibility, but it is fairly complete for a revert tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add extra meaning beyond what the schema provides for reasons and auditLogId. Baseline 3 is appropriate as the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: reverting an audited action by restoring the captured before snapshot. It specifies the scope (allowlisted target tables with full snapshots), distinguishing it from sibling restore tools that work on specific entities.
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 clear context on when to use this tool: it only works for allowlisted target tables with full before/after audit snapshots. It does not explicitly state when not to use or mention alternatives, but the constraint is sufficient for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_knowledge_urlAInspect
Fetch a URL's content into the knowledge base. Server crawls the URL, stores the response body in R2, returns the new document ID. Failures store the row with status='failed'. Use for adding marketing pages, FAQ docs, or external references the agent should be aware of.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch (must be https / http and publicly reachable) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it stores the response body in R2, returns a document ID, and that failures set status to 'failed'. Annotations show destructiveHint=false and readOnlyHint=false, which are consistent with a mutation tool. 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?
The description is three sentences, front-loaded with the main action, and contains no redundant or unnecessary words. 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?
For a simple tool with one parameter, the description covers the action, output, and failure behavior. An output schema exists, so the description need not detail return values. It is complete and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one parameter and 100% schema coverage, the schema already describes the URL format and requirement. The description adds no additional semantic value beyond what the schema provides, so 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 clearly states the verb 'Fetch' and the resource 'URL's content into the knowledge base'. It distinguishes itself from sibling tools like add_knowledge_text and query_company_knowledge by specifying that it crawls a URL and stores the response.
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 explicit use cases: 'marketing pages, FAQ docs, or external references'. However, it does not explicitly state when not to use it or contrast it directly with add_knowledge_text, leaving slight ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audit_logsARead-onlyIdempotentInspect
Search audit logs by free text across action, resource, resource ID, changes JSON, and metadata JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return | |
| query | Yes | Text to search for | |
| createdAfter | No | ISO timestamp lower bound | |
| createdBefore | No | ISO timestamp upper bound |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds the scope of search fields but does not disclose other behavioral traits like pagination, ordering, or case sensitivity. With annotations carrying most of the burden, the description provides moderate additional value.
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 succinctly and clearly conveys the tool's purpose. No unnecessary words 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?
Given the tool's complexity (4 parameters, output schema exists, detailed annotations), the description adequately states purpose and search scope. However, it lacks details on search behavior (e.g., case sensitivity, partial matching, boolean operators) that would be helpful for an AI agent. The output schema may compensate partially, but the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds meaning by specifying which fields the query parameter searches across (action, resource, resource ID, changes JSON, metadata JSON), which is not in the schema description for 'query'. This provides added 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 that the tool searches audit logs by free text across multiple fields (action, resource, resource ID, changes JSON, metadata JSON). This distinguishes it from siblings like list_audit_logs (simple listing) and get_audit_log (single log).
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 free-text search across specific fields, providing clear context. However, it does not explicitly state when to use this tool versus alternatives (e.g., list_audit_logs for unfiltered listing, get_audit_log for a specific log).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_crmARead-onlyIdempotentInspect
Search across CRM accounts and contacts by name, email, or phone.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max per entity (default 10) | |
| query | Yes | Search string |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to re-state safety. However, it adds no additional behavioral context (e.g., pagination, result format, rate limits). Without contradiction, a score of 3 is appropriate given annotations carry the safety narrative.
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 10-word sentence that is fully front-loaded with the core purpose. No wasted words; every token 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 existence of an output schema and annotations, the description is minimally adequate. It specifies the entity types and search fields but omits details like default limit, result ordering, or behavior when no results. For a simple search tool, this is acceptable but not thorough.
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 search fields 'by name, email, or phone', which clarifies how to use the 'query' parameter beyond its schema description 'Search string'. With 100% schema coverage, this goes beyond baseline 3 by providing practical usage hints.
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 searches CRM accounts and contacts by name, email, or phone. It specifies the resource (CRM entities) and the search fields, distinguishing it from sibling search tools like search_audit_logs or search_members.
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., list_contacts, list_accounts, or other search tools). No exclusions or context provided, leaving the agent to infer usage without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_membersARead-onlyIdempotentInspect
Search and filter members/accounts. Supports text search, date ranges, booking/activity history, membership tier, tags, and more. Use lastBookingBefore/inactiveDays to find inactive members.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort column: name, email, or createdAt | |
| limit | No | Max results (default 20) | |
| order | No | Sort order | |
| search | No | Name, email, or phone to search | |
| source | No | Filter by account source | |
| tagIds | No | Filter by tag IDs | |
| tierId | No | Filter by membership tier ID | |
| lifeStage | No | Filter by life stage | |
| hasBooking | No | Filter to members with/without any booking | |
| createdAfter | No | ISO date — accounts created after this date | |
| inactiveDays | No | Members with no activity in the last N days | |
| createdBefore | No | ISO date — accounts created before this date | |
| hasMembership | No | Filter to members with active membership | |
| lastBookingAfter | No | ISO date — members who have a booking after this date | |
| membershipStatus | No | Filter by membership status | |
| lastActivityAfter | No | ISO date — members with activity after this date | |
| lastBookingBefore | No | ISO date — members whose last booking is before this date (or have no bookings) | |
| lastActivityBefore | No | ISO date — members with no activity since this date |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, so no contradiction. Description adds behavioral context about supported filters (text search, date ranges, booking/activity history, etc.), which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main action. Every sentence adds value, no fluff. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 18 optional parameters and an output schema (not shown), the description covers main capabilities and gives a concrete usage example. It does not explicitly state it returns a list, but the name implies that.
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 descriptions for all 18 parameters. Description adds minimal extra beyond the schema, only a usage tip linking two parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Search and filter' with clear resource 'members/accounts'. It lists supported filters (text search, date ranges, etc.) and distinguishes from sibling tools like get_member_profile, which retrieves a single member.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage tip 'Use lastBookingBefore/inactiveDays to find inactive members.' However, it does not mention when not to use or compare to alternative tools like list_bookings or get_member_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_resource_availabilityBIdempotentInspect
Add an availability window for a resource. Use day-of-week + recurring=true for weekly schedules, or a specific date for one-off blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD for a specific date instead of dayOfWeek | |
| type | No | Default available | |
| endTime | Yes | HH:MM (24h) | |
| dayOfWeek | No | Day of week (0=Sun..6=Sat) | |
| startTime | Yes | HH:MM (24h) | |
| resourceId | Yes | Resource ID | |
| isRecurring | No | Default true |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent behavior and non-destructive nature. The description adds little beyond 'Add', not clarifying if it creates or overwrites existing windows. Given annotations provide safety profile, description's contribution is minimal but not contradictory.
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 concise sentence with two clear parts, front-loading the main action. No redundant words. Could be improved by including mention of type parameter, but overall efficient.
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?
Describes the primary use cases (recurring vs one-off) but omits the critical 'type' parameter (available/blocked), which is essential for full understanding. Also does not note that isRecurring defaults to true. With a moderate number of parameters (7) and output schema present, more detail 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?
Schema description coverage is 100%, so base is 3. The tool description does not add any parameter information beyond what the schema provides. Also, the schema's dayOfWeek description ('0=Sun..6=Sat') contradicts the enum values ('mon-sun'), but the description doesn't clarify. No added value from 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?
Clearly states it adds an availability window for a resource, and distinguishes between weekly recurring (dayOfWeek + recurring=true) and one-off (specific date). However, it does not explicitly mention that the tool can also set 'blocked' windows via the type parameter, which limits full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on using dayOfWeek vs date for different schedule types. Does not mention when not to use the tool or compare with sibling tools like 'set_staff_availability' for staff-specific scheduling. Lacks external alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_staff_availabilityAIdempotentInspect
Add an availability window for a staff member (companyMembers.id). Use day-of-week + recurring for weekly schedules, or a specific date for one-off changes.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD for a specific date instead of dayOfWeek | |
| type | No | Default available | |
| endTime | Yes | HH:MM (24h) | |
| memberId | Yes | companyMembers.id of the staff | |
| dayOfWeek | No | Day of week (0=Sun..6=Sat) | |
| startTime | Yes | HH:MM (24h) | |
| isRecurring | No | Default true |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds context on the two scheduling modes (recurring vs. date-specific), which is behavioral info beyond annotations. It doesn't mention what happens on overlap or update semantics, which would be helpful, but still adds value.
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, no fluff, front-loaded with the core purpose. Every sentence serves a clear function: stating the action and providing usage guidance.
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 effectively covers the two main use cases but omits key details: it doesn't mention that the type parameter can be 'blocked' (only 'available' implied), nor that isRecurring defaults to true. Given 7 parameters and the presence of an output schema, the description is incomplete on these points.
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 individual parameter descriptions. The description adds semantic grouping by explaining the relationship between date, dayOfWeek, and isRecurring (recurring vs one-off). This provides deeper meaning beyond the schema's individual field 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 clearly states the verb 'Add' and the resource 'availability window for a staff member'. It distinguishes the two main modes (recurring vs. one-off) and, given the sibling context, is distinct from set_resource_availability and other staff 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 explicitly tells the agent to use day-of-week + recurring for weekly schedules and date for one-off changes, providing clear context for when to use each mode. It doesn't explicitly list when not to use, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_companyAInspect
Switch the current session to a different company/organisation. Returns a new access token scoped to the target company. All subsequent tool calls will operate on the new company.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | The company ID to switch to (use list_my_companies to find available IDs) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only behavior. The description adds important context: the tool returns a new access token and that all subsequent calls operate on the new company. It does not contradict annotations, though it could mention token invalidation or side effects.
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, front-loaded with the main action, and every sentence adds value. No unnecessary words 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?
Given the tool's simplicity, the description covers what it does, what it returns, and the behavioral impact on subsequent calls. The presence of an output schema means return values need not be detailed further. The description is complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter companyId is fully described in the schema with a clear purpose and hint to list_my_companies. The description adds no extra semantic detail beyond what the schema provides, and schema coverage is 100%, so 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 clearly states the verb 'Switch the current session' and specifies the resource: 'different company/organisation'. It also notes the tool returns a new token and affects subsequent calls, distinguishing it from sibling tools like list_my_companies that only list companies.
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 (to change company context) but lacks explicit alternatives or exclusions. The parameter description references list_my_companies, providing indirect guidance. However, it could be clearer about prerequisites 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.
update_booking_settingsAIdempotentInspect
Update global booking settings. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| showCoupon | No | Show coupon field in booking flow | |
| calendarStyle | No | Booking flow calendar presentation | |
| showAccessPass | No | Show access pass/package options in booking flow | |
| cooldownMessage | No | Optional message shown when cooldown blocks a booking | |
| blockUntilFinished | No | Block customers from booking again while they have active bookings | |
| globalCooldownDays | No | Minimum days between customer bookings, or null to disable | |
| bookingReminderEnabled | No | Send the default pre-booking reminder | |
| sameDayReminderEnabled | No | Send an additional same-day reminder before booking start | |
| allowMemberCancellation | No | Allow members to cancel bookings from the customer portal | |
| bookingReminderLeadHours | No | Hours before booking start for the default reminder | |
| hideUnavailableTimeslots | No | Hide unavailable timeslots instead of showing them as full | |
| sameDayReminderLeadHours | No | Hours before booking start for the same-day reminder | |
| requireBookingConfirmation | No | Require merchant confirmation before bookings are confirmed | |
| minimumAdvanceBookingMinutes | No | Minutes before slot start when customer booking closes. null uses service duration; 0 disables cutoff | |
| memberCancellationCutoffHours | No | Hours before booking start when member cancellation closes, or null for no cutoff |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds the 'global' scope but does not disclose further behavioral traits like side effects on other settings or concurrency. Bar is lowered by annotations, so a 3 indicates adequate but not extra insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The purpose and usage hint are front-loaded, and every word earns its place. Highly efficient.
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 15 parameters and an output schema, the description does not need to explain return values. It covers the core purpose and a critical usage pattern. Minor improvement could mention that it's a global scope update, but it's already implied.
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 parameters. The description goes beyond by advising partial updates ('Pass only the fields you want to change'), which is not inherent in the schema structure.
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 updates global booking settings, using a specific verb ('Update') and resource ('global booking settings'). It distinguishes from sibling 'get_booking_settings' which is read-only.
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 the key guideline 'Pass only the fields you want to change,' implying partial updates. It does not explicitly mention when not to use or alternative tools, but the context from sibling names helps clarify its update role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaignAIdempotentInspect
Update an existing campaign. Channel cannot be changed after creation. Pass only fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name | |
| status | No | Status filter | |
| segmentId | No | Segment ID | |
| campaignId | Yes | Campaign ID | |
| scheduledAt | No | Scheduled timestamp (ISO 8601) | |
| recipientIds | No | Explicit recipient user IDs | |
| channelConfig | No | For email, use subject + htmlBody + optional plainTextBody. Legacy html is normalized to htmlBody. | |
| recipientSource | No | Recipient source: segment | tier | manual |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: partial update semantics and channel immutability. Annotations indicate non-read-only, non-destructive, idempotent. 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?
Two concise sentences. Front-loaded with purpose, includes key constraints without unnecessary 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 8 parameters (including nested objects) and an output schema, the description covers essential behavioral aspects (partial update, channel immutability). Could elaborate on nested object structure (e.g., channelConfig) but output schema likely fills 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 coverage is 100% so baseline is 3. The description adds 'Pass only fields to change' which reinforces partial update, but the schema description for 'recipientSource' is inconsistent with its enum values (lists 'segment | tier | manual' while enum includes 'all', 'segment', 'individual', 'csv', 'list'). This may mislead.
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 'Update' and resource 'campaign', distinguishing it from siblings like create_campaign, delete_campaign, and restore_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on partial updates ('Pass only fields to change') and an immutability constraint ('Channel cannot be changed after creation'). However, no mention of when to use over alternatives like validate_campaign or specific prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryAIdempotentInspect
Update a CMS post category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name | |
| slug | No | URL slug | |
| sortOrder | No | Sort order (lower = earlier) | |
| categoryId | Yes | Category ID | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds no additional behavioral context (e.g., side effects, authorization needs). 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?
The description is a single concise sentence with no filler. Every word is relevant.
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 update tool with a clear schema and output schema, the description is mostly complete. However, it does not explicitly state that it performs a partial update (only provided fields are changed), which could be inferred but is not stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description adds no extra 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 uses a specific verb 'Update' and identifies the resource as 'CMS post category'. It clearly distinguishes from sibling tools like create_category, delete_category, and list_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 provides no guidance on when to use this tool versus alternatives (e.g., create_category, delete_category). There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactBIdempotentInspect
Update fields on an existing contact.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name | |
| No | Email address | ||
| phone | No | Phone number | |
| jobTitle | No | Job title | |
| contactId | Yes | The contact ID | |
| isPrimary | No | Mark as the primary contact |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true). Description adds 'update fields' but offers no additional behavioral context (e.g., whether fields are overwritten or merged, or what happens to omitted fields). Acceptable given annotations cover core 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?
Single sentence is concise and front-loaded. Every word earns its place. Could be slightly more informative, 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?
Despite good annotations and full schema, the description lacks context about mutation effects (e.g., does it require contactId to exist? Does it return the updated contact?). Output schema exists but is not referenced. For a write operation, more guidance is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the schema. Description adds no extra 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?
Description states 'Update fields on an existing contact,' which clearly specifies verb (update) and resource (contact). It's sufficiently clear but does not differentiate from other update_* tools; however, the resource names inherently distinguish 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?
No guidance on when to use this tool vs alternatives like create_contact or other update tools. There is no mention of prerequisites (e.g., contactId must exist) or when to prefer this over similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_deal_stageBIdempotentInspect
Move a deal to a different pipeline stage.
| Name | Required | Description | Default |
|---|---|---|---|
| stage | Yes | New stage | |
| dealId | Yes | The deal ID | |
| probability | No | Optional win probability (percent string) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true, but the description adds no further behavioral insight. It doesn't mention reversibility, side effects, or whether the move is immediate, relying solely on 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, clear sentence with no redundant information. It is front-loaded 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?
Given the tool's simplicity (3 params, output schema exists), the description adequately covers the primary action. It doesn't elaborate on potential constraints or outcomes, but for a straightforward state change, it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented (e.g., 'New stage' for stage). The description adds minimal extra meaning beyond the schema, so 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 'Move a deal to a different pipeline stage' clearly states the action (move) and resource (deal to a different stage). It is specific and distinguishes from sibling tools like list_deals or update_contact, as it uniquely focuses on deal stage transitions.
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, nor does it specify prerequisites or scenarios where another tool would be more appropriate. It merely states the function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_order_statusAIdempotentInspect
Update the status of a shop order (e.g. confirm, ship, cancel).
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | New order status | |
| orderId | Yes | The order UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false), with idempotentHint=true. The description adds no behavioral detail beyond confirming mutation via 'Update'. It does not mention side effects, permission requirements, or that the status change is idempotent according to 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, focused sentence that immediately conveys the tool's purpose. No redundant information; every word earns its place. Exemplary conciseness for a simple state-update 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 2-parameter tool with high schema coverage and output schema, the description is minimally adequate. It misses context like idempotency (annotated), allowed status transitions, or what the response contains. Could be improved with a note on idempotency or required permissions.
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 parameters are well-documented. Description adds examples of status values (confirm, ship, cancel), which are a subset of the enum, providing slight extra guidance. Baseline 3 is appropriate as the schema already defines each parameter clearly.
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 updates the status of a shop order, with examples like confirm, ship, cancel. This distinguishes it from sibling tools that update other resources (e.g., update_ticket_status) and aligns with the tool's name and title.
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 to change an order's status, but does not explicitly mention when not to use it or provide alternatives. No context on prerequisites or comparisons to siblings like cancel_booking or complete_booking, which might also affect orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_outletAIdempotentInspect
Update an existing shop outlet/location by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Outlet ID (UUID) | |
| name | No | Outlet name | |
| phone | No | Contact phone | |
| address | No | Street address | |
| logoUrl | No | Logo URL | |
| isActive | No | Whether outlet is active | |
| latitude | No | Latitude | |
| longitude | No | Longitude | |
| sortOrder | No | Display sort order | |
| acceptsOrders | No | Whether outlet accepts online orders |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds no further behavioral context such as permission requirements or error conditions. 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?
A single, front-loaded sentence that efficiently communicates the tool's purpose without extraneous words. 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?
Given the presence of output schema, high schema coverage, and annotations, the description is mostly complete. However, it could mention that the update is partial (only id required) and what happens if the outlet doesn't exist.
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 covers 100% of parameters with descriptions. The description adds only 'by ID', which is already implied by the required 'id' field. No additional 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?
The description clearly specifies the action ('Update'), the resource ('existing shop outlet/location'), and the identifier ('by ID'). This effectively distinguishes it from sibling tools like 'create_outlet' and 'list_outlets'.
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 an existing outlet needs modification, but provides no explicit guidance on when not to use it or alternatives. For a tool with many siblings, clearer differentiation would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_postAIdempotentInspect
Update an existing CMS post (any post type). Only provided fields are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | Custom field values; merged shallowly with existing meta. Use this for structured data, not excerpt. | |
| slug | No | URL slug (must be unique per company+type). | |
| type | No | Change post type (e.g. blog_post → treatment). Slug is re-checked for uniqueness under the new type. | |
| title | No | Post title | |
| blocks | No | Replaces the entire ordered block array. Use append_post_block / replace_post_block / remove_post_block / reorder_post_blocks for per-block edits. Each block: { id, version, type, data }. Types: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product, columns. | |
| postId | Yes | The post ID | |
| status | No | Post status | |
| tagIds | No | Tag IDs to sync (replaces existing tags) | |
| excerpt | No | Plain-text summary only — never JSON. Omit to leave unchanged. | |
| parentId | No | Parent post ID for nested types. | |
| seoTitle | No | SEO title override | |
| sortOrder | No | Sort order (lower = earlier) | |
| visibility | No | Visibility | |
| categoryIds | No | Category IDs | |
| publishedAt | No | Publish timestamp (ISO 8601) | |
| featuredImage | No | Cover image URL | |
| seoDescription | No | SEO description override |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (writes) and destructiveHint=false, while the description adds partial update semantics. However, it does not warn that the blocks parameter replaces the entire block array, which is a destructive trait; this nuance is only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and key behavior ('Only provided fields are changed'). No extraneous 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 complexity (17 params, nested objects, output schema exists), the description is sufficient. It covers the essential behavior and leverages schema for details. Could mention type change or slug re-check, but not required.
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 description adds minimal value beyond already documented parameter semantics. The general partial update statement is helpful but not specific to any 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 clearly states the verb ('Update') and the resource ('existing CMS post, any post type'), and distinguishes from siblings like create_post or delete_post by specifying 'existing' and 'Only provided fields are changed'.
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 provide explicit guidance on when to use this tool versus alternatives like append_post_block for per-block edits. The schema includes that advice, but the tool description itself lacks 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.
update_post_typeAIdempotentInspect
Update a custom post type. Built-in types (blog_post, page) cannot be modified.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Icon name or URL | |
| label | No | Display label | |
| sortOrder | No | Sort order (lower = earlier) | |
| postTypeId | Yes | Post type ID | |
| labelPlural | No | Plural display label | |
| supportsBlocks | No | Allow content blocks (rich body) | |
| supportsExcerpt | No | Allow an excerpt field | |
| supportsNesting | No | Allow parent/child nesting | |
| supportsCategories | No | Allow categories on this post type | |
| supportsFeaturedImage | No | Allow a featured image |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds a critical behavioral constraint that built-in types are immutable, which is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the purpose and a key restriction, with 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?
Given the existence of an output schema and annotations, the description covers the essential points: purpose and a critical limitation. It is adequate for a mutation tool with 10 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 100%, so all parameters are already documented. The description adds no additional parameter-specific meaning, which aligns with 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 clearly specifies the verb 'Update' and the resource 'custom post type', distinguishing it from sibling tools like create_post_type or delete_post_type. The added constraint about built-in types further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-not-to-use guideline by stating that built-in types (blog_post, page) cannot be modified. It does not explicitly mention when to use this vs other update tools, but the naming makes the purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_post_type_fieldAIdempotentInspect
Update a field on a post type schema. Changing fieldType or flipping required=true is blocked when posts already use the field unless force=true is passed.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Override safety guards. Required to change fieldType or flip required=true on a field that already has data in posts. | |
| label | No | Display label | |
| fields | No | Child fields for fieldType="repeater". | |
| fieldId | Yes | Field ID | |
| options | No | For URL fields, { uploadable: true } enables file upload while preserving a URL string in meta. | |
| helpText | No | Help text shown next to the input | |
| required | No | Whether the field is required | |
| fieldType | No | Field type | |
| sortOrder | No | Sort order (lower = earlier) | |
| postTypeId | Yes | Post type ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false. The description adds critical behavioral context: changing fieldType or flipping required=true is blocked unless force=true is passed. This informs the agent about potential failures and how to override safety guards, beyond what annotations provide. 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 consists of two sentences: the first clearly states the tool's primary function, and the second provides a crucial behavioral detail. Every sentence is purposeful, and the information is front-loaded. 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?
Given the tool complexity (10 parameters, 2 required) and the presence of an output schema, the description covers the main purpose and the key behavioral constraint (force parameter). It does not detail every parameter, but the schema fills that gap. It is almost complete for an agent to use correctly, though it could briefly note that optional parameters can be updated independently.
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 explains the force parameter's purpose in context, but this largely mirrors the schema's description. It adds minimal extra value over the schema for other parameters. Thus, it meets baseline but does not significantly exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a field on a post type schema,' specifying the verb and resource. It distinguishes from sibling tools like create, delete, list, and restore by the 'update' operation. It also adds a specific behavioral detail about blocked changes and the force parameter, making the purpose highly specific and distinctive.
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 an existing field needs modification, and it explicitly notes the force parameter for cases where changes are blocked. However, it does not explicitly mention when not to use this tool (e.g., for creating new fields) or provide alternatives, though the sibling tools make the distinction clear. The context is adequate but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productAIdempotentInspect
Update an existing product. Only provided fields are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU code | |
| name | No | Product name | |
| price | No | Price as decimal string | |
| status | No | Product status | |
| productId | Yes | The product ID | |
| categoryIds | No | Category IDs (first is primary). Replaces all existing categories. | |
| description | No | Product description | |
| memberPrice | No | Members-only price | |
| discountPrice | No | Discounted price |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotency and non-destructiveness. The description adds the key behavior that only provided fields are changed, which is not captured by 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 extremely concise: two sentences with no unnecessary words. Every sentence provides essential 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 high schema coverage and presence of an output schema, the description is adequate. It covers the core behavior (partial update) without extra detail, meeting the needs for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema provides parameter meaning. The description adds the partial update context but does not elaborate on individual parameters beyond what the schema already does.
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 explicitly states 'Update an existing product', which clearly identifies the verb and resource. It distinguishes from siblings like create_product and list_products.
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 includes 'Only provided fields are changed', indicating a partial update, but does not explicitly state when to use versus alternatives (e.g., create) or prerequisites like product existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_promotionAIdempotentInspect
Update an existing promotion. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Promotion code | |
| name | No | Name | |
| type | No | Type | |
| value | No | Discount value (numeric or decimal string) | |
| endsAt | No | End timestamp (ISO 8601) | |
| status | No | Status filter | |
| startsAt | No | Start timestamp (ISO 8601) | |
| promotionId | Yes | Promotion ID | |
| usageLimitTotal | No | Total usage limit across all customers | |
| usageLimitPerCustomer | No | Usage limit per customer |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and non-destructive; the description adds the partial update behavior, enhancing transparency without 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?
Two sentences with no filler, front-loading the core action and usage hint.
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 is adequate for a simple update tool with full schema and output schema; could mention idempotency but annotations already cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents each parameter; the description adds only the general note about partial updates, providing minimal extra 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?
The description clearly states the verb 'Update' and the resource 'existing promotion', distinct from create/delete siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the instruction 'Pass only the fields you want to change' for partial updates, but does not explicitly exclude alternatives or mention 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.
update_serviceAIdempotentInspect
Update an existing booking service. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name | |
| price | No | Decimal string, e.g. "80.00" | |
| status | No | Status filter | |
| capacity | No | Participants per slot | |
| serviceId | Yes | Service ID to update | |
| categoryId | No | Category ID | |
| visibility | No | Visibility: public | members_only | hidden | |
| description | No | Description | |
| requireLogin | No | If true, guests cannot book without an account | |
| requiresStaff | No | Whether the service requires staff assignment | |
| commissionType | No | Commission type: "fixed" or "percentage" | |
| commissionValue | No | Commission amount as decimal string | |
| cooldownMinutes | No | Cooldown minutes between bookings | |
| durationMinutes | No | Duration of one booking in minutes | |
| requiresResource | No | Whether the service requires a resource (room/equipment) | |
| commissionCurrency | No | Commission currency (ISO code) | |
| requiresConfirmation | No | If true, bookings start pending and need explicit confirmation |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, non-readOnly, and idempotent behavior. The description adds the nuance of partial updates, which goes beyond the schema and 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 that efficiently conveys the purpose and usage pattern. 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?
Given 17 parameters, full schema descriptions, and an output schema, the description is adequate. It could mention that the service must exist, but the required serviceId parameter implies this.
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 100% description coverage, so baseline is 3. The description adds value by explaining that only fields to change should be passed, clarifying the partial update 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 clearly states 'Update an existing booking service', which is a specific verb and resource. It distinguishes itself from siblings like create_service and delete_service.
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 instructs 'Pass only the fields you want to change', which is a clear usage pattern for partial updates. However, it does not explicitly mention when not to use this tool or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_service_packageAIdempotentInspect
Update an existing service package. Pass only the fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name | |
| price | No | Decimal string, e.g. "80.00" | |
| status | No | Status filter | |
| packageId | Yes | Service package ID to update | |
| validDays | No | Validity period in days | |
| description | No | Description | |
| sessionCount | No | Number of sessions in the package | |
| applicableType | No | What this package applies to: services | products | both | |
| applicableItems | No | Item IDs the package can be redeemed against |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description mentions partial update behavior, which adds value beyond annotations. However, it does not explicitly note idempotency (annotated true) or any other side effects. Missing details like whether unspecified fields remain unchanged, but that is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and essential. No wasted words. Perfectly concise for the complexity.
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 (9 params, partial update, idempotent) and the existence of an output schema, the description covers the key points adequately. It could add more detail about return behavior, but the output schema likely covers that.
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 parameters are well-documented in the schema. The description adds the critical context that it's a PATCH-like operation, which enhances understanding beyond individual parameter 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?
Description clearly states verb 'Update' and resource 'service package', distinguishing it from siblings like create, delete, list, get, and restore. It also specifies partial update behavior.
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 'Pass only the fields you want to change' gives clear guidance on how to use the tool for partial updates. While it doesn't explicitly mention when not to use it or compare with alternatives, the context from sibling tools fills that gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_service_scheduleAIdempotentInspect
Update a service schedule window. Pass only fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date (YYYY-MM-DD) | |
| notes | No | Free-form notes | |
| endTime | No | End time (HH:mm) | |
| staffId | No | Staff member ID | |
| byWeekday | No | Weekdays (0=Mon..6=Sun) for weekly recurrence | |
| startTime | No | Start time (HH:mm) | |
| recurrence | No | Recurrence rule: none | daily | weekly | monthly | |
| resourceId | No | Resource ID (room/equipment) | |
| scheduleId | Yes | Schedule ID | |
| maxCapacity | No | Maximum capacity for this slot | |
| recurrenceEndDate | No | Recurrence end date (YYYY-MM-DD) | |
| recurrenceInterval | No | Recurrence interval (e.g. every N weeks) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description adds the partial update hint but does not disclose other behaviors like authorization needs or side effects.
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 concise sentences, front-loaded with the key action, with no superfluous 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 complex tool with 12 parameters and an output schema, the description covers the core purpose and partial update behavior adequately, though it could mention more about expected side effects or response.
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 descriptions for all 12 parameters. The tool description does not add meaning beyond what the schema provides, beyond reinforcing partial updates.
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 'Update' and the resource 'service schedule window', making it distinct from siblings like 'create_service_schedule'. It also includes a usage hint.
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 instruction 'Pass only fields to change.' guides partial updates but does not explicitly mention when to use this tool versus alternatives like 'create_service_schedule' or 'get_service_detail'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_surveyAIdempotentInspect
Update a survey draft or publishing configuration. Use questionBlocks to replace the ordered form block list.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | URL slug | |
| title | No | Survey title | |
| openAt | No | Optional ISO datetime when the survey opens | |
| status | No | Survey status | |
| closeAt | No | Optional ISO datetime when the survey closes | |
| settings | No | Survey settings such as allowMultipleResponses, collectEmail, collectIpAddress, requireAuthentication, showProgress, successMessage | |
| surveyId | Yes | Survey ID | |
| visibility | No | Survey access mode | |
| description | No | Survey description | |
| questionBlocks | No | Ordered survey question blocks |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (non-readonly, non-destructive, idempotent). It adds useful detail about replacing block list, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: first states purpose, second provides key usage instruction. 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 full schema coverage and output schema present, description suffices by covering core action and a specific parameter behavior. Leaves parameter details to 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 covers all 10 parameters with descriptions. Description adds value by hinting at questionBlocks usage, but repeats no param details. 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?
Description clearly states the tool updates a survey draft or publishing configuration, with a specific action on questionBlocks. It distinguishes from sibling tools like create_survey and archive_survey.
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?
Description gives explicit instruction on using questionBlocks to replace block list. While not exhaustive on when to avoid, it provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskAIdempotentInspect
Update a task (status, priority, assignee, due date, completion).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title | |
| status | No | Status filter | |
| taskId | Yes | The task ID | |
| dueDate | No | Due date (ISO 8601) | |
| priority | No | Priority | |
| assigneeId | No | Assignee user ID | |
| description | No | Description |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description adds only minimal context. It lists some updatable fields but does not clarify whether updates are partial or full replacements, or discuss authorization needs or side effects.
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 9 words, very concise. It is front-loaded with the verb and resource. However, it could be slightly expanded to cover more fields or usage notes without becoming verbose.
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 presence of a full input schema (100% coverage) and an output schema, the description is minimally adequate. It does not explain return values (handled by output schema) or clarify if the update is partial or full, but it is functionally sufficient for an 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?
The input schema has 100% description coverage, with each property having a brief description. The tool description adds no additional meaning beyond the schema, so 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 clearly states the tool's purpose with a specific verb ('Update') and resource ('a task'), and lists key updatable fields (status, priority, assignee, due date, completion). This distinguishes it from sibling tools like create_task, delete_task, and list_tasks.
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 provide explicit guidance on when to use this tool versus alternatives (e.g., whether to use it instead of update_ticket_status or update_post). No when-not-to-use or prerequisite conditions are mentioned. It implies usage for modifying task attributes but lacks context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticket_statusAIdempotentInspect
Update the status of an existing support ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | New status | |
| ticketId | Yes | The ticket ID to update |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds that it updates an 'existing' ticket, implying validation, but lacks further behavioral details such as triggering notifications or side effects. With annotations covering safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 9 words, conveying the core purpose without any fluff. It is front-loaded and efficient, ideal for quick comprehension.
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 (2 parameters, both required, good schema coverage, exists output schema), the description is complete enough to define the tool's purpose. It could elaborate on status transition constraints, but the enum in schema mitigates this. An overall score of 4 reflects slight room for improvement.
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 both parameters described (ticketId: 'The ticket ID to update'; status: 'New status' with enum). The description does not add any extra semantic value beyond what the schema provides, so baseline score of 3 is justified.
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 'Update the status of an existing support ticket' is clear: verb 'update', resource 'status of an existing support ticket'. It distinguishes from sibling tools like create_ticket or list_tickets by specifying the action on an existing ticket's status.
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 needing to change ticket status but does not provide explicit guidance on when to use this tool versus alternatives (e.g., update_task for tasks) or mention any prerequisites or context like required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_post_cover_from_urlAInspect
Download an external image URL into R2 and attach it as the post's featuredImage. Replaces the manual flow of pasting external URLs (which break when the source goes down). Validates content-type starts with image/ and rejects payloads larger than 20 MB. No AI credits charged — only standard storage.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post ID | |
| sourceUrl | Yes | Public http(s) URL to fetch the image from. Must respond with an image/* content-type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: validates content-type, size limit (20 MB), no AI credits charged, and the operation is a download/attach. Annotations are consistent (readOnlyHint=false, destructiveHint=false), and description adds valuable context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action, each sentence adds essential information without redundancy. Efficient and well-structured.
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 and the presence of an output schema, the description fully covers constraints, purpose, and behavioral traits. No gaps remain.
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?
Adds meaning beyond input schema: specifies that sourceUrl must be a public http(s) URL returning image/* content-type, and includes size limit. Schema already covers format and required fields, but description enriches understanding.
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 the action: downloading an external image URL into R2 and attaching it as the post's featuredImage. Distinguishes itself from siblings by explicitly mentioning it replaces the manual flow of pasting external URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides good context on when to use (to upload cover from URL) and mentions it replaces manual flow, but does not explicitly contrast with sibling tool 'attach_post_cover_from_job' or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_survey_workflowBIdempotentInspect
Create or update a survey automation workflow, usually triggered by survey_response_submitted.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name | |
| graph | Yes | Workflow graph definition | |
| status | No | Workflow status | |
| trigger | No | Trigger name, default from graph.trigger | |
| surveyId | Yes | Survey ID | |
| workflowId | No | Existing workflow ID when updating |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds that the workflow is 'usually triggered by survey_response_submitted', which is additional context. However, it does not disclose other behavioral traits like partial vs full update or side effects.
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 front-loads the core action and common trigger. 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?
Despite high schema coverage and output schema existence, the description fails to explain the critical 'graph' parameter structure (nodes, edges, trigger). For a tool with complex nested objects, more context is needed to ensure the agent constructs valid input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any extra meaning beyond the schema descriptions 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 tool creates or updates a survey automation workflow, and provides a typical trigger context. However, it does not explicitly differentiate from other workflow-related tools like list_survey_workflows, but the name and context suffice.
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 vs alternatives. Only an implied usage scenario (triggered by survey_response_submitted) is given, but no exclusions or mentions of other triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_campaignARead-onlyIdempotentInspect
Validate a campaign before sending. Resolves contactable recipient count and previews the final email subject/body without sending.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Campaign ID to validate |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it resolves contactable count and previews content, providing useful behavioral context without 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?
Two sentences, no redundant information. Front-loaded with main purpose. 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 output schema exists to describe return values, the description adequately covers purpose, key actions, and constraints. Could mention prerequisites like campaign existence, but 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% with 'Campaign ID to validate'. Description does not add further detail, but baseline of 3 is appropriate as schema already adequately documents the 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 clearly states 'validate a campaign before sending' and specifies it resolves contactable recipient count and previews subject/body, distinguishing it from create, update, delete, and 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 explicitly states 'before sending' indicating when to use. It does not mention alternatives or exclusions, but the context with sibling tools and purpose makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_promotionARead-onlyIdempotentInspect
Check if a promotion code is valid for a given order. Returns isValid, discount amount, and an error code/message if invalid. Use before applying to a checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Order subtotal in major units (dollars, not cents) | |
| channel | Yes | Where the promo is being applied | |
| accountId | No | Customer account ID — used for per-customer usage limits | |
| promotionCode | Yes | The code customer entered |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral context by listing return fields (isValid, discount amount, error code/message) and stating the validation purpose, enhancing transparency without 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?
Two sentences, no wasted words. Purpose and usage guidance are front-loaded and efficiently communicated.
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 explains the tool's purpose, return values, and when to use it. However, it mentions 'for a given order' without specifying how the order is represented (via amount and optionally accountId), leaving a small gap. Output schema likely fills in return details.
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 100% description coverage, so each parameter is already documented. The description does not add additional parameter details, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check if a promotion code is valid for a given order') and the resource (promotion code). It is distinct from sibling tools like validate_campaign by context, but does not explicitly differentiate them, missing an opportunity for clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use before applying to a checkout.' This tells the agent when to invoke the tool. However, it does not mention when not to use it or recommend the sibling validate_campaign for campaigns, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_invoiceADestructiveInspect
Void an invoice. Destructive — invoice can no longer be paid or edited; existing payments are preserved as history. Cannot void invoices that are already PAID or VOIDED.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID to void |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool result payload — shape varies per tool, see the tool description |
| summary | Yes | One-line human-readable summary of the action |
| renderType | Yes | UI rendering hint for the result |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, the description discloses that the invoice becomes uneditable, payments remain as history, and preconditions on status. No contradictions 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 wasted words. Front-loaded with the action and immediately states the destructive nature and constraints.
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 one parameter and an output schema, the description covers all essential behavioral aspects: effect, constraints, and side effects.
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 (invoiceId) has a schema description, and the tool description adds no extra meaning. Baseline 3 is appropriate given 100% 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 clearly states the action ('Void an invoice') and the resource, with precise constraints on state changes and what happens to payments. It distinguishes from siblings like delete_invoice by noting that existing payments are preserved.
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 states when not to use (cannot void paid or voided invoices), implying it's for unpaid invoices. It doesn't mention alternatives like delete_invoice, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!