FavCRM
Server Details
Agentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing.
- 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 187 of 190 tools scored. Lowest: 2.9/5.
Each tool targets a specific resource and action with clear, distinct names and descriptions. Despite the large number, there is no overlap in purpose; e.g., create_account vs create_contact vs create_booking are unambiguous.
All tools follow a consistent verb_noun pattern using snake_case. Verbs like create, list, get, update, delete are used uniformly across domains, making the toolset predictable.
190 tools is excessively high for an MCP server. While the domain (CRM, bookings, marketing, etc.) is broad, this many tools likely overwhelms agents and suggests insufficient abstraction.
The tool set covers full CRUD operations across many entities (accounts, bookings, campaigns, posts, products, etc.) plus additional utilities (import, audit, approval, restoration). There are no obvious gaps for the stated purpose.
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 6-digit code to the email and is non-idempotent. This aligns with the readOnlyHint=false and idempotentHint=false annotations 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 concise sentences: first covers the action and outcome, second provides the next step. No wasted words, front-loaded with 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 output schema exists, the description doesn't need to detail returns. It adequately sets up the two-step workflow and provides necessary context. Could mention error cases 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?
The description explains the token's origin (from create_team_member_invite or invite link), adding value beyond the schema's description. Since schema coverage is 100%, the description enhances 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's purpose: validates an invite token and sends a verification code, identifying it as step 1 of a two-step process. It distinguishes from the sibling tool by naming 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 tells the agent to use this as the first step after obtaining an invite token and then call accept_team_invite_verify. It provides clear workflow context but does not explicitly list 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.
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?
Annotations provide no guidance (all false), so the description carries full burden. It discloses the core actions (verify, join, return key) but lacks details on side effects, error handling, or idempotency. This is adequate but not comprehensive.
Agents need to know what a tool does to the 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', and contains no extraneous information. Every word serves a purpose, making it highly 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 complexity (2-step process, 3 parameters, output schema), the description covers the overall purpose and outcome. However, it omits prerequisites (e.g., having a valid invite token from step 1) and error cases. It is mostly complete but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond the schema. It mentions 'emailed code' and 'invite token' but doesn't enhance understanding of parameter semantics 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 'Step 2 of agentic team invite acceptance' and details the actions: verifies code, joins user, returns API key. It distinguishes from the sibling tool accept_team_invite_request by positioning itself as the second 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 labels itself as 'Step 2', indicating it follows accept_team_invite_request. While it doesn't list contraindications or alternative scenarios, the step ordering provides clear usage context.
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 indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds that the document is stored as a single piece and that embedding/retrieval happens elsewhere, providing useful 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 two sentences, each adding value. The first states the primary action, the second provides usage examples and storage details. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with 2 parameters and no enums, the description covers purpose, usage, and behavioral details. The presence of an output schema means return values need not be described. All necessary context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters (name, content) with descriptions. The description does not add significant semantics beyond stating the document is 'free-form text.' With 100% schema coverage, the baseline is 3, and the description does not elevate 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 the action ('Add') and the resource ('free-form text document to the knowledge base'). It distinguishes from sibling tools like scrape_knowledge_url and list_knowledge_documents by specifying the type of content (policies, FAQs, notes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 examples of when to use the tool ('pasted policies, FAQs, internal notes, brand voice references'). It does not explicitly mention when not to use or alternatives, but the context is sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_post_blockCInspect
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 are present but neutral (readOnlyHint=false, destructiveHint=false). The description lacks additional behavioral details such as side effects, error handling, or return value structure. It only restates input requirements from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences. The first sentence states the core action, and the second provides essential details about block format and types. 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 complex tool with many block types, the description is too sparse. It omits output description, error conditions, and prerequisites. The output schema exists but is not referenced.
Complex tools with many parameters or behaviors need more documentation. 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 adds a summary of the block structure and lists block types, offering some consolidation beyond the schema, but does not significantly deepen 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 action ('Append one or more blocks to the end of a post') with a specific verb and resource. It distinguishes this tool from siblings like remove_post_block or reorder_post_blocks, though it does not explicitly contrast 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. The description does not mention prerequisites, when-not-to-use, or provide examples. Agents must infer from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_surveyADestructiveIdempotentInspect
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?
Adds context beyond annotations: explains effect on survey lists (removing from active lists). Annotations give destructive and idempotent hints; description aligns and provides additional behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with 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?
Tool is simple (1 param, output schema exists, annotations present). Description sufficiently covers purpose and effect; 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?
Only parameter surveyId is described in schema with same wording. No extra semantic beyond schema, but schema coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Archive') and resource ('survey') with specific outcome ('remove from active survey lists'). Distinguishes from sibling survey tools like create, update, delete, 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?
Implied usage via name and description, but no explicit guidance on when to use versus alternatives like delete_survey or toggle active status.
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?
Annotations declare readOnlyHint=false, indicating mutation, which is consistent with 'Assign'. However, the description does not disclose additional behavioral traits such as whether the operation is idempotent, what happens if the user is already assigned (e.g., error or replacement), or any side effects. With annotations carrying the burden, the description 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?
The description consists of two concise, front-loaded sentences with no extraneous information. Each sentence serves a clear purpose: stating the action and providing a parameter 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?
For a simple tool with two parameters and an output schema present, the description adequately covers the core functionality and a critical parameter hint. It could optionally mention whether the assignment replaces existing ones, but overall it is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptions, achieving 100% coverage. The description adds value by specifying the source for 'userId' ('users.id from list_staff.userId'), which provides practical context beyond the schema's generic 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 ('Assign a staff member to a booking service') and the resource involved, making the tool's purpose unmistakable. It also distinguishes from siblings like 'link_resource_to_service' by specifying 'staff member' and 'booking 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 provides a hint on where to get the userId ('from list_staff.userId'), implying a prerequisite step. However, it lacks explicit guidance on when to use this tool versus alternatives, such as when a service already has staff assigned or how to handle existing assignments.
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?
Annotations provide readOnlyHint=false (write operation) but no other behavioral hints. The description adds value by disclosing credit behavior (no extra charge) and verification (job ownership and success). However, it omits the polling behavior (pollIfRunning/pollTimeoutMs) which is critical for understanding execution flow. With existing annotations, the description adds moderate context but leaves a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: action statement, usage scenario, and behavioral note. It is front-loaded with the primary action. No extraneous information, making it highly 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 tool's complexity (5 parameters, output schema, annotations), the description covers purpose, usage scenarios, verification, and credit policy. However, it fails to mention the polling mechanism, which is a key part of the tool's behavior. This omission reduces completeness slightly, but overall the description is adequate for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. 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 all 5 parameters, so the baseline is 3. The description does not add substantial meaning beyond the schema; it only indirectly references polling ('job kept running') but does not explain the polling parameters. Thus, it meets the baseline without exceeding 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 the action ('attach'), the target resource ('post's featuredImage'), and the source ('ai-media job's output'). It distinguishes from siblings like 'generate_post_cover' by specifying use cases (timeout or reuse). This is a specific verb+resource pair with explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'Use when generate_post_cover timed out... or when reusing the same generation across multiple posts.' It also notes verifications and credit policy. However, it does not explicitly mention when not to use or alternative tools like 'upload_post_cover_from_url'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_tagsAInspect
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. Description adds no new behavioral traits such as idempotency, side effects, or permission requirements. It misses an opportunity to clarify whether attaching tags multiple times adds or replaces tags.
Agents need to know what a tool does to the 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 action, second provides usage context. 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 tool's simplicity and presence of an output schema, the description covers purpose and context adequately. Could be improved by mentioning idempotency or behavior on multiple calls, 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?
Schema coverage is 100%, so parameters are already described. The description adds context ('segmented members') which relates to accountIds, but does not add new parameter-specific details. 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?
Description uses specific verb 'attach' and identifies resource 'tags to a member/account'. It clearly states the action and includes a use case ('segmenting members after filtering'), which distinguishes it from sibling tools like list_tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 hints at when to use ('after filtering'), but does not explicitly mention when not to use or provide alternative tool names. The context is helpful but not exhaustive.
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 set destructiveHint: true, so the destructive nature is clear. Description adds that a reason can be provided, but does not disclose further behavioral traits like permissions, reversibility, 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 short sentences, no wasted words. Efficient but could be improved with structured bullet points or additional 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?
With an output schema present, return values are documented elsewhere. However, for a destructive operation, more context about consequences (e.g., booking status changes, refunds) 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?
Input schema has 100% coverage of parameters with descriptions. Description only notes 'Optionally provide a reason', which repeats the schema's optionality and adds 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?
Description clearly states 'Cancel a booking' with a specific verb and resource. Among sibling tools, there is no other 'cancel' tool except cancel_subscription, so it is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool vs alternatives (e.g., complete_booking, confirm_booking), no prerequisites or status conditions, and no exclusions.
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?
Annotations already mark destructiveHint true; description adds details about turning off auto-renew and preventing further billing cycles, adding value beyond the hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, output schema exists), description covers purpose, behavior, and effect completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'subscriptionId' is described in schema. Description adds 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 'Cancel a subscription' with a specific verb and resource, and distinguishes from siblings like 'pause_subscription' by noting it is destructive and stops auto-renew.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (to stop future billing) and effects (existing period stays valid), but does not explicitly 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 the tool as read-only and idempotent. The description adds detailed behavioral context about what it checks (token scopes, modules, subscription state, quota) and notes that quota checks are single-resource preflights, fully disclosing behavior 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, well-structured sentence that front-loads the purpose and efficiently conveys all necessary information without redundancy or 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 tool's moderate complexity, the presence of an output schema, and the description covering what is checked and how to specify the operation, it provides complete context for an agent to correctly select and invoke the 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 good parameter descriptions. The description adds value by summarizing the high-level usage pattern (provide one of toolName, quotaCode, or moduleCode) and clarifying that delta is for planned usage increment, which enhances understanding 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's purpose as a preflight check for whether an operation is allowed based on token scopes, enabled modules, subscription state, and quota. It specifies the parameters (toolName, quotaCode, moduleCode) and distinguishes itself from sibling tools by focusing on authorization checks rather than status retrieval or listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 before performing an operation to verify permissions, and instructs to provide one of the three identifier types. While it does not explicitly exclude alternatives, the context is clear and appropriate given the lack of directly competing sibling tools.
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 declare non-destructive (destructiveHint=false) and non-idempotent. The description adds that the copy is created in DRAFT status and name gets '(Copy)' appended, providing useful 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?
Two sentences, zero waste. Front-loaded with key action and entity types. 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 the existence of an output schema, the description adequately covers cloning behavior, draft status, and naming. It doesn't detail handling of related data, but for a clone tool this 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 coverage is 100%. The description adds that 'name' can override the default naming, but otherwise the schema already describes parameters adequately. 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 duplicates existing records and creates a copy in DRAFT status with '(Copy)' appended. It distinguishes from create_* siblings by specifying it creates a copy, not a new blank record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 cloning when you need a copy of an existing record, but no explicit guidance on when not to use it or prerequisites. Not as strong as explicit alternatives.
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?
Annotations provide no safety hints (readOnlyHint, destructiveHint false). The description discloses the mutating behavior (creates/updates, applies values) but does not discuss error handling, rollback, or idempotency implications. More detail on failure scenarios would improve 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?
Two sentences with no redundancy. The first sentence specifies the prerequisite and input identity, the second explains the effect. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and a relatively straightforward commit action, the description effectively communicates the tool's purpose and input requirements. It links to the preview tool and mentions the key effects. Could mention the row limit or validation constraints, but these are in 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 50%, with many fields already described in the schema. The description adds value by highlighting that points, stamps, and credit deltas are applied, which is not evident from the schema alone. However, it does not compensate fully for undocumented fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool commits a previewed customer import, specifying the exact inputs (same rows and sessionId from preview_customer_import) and the effects (creates/updates accounts, applies points/stamps/credit). This distinguishes it from sibling tools like 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 tells when to use: after preview and with matching rows and sessionId. It does not explicitly mention when not to use or alternative tools, but the usage context is clear for a commit operation tied to a specific preview step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_bookingAInspect
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 already note it's non-readOnly (data mutation) and non-destructive. The description adds value by disclosing the commission calculation side effect, which is important for agent decision-making.
Agents need to know what a tool does to the 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 efficient sentences with no fluff. The description is front-loaded with the primary action and the side effect. 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 has an output schema (context signals indicate true), so description is not burdened to explain returns. The core action and side effect are covered, but missing potential error conditions or prerequisites (e.g., booking must exist). Adequate for a 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 coverage is 100% with a clear description for the only parameter (bookingId). The description does not add any further semantic 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 action: 'Mark a booking as completed' and adds a specific side effect ('Triggers commission calculation if configured'). This distinguishes it from sibling tools like cancel_booking, confirm_booking, 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. No prerequisites, no exclusions, and no mention of conditions like booking status requirements. The description is silent on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_bookingBInspect
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 indicate non-read-only and non-destructive, but the description adds no behavioral insight beyond the verb 'confirm'. Missing details like state changes 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?
Extremely concise: a single, clear sentence with no unnecessary words. 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?
Given the single parameter and existence of an output schema, the description is nearly sufficient. However, it could briefly state the effect on booking status to be fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameter. The description adds no additional meaning beyond the schema's parameter 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 ('confirm') and the resource ('a pending booking'), which directly distinguishes it from siblings 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 this tool versus alternatives like cancel_booking or complete_booking. The description provides no context for proper usage.
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 provide no safety hints. Description adds that it creates an account and optionally enrolls membership, but does not disclose side effects like duplicate handling, required permissions, or if a welcome email is sent. Behavior is partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the main action and include a key usage tip. 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?
Given the tool's complexity (13 parameters, nested objects), the description is brief. It covers the main action and optional enrollment but omits context like company scope, prerequisites, or what 'primary contact' entails. Could be more complete but is acceptable with the output schema assumed to handle 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%, so parameters are already documented. Description adds context like 'with a primary contact' and 'optionally enroll' which relate to some parameters but does not significantly enhance individual parameter meaning beyond 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?
Description clearly states 'Create a CRM account/customer with a primary contact', using a specific verb and resource. It distinguishes itself from the sibling tool 'enrol_membership' by explicitly recommending its use for existing accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (to create an account and optionally enroll) and when to use the alternative 'enrol_membership' (for existing accounts). This provides clear guidance on tool selection.
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 declare readOnlyHint=false and destructiveHint=false, indicating mutation without destruction. The description adds no further behavioral context (e.g., conflicts, notifications). It is adequate but not enhanced 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 action and prerequisite, no unnecessary words. Highly efficient and structured functionally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description mentions a prerequisite and key parameters, it lacks details on error handling, conflict resolution, or output. Given the existence of an output schema (not shown) and high schema coverage, the description is minimally complete 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% with descriptions for all parameters. The description lists key parameters (service, member, date, time) but adds no extra meaning beyond what the schema 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 action 'Create a new booking for a member' and distinguishes it from sibling tools like cancel_booking, complete_booking, etc. It uses specific verb-resource pairing and provides prerequisite context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using get_available_slots first, then creating the booking with key parameters. It provides a clear workflow hint, though it doesn't specify when not to use this tool or alternatives.
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?
The description adds behavioral context beyond annotations: it reveals the draft-only nature and the admin review requirement. No contradictions with annotations (readOnlyHint=false, etc.). It could mention more about state or default channel, but the given info is helpful.
Agents need to know what a tool does to the 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-loading the key purpose and critical behavior. No redundancy, 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 existence of an output schema and good annotations, the description is sufficiently complete. It covers the essential draft behavior and sending flow. It could mention the required name parameter, but schema already handles 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. The description adds context about the draft status, which is not in the schema, providing meaning beyond parameter names. This justifies a score above 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 specific action ('create a DRAFT... broadcast campaign'), the two channels (WhatsApp, SMS), and explicitly differentiates from sending by noting that it is not sent but requires admin review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (to create a draft broadcast) and informs that the broadcast must be sent from another page, implying that this tool is not for sending. However, it does not explicitly list alternatives or conditions 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_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?
Adds useful behavioral details beyond annotations: default status is DRAFT, recipientSource='list' is an alias, and channelConfig recommendations for email. Annotations already indicate readOnlyHint=false (write) and destructiveHint=false, but the description enriches the understanding of the tool's 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?
Extremely concise: two sentences that convey purpose, default state, key parameter usage, and an alias. No superfluous information, 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?
Covers most relevant aspects: channels, default status, channelConfig hints, alias. Could mention that status can also be SCHEDULED (per schema) and give more context on segmentation, but the output schema and high schema coverage compensate. Overall well-rounded 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?
Schema coverage is 100%, so parameters are already described. The description adds value by clarifying email channelConfig composition and the alias behavior for recipientSource. This extra context is helpful but not extensive, earning a baseline-adjusted 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?
Clearly states action ('Create') and resource ('marketing campaign') with supported channels (email, SMS, WhatsApp). However, does not explicitly differentiate from sibling tools like update_campaign or delete_campaign, though the creation context is implied by 'in DRAFT'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 specific guidance on channelConfig fields and recipientSource alias, but lacks explicit when-to-use or when-not-to-use advice relative to other campaign tools. The context is implied but not clearly stated.
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 already indicate readOnlyHint=false. Description adds no further behavioral context beyond the basic create 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?
Two concise sentences, front-loaded with the main action, 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 create tool with output schema and annotations, the description adequately covers purpose and a key naming guideline, though it could mention constraints like character 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 covers all 4 parameters with descriptions. Description adds only a naming convention hint for the 'name' parameter, not enough to exceed 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 'Create a CMS post category' with examples, distinguishing it from sibling tools like update_category and delete_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on using namespaced names for sub-categories, but does not explicitly state when to use this tool vs. alternatives or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactBInspect
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 indicate the tool is not read-only and not destructive, which is consistent with creating a contact. The description adds no further behavioral details beyond the basic operation, making it adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is front-loaded with the essential action and resource, though it could include 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 6 parameters and existence of an output schema, the description covers the basic purpose but lacks details on prerequisites, error conditions, or typical use cases. It is minimally complete for a simple create 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?
The input schema has 100% description coverage, so each parameter is already documented. The tool description does not add any additional meaning or clarify relationships between parameters, meeting the baseline for 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 uses a specific verb 'Create' and clearly identifies the resource as a contact on an existing CRM account. This distinguishes it from other create tools like create_account or create_booking, and from sibling tools such as update_contact 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 does not provide guidance on when to use this tool versus alternatives like update_contact. It implies that an existing account is required but does not explicitly state prerequisites or scenarios where this tool is appropriate.
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?
Annotations already indicate readOnlyHint=false (write) and destructiveHint=false. The description adds that it creates a draft and does not send, but does not disclose side effects like permissions, idempotency implications, or whether it can be called multiple times per event. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with action and context. 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?
Description covers what, when, and what-not. With an output schema present, the return format is covered. Minor gap: no explicit prerequisites (e.g., need an inbound message with replyPolicy=suggest), but that is implied by the use case.
Complex tools with many parameters or behaviors need more documentation. 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 described in the schema. The description does not add specific parameter semantics beyond what the schema provides, but the overall use case ties them together. 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 creates a draft reply suggestion that appears inline in the FavCRM Inbox composer, and specifies the exact use case (message.inbound events with replyPolicy='suggest'). It also distinguishes from sending by stating 'does not send anything to the customer.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicitly states when to use ('for message.inbound events with replyPolicy=suggest') and what it does not do ('does not send anything'). This provides clear usage context, though it lacks an explicit reference to alternatives. Given the sibling list has no direct competitor, the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_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?
Annotations indicate it's not read-only, not idempotent, and not destructive. The description adds that line items are optional and totals are computed server-side. It doesn't mention prerequisites like account existence, but given annotations, the added context 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 consists of two concise sentences, front-loaded with the primary action. Every sentence adds value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 5 parameters and an output schema, the description covers the essence: creation, optional line items, and returned invoiceId. Minor gaps like prerequisite validation (account existence) are not mentioned, but overall it's complete enough for an agent to understand the tool's 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% with descriptions for all parameters. The description adds no new parameter information beyond 'Optionally include line items inline', which matches the schema. Baseline 3 is appropriate as the description does not significantly enhance 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 verb 'Create' and the resource 'invoice' for a customer, with optional line items and return value. It effectively distinguishes from other create tools in the sibling 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 implies the tool is used to create invoices but does not explicitly mention when not to use it or suggest alternatives. It provides a usage hint about optional line items but lacks exclusions or comparisons with related tools like update_invoice (which doesn't exist in siblings).
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 mutability (readOnlyHint=false). The description adds no further behavioral context such as permissions, rate limits, or side effects. Output schema exists but its content is not described.
Agents need to know what a tool does to the 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 targets. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of output schema, the description is adequate for a basic create operation. Could mention isPinned optionality or note content limits, 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 has 100% coverage with descriptions for all parameters. The description reiterates entity types from the schema without adding new meaning. No extra details on isPinned or entityId 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 action 'Add a note' and specifies the target entities: member/account, booking, ticket, or invoice. This distinguishes it from other create tools like create_booking 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?
No explicit guidelines on when to use this tool versus alternatives like list_notes or other create tools. Usage is implied for adding notes to supported entities, but no exclusions or context provided.
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 indicate readOnlyHint=false, so the description's "Create" aligns. The addition of "as draft" provides clarity beyond annotations that the rule is not immediately active. No further behavioral details (e.g., permissions, side effects) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Efficiently conveys purpose and key attributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 (6 params, nested objects, enums) and presence of an output schema, the description covers the essential creation purpose and draft status. Missing details like what the rule ID is or how to activate, 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% with descriptions for all properties. The description summarizes key parameters (trigger type, conditions, suggested products, discounts) but adds little 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 verb "Create" and the resource "offer rule", specifying it's for upsell/cross-sell and as a draft. It distinguishes from sibling tools like get_offer_rule and list_offer_rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 offer rules but does not explicitly state when to use vs alternatives or when not to use. No exclusions or comparative guidance.
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 indicate it is a write operation (readOnlyHint=false) and not destructive. The description clarifies the creation purpose and the id parameter's migration use, but does not disclose other behaviors like permission requirements or duplicate handling. With annotations covering the basics, this is adequate.
Agents need to know what a tool does to the 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 primary purpose. 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 10 parameters and an output schema, the description is sparse on overall context (e.g., prerequisites, error conditions). It adequately covers the primary use case but lacks details about common scenarios or company association. Still, it is sufficient for a well-documented parameter set.
Complex tools with many parameters or behaviors need more documentation. 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 adds value by explaining the 'id' parameter's legacy migration purpose, reinforcing the schema's description. Other parameters are well-described in schema, but overall the description adds meaningful 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 verb 'Create' and the resource 'shop outlet/location'. It also highlights the optional id parameter for legacy migration, which distinguishes it from other create_* tools like create_product or create_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 does not explicitly state when to use this tool versus alternatives like update_outlet. The mention of optional id for migration provides some context, but there is no guidance on when to choose this tool over siblings.
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?
The description reveals that the tool creates external Stripe links, which aligns with annotations (readOnlyHint=false, not destructive). It adds context about the link types and the user consent requirement (explicit ask). However, it does not detail post-creation behavior (e.g., whether the user is charged immediately), but annotations already indicate non-idempotent write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first explains functionality concisely with two cases, second gives a crucial usage constraint. No redundant information; each 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 output schema exists, the description sufficiently covers the core operation and usage condition. It omits edge cases like error handling or missing prerequisites (e.g., need for plan options), but the schema parameter descriptions fill those gaps. Overall adequate for typical agent decision-making.
Complex tools with many parameters or behaviors need more documentation. 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 high (80%), and the description does not add significant meaning beyond the schema's parameter descriptions (e.g., 'planId' already suggests using 'list_plan_options'). The description's main value is in purpose/usage, not parameter details; thus 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 the specific resources: 'Stripe Checkout link' for new subscriptions and 'Stripe Billing Portal link' for existing ones. It distinguishes this tool from siblings like 'create_subscription' and 'list_plan_options' by focusing on link generation for upgrade/fix billing scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use only after the user explicitly asks to upgrade or fix billing,' providing a clear context for use. While it doesn't name sibling tools as alternatives, the condition effectively guides when to invoke this tool vs. others like 'create_subscription'.
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?
Annotations already indicate it's a mutation (readOnlyHint=false). The description adds useful behavioral details: auto-derivation of excerpt, validation of meta against field schema, and rejection of unknown block types. This goes beyond annotations without contradicting 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 tight three-sentence paragraph. Every sentence earns its place: purpose, prerequisites/alternatives, and special parameter guidance. No filler, 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?
Given the tool's complexity (16 parameters, nested blocks) and the presence of an output schema, the description is minimally adequate. It provides high-level guidance but does not cover optional features like tags, categories, or block structure in detail. The schema fills many gaps, so this 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 description coverage is 100%, so baseline is 3. The description adds some redundancy (e.g., 'excerpt = plain-text summary only') but no new semantic information beyond what the schema already provides. The prerequisite about post type existence is useful but not a parameter property.
Input schemas describe structure but not intent. Descriptions should explain 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 new CMS post, lists example types (blog_post, page, custom), and distinguishes it from sibling tools like create_post_type. The verb 'create' and resource 'CMS post' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisites (post type must exist) and names alternatives for discovering or creating post types (list_post_types, create_post_type). It also hints at when to use meta vs excerpt. It does not explicitly say when not to use the tool, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_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 indicate a write operation (readOnlyHint=false). Description adds behavioral context: fields stored in meta on each post and warns against using excerpt for structured data, which goes 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?
Three sentences: first states purpose, second gives prerequisite, third gives post-usage and warning. 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 10 fully described parameters, an output schema, and annotations, the description adequately covers workflow and a common pitfall (excerpt), making it complete 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 coverage is 100%, so the baseline is 3. Description adds value by mentioning slug, label, labelPlural in context, and explains the workflow sequence, justifying a 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 it defines a new custom post type with examples like 'treatment' and 'service'. It distinguishes itself from sibling tools like create_post_type_field, which defines field schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says required before creating posts of that type and directs to use create_post_type_field for structured fields. It does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 non-read-only, non-destructive behavior. Description adds that the field key becomes the meta key, which implies mutation but no further behavioral traits like auth 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?
Three sentences, each adding distinct value. First sentence states purpose, second covers repeater special case, third provides alternative. 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 tool with 9 parameters (3 required) and nested objects, the description covers the main use case and the primary variant (repeater). Does not detail all field types or output, but output schema exists. Adequate 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 the description adds value by explaining parameter interactions (e.g., fields required if fieldType=repeater, auto-derivation of key, options format). Goes 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?
Clearly states the verb 'add', resource 'custom field to a post type schema', and explains the meta key behavior. Distinguishes from sibling tools like create_post_type and update_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?
Provides specific guidance for using fieldType='repeater' with fields array and advises against storing structured data in excerpt. Could explicitly mention when to use update_post_type_field instead, but still offers clear context.
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?
Adds context about draft state and merchant activation, which is beyond the annotations. However, no details on side effects, permissions, or what happens during activation. Annotations already indicate non-destructive and non-read-only.
Agents need to know what a tool does to the 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, front-loaded with the main action and state. Highly 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?
With a full schema and output schema, the description is functional but could benefit from brief guidance on parameter interdependencies or typical usage. Still adequate for most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description does not add any additional meaning beyond the schema; no parameter explanations or examples.
Input schemas describe structure but not intent. Descriptions should explain 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 'Create', resource 'shop product', and status 'DRAFT', differentiating it from other product-related tools like 'update_product' or 'create_product_category'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for creating a draft product but does not explicitly state when to use vs. alternatives or when not to use. No exclusions or prerequisites mentioned.
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 mutable operation; the description adds minimal behavioral context beyond the basic action, lacking details on side effects, permissions, or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, 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?
The description, combined with complete schema and existing output schema, provides adequate context for creating a product category, though it could mention handling of duplicates or defaults.
Complex tools with many parameters or behaviors need more documentation. 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 highlights parentId usage but does not add significant meaning beyond what the schema descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a product category') and the resource, and distinguishes from sibling tools like create_category or list_product_categories by specifying the exact entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 some guidance on using parentId for subcategories but does not explicitly compare to other create tools or mention 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.
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 indicate not read-only or destructive, and the description adds 'Codes are uppercased server-side,' a useful behavioral detail 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?
Two sentences, front-loaded with key info, no wasted words. Efficiently covers main points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, return values are covered. Description covers creation, type, value, and code uppercasing. Could mention other key params like startsAt/endsAt, but not essential for core 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%, so baseline is 3. The description adds meaning to 'value' by explaining the discount string format and mentions type enum values, exceeding 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 'Create a promotion / discount code' with specific verb and resource. It distinguishes from sibling tools like update_promotion and delete_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 for when to use (to create a promotion) but does not explicitly state when not to use or mention alternatives. It references the type and value format, aiding correct usage.
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 indicate readOnlyHint=false (modifies state) and destructiveHint=false, which align with the creation action. The description adds that the resource is bookable and for services, but does not discuss side effects like duplicate handling, required permissions, or that the tool is not idempotent. It provides minimal behavioral context beyond the creation fact.
Agents need to know what a tool does to the 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 essential purpose and usage context without any wasted words. It is appropriately brief and front-loaded with 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 tool's complexity (5 parameters, output schema present, sibling tools like link_resource_to_service), the description is sufficiently complete. It explains the tool's role in creating resources for specific services, and the output schema covers return values. It could mention defaults or linking, but overall it provides adequate context 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?
Input schema coverage is 100% with descriptions for each parameter. The description does not add any additional meaning beyond the schema; it only gives a general overview of the tool's purpose. Therefore, the 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 tool creates a bookable resource with examples (room, equipment, vehicle). It specifies the context of use (services with requiresResource=true), which helps differentiate from general create tools, though it does not explicitly distinguish from siblings like create_service or create_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 indicates the tool is used for creating resources that are linked to services with requiresResource=true, providing a clear usage context. However, it does not mention when not to use this tool (e.g., for services or products) or compare with alternatives like list_resources or 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.
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 are minimal (destructiveHint=false, readOnlyHint=false), so description adds value by indicating it's a write operation and differentiating segment types, but lacks detail on side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence with a clarifying follow-up. 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?
Given the tool's complexity (4 params, nested objects, enums) and presence of output schema, the description is near-complete. It covers the two segment types and purpose, but could mention that 'name' is required or any constraints.
Complex tools with many parameters or behaviors need more documentation. 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 context for segmentType (STATIC/DYNAMIC), but does not elaborate on the complex criteria structure 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 verb 'Create' and resource 'customer segment', and distinguishes between STATIC and DYNAMIC types, which helps differentiate from siblings 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?
Provides explicit guidance on when to use STATIC vs DYNAMIC segment types, offering clear context for tool selection, though it does not explicitly mention when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_serviceBInspect
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 the tool is not read-only and not destructive. The description adds no further behavioral context (e.g., validation behavior, side effects of creation). Given annotations cover basic traits, the description's contribution is 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 two sentences, front-loading the main purpose and adding a helpful tip. No unnecessary 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?
Given the tool's complexity (20 parameters, 2 required) and the presence of an output schema, the description adequately covers the high-level purpose. However, it misses highlighting key constraints like 'allowedTierIds required when visibility=members_only', which are in the schema but could be stressed.
Complex tools with many parameters or behaviors need more documentation. 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 each parameter has a description. The description mentions 'Sets duration, price, capacity, and policies', which adds slight context but does not significantly augment the schema's detailed parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain 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 bookable service' and lists key attributes (duration, price, capacity, policies). It differentiates the tool from other create tools by specifying the resource type, but does not explicitly distinguish from sibling tools like update_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 provides a valuable prerequisite hint ('Use list_service_categories first if you want to attach to an existing category'), but lacks guidance on when not to use this tool or comparative advice against alternatives like update_service.
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 readOnlyHint=false and destructiveHint=false, so the description's 'Create' is consistent. However, the description adds no extra behavioral context (e.g., side effects, permissions, or uniqueness constraints). It neither contradicts nor significantly supplements 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 that front-loads the action and includes an illustrative example. Every word contributes value; there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with three parameters (one required) and an output schema, the description adequately explains the purpose and context. It does not discuss return values, but the output schema presumably covers that. It could mention uniqueness or impact on service listing, but is sufficient for practical 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 description coverage is 100%, so baseline is 3. The tool description provides an example but does not add any semantic information beyond what the schema already provides for each parameter. No additional 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 uses a specific verb 'Create' and resource 'service category' with concrete examples ('Treatments', 'Classes'). It clearly distinguishes this from sibling tools like 'create_category' or 'create_product_category' by specifying the domain of bookable services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 group bookable services. It provides clear context but does not explicitly exclude alternatives or state when not to use. Since the purpose is straightforward and distinct from siblings, a score of 4 is appropriate.
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 already indicate readOnlyHint=false and destructiveHint=false, so the description only confirms it's a write operation ('Create'). No additional behavioral traits are disclosed (e.g., auth needs, side effects). The description adds little 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. The first states the purpose, the second provides a key usage tip. No unnecessary words; 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 complexity (8 parameters, output schema exists), the description is adequate. It covers the main purpose and a key usage pattern. The schema fills in parameter details. Could mention return value but output schema covers that. Adequate for an agent to understand the 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 parameters. The description adds valuable context on how to use applicableType and applicableItems together, which is not fully covered in the schema descriptions. This enhances understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain 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 service package/prepaid session bundle. It identifies the resource type and provides a specific configuration hint. However, it does not explicitly distinguish it from sibling tools like create_promotion or create_offer_rule, though the resource type is different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers a usage tip (using applicableType=SELECTED with applicableItems) but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or comparisons with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_scheduleAInspect
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 indicate readOnlyHint=false and destructiveHint=false, and the description states 'create', which is consistent and implies a write operation with no destructive behavior. However, it does not disclose any additional behavioral traits like idempotency 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?
Single, front-loaded sentence with no fluff. Every word is necessary to convey 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?
With 12 parameters and recurring patterns, the description is minimal. While the schema covers details, the description could provide more context on how recurrence settings work, but it is not incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description hints at recurrence (weekly/daily) but adds no meaningful explanation of 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?
Clearly states the action ('create') and the resource ('bookable schedule window for a service'). Includes specific detail about recurring availability, distinguishing it from sibling tools like list_service_schedules and update_service_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 update_service_schedule or set_resource_availability. No context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_subscriptionBInspect
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?
The description adds no behavioral insights beyond what annotations already provide. Annotations indicate the tool is not read-only (readOnlyHint: false) and not destructive (destructiveHint: false), but the description does not elaborate on side effects (e.g., whether creating a subscription triggers an immediate charge, starts billing, or requires payment method).
Agents need to know what a tool does to the 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 and front-loaded with the main action. It consists of two short sentences with no unnecessary words, effectively conveying the essential purpose and flexibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 functional but could be more complete. It covers the two main modes but does not mention defaults (e.g., billingCycle defaults to monthly, autoRenew defaults to true) or that accountId is required. Output schema likely handles return values, so not penalized.
Complex tools with many parameters or behaviors need more documentation. 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 minimal value by summarizing the two modes (tier-based vs custom amount/cycle) but does not provide deeper meaning or relationships between parameters. Baseline 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 recurring subscription for a member, specifying the key differentiation between binding to a membership tier or setting a custom amount and cycle. This distinguishes it from sibling tools like cancel_subscription, pause_subscription, and resume_subscription, which operate on existing subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., account must exist, tierId must be valid) or when not to use it (e.g., if updating an existing subscription). No context is provided about choosing between this and other creation tools like create_booking or create_invoice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_surveyAInspect
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?
The description indicates the tool creates a survey (mutation), consistent with annotations (readOnlyHint=false). It adds behavioral context about the publishing options, which 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?
The description is a single, well-structured sentence that front-loads the main action and key options. It is efficient but could benefit from a brief mention of required parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters (2 required) and an output schema exists, the description provides sufficient context for the creation action, covering the core functionality and key choices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with good descriptions for all 9 parameters. The description adds little extra meaning beyond highlighting 'custom question blocks' and the option to publish immediately.
Input schemas describe structure but not intent. Descriptions should explain 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 'with custom question blocks'. It also mentions the ability to publish later or immediately, distinguishing it from other survey tools like list_surveys or update_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?
The description provides guidance on when to use this tool by mentioning that you can publish later or set status to published for immediate portal access. It implies the creation context but does not explicitly exclude alternatives like importing a survey.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_survey_invitationAInspect
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 indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds 'token-auth' as a behavioral detail, but omits potential side effects, permissions, or idempotency 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?
A single sentence that is front-loaded and concise, but lacks structured breakdown. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and an output schema, the description is minimal. It adequately conveys the core purpose but could provide more guidance on recipient identifier selection or invitation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add extra meaning beyond the schema, aligning 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 states the action ('Create'), the resource ('token-auth survey invitation'), and the target ('specific member/account or contact'), distinguishing it from sibling tools like create_account or create_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 implies usage for creating token-based invitations for specific entities but does not explicitly state when to use this tool versus alternatives or provide 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.
create_taskBInspect
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 already indicate a mutation operation (readOnlyHint=false, destructiveHint=false). The description adds minimal behavioral context beyond the action. It does not disclose side effects, required permissions, or the return value (output schema exists). With annotations, this 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 with no wasted words. It is front-loaded with the core action. However, it is very brief given the 7 parameters, potentially omitting helpful 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 has 7 parameters, 2 enums, and many siblings. The description fails to explain relationships to other entities (e.g., CRM, team members) or when to use specific parameters. Despite good schema coverage and output schema, the description is too sparse for an agent to fully understand the tool's role in the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter. The description adds value by mentioning optional linking to account and assignee, but does not provide syntax or format details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a task' which is a specific verb-resource pair. It also mentions optional linking (CRM account, team member), which distinguishes from other create tools. However, it lacks detail on scope (e.g., project context).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create_note or create_ticket. No mention of prerequisites or typical scenarios. The description is purely declarative without usage context.
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?
Annotations already indicate non-read-only and non-destructive behavior. Description adds that it generates an invite and a one-time token, plus the verification workflow, which goes 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 the primary purpose, 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?
Given output schema exists (so return values documented there), the description adequately covers the workflow and what the tool does. Could mention edge cases but not necessary.
Complex tools with many parameters or behaviors need more documentation. 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 extra meaning for parameters beyond schema. The output token is mentioned but that is return value, not 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 it invites a team member and returns a one-time accept token. Distinguishes from sibling accept tools by mentioning the verification 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?
Explicitly mentions the subsequent steps (accept_team_invite_request and accept_team_invite_verify), providing clear context for when to use this tool. No exclusions or when-not, but workflow is well described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketBInspect
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 already indicate a write operation (readOnlyHint=false) with no destructive behavior (destructiveHint=false). The description adds no further behavioral context, such as side effects or return value details. 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 concise sentence, well front-loaded with the key action. It could be more structured (e.g., bullet points) but is not 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 has 9 parameters, an output schema, and many sibling tools, the description is too minimal. It lacks information about post-creation behavior, required permissions, or typical use cases, making it incomplete for an agent to make an informed decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not elaborate on any parameters; all meaning comes from the schema itself. No added 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 states the verb 'Create', the resource 'support ticket', and the context 'for a member issue', distinguishing it from other create tools like create_account or create_booking. 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 is provided on when to use this tool versus alternatives such as update_ticket_status or search_tickets. The description does not mention prerequisites, competitors, 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.
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 indicate non-read-only and non-destructive. The description confirms a write operation. However, no additional behavioral context (e.g., whether the product must exist, what happens on duplicates, permission requirements) 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?
A single, well-structured sentence that immediately conveys the tool's purpose with examples. No fluff, 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?
The description is brief and lacks details about the created variation's properties or return value, though an output schema exists. Given the complexity (9 params, nested objects), more context could improve usability, but it is minimally 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 clear parameter descriptions. The description does not add any parameter-specific information beyond the schema, so baseline 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 'Add' and the resource 'variation (size, color, etc.) to an existing product'. It immediately distinguishes this tool from creating a product (sibling 'create_product') or updating a product, and the examples clarify what variations entail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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., update_product, create_product). The description only states what it does but does not provide context for selection among siblings.
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 non-readOnly and non-destructive. Description adds behavioral context about short-lived nature and browser popup requirement, which is not covered 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?
Two concise sentences, front-loaded with purpose, no unnecessary words. 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 output schema exists, description need not explain return values. It covers purpose, usage context, and behavior. Slight gap on post-creation steps, 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 coverage is 100% with clear parameter descriptions. The description does not add new parameter semantics beyond the schema, justifying 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?
Clearly states the tool creates a short-lived browser link for WhatsApp Business Embedded Signup, with specific verb 'create' and resource. Distinguishes from other create tools by specifying the WhatsApp context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that the user must open the link in a browser due to Meta's popup requirement, implying it's for interactive authorization. No explicit when-not-to-use, but sufficient guidance.
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?
Annotations already mark destructiveHint=true. Description adds valuable context about status constraint and audit retention for sent campaigns, exceeding annotation information.
Agents need to know what a tool does to the 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 action and constraint, every word earns its place, 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?
With one parameter, output schema, and annotations already present, the description fully covers the key behavior and usage condition, leaving 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?
Only one parameter 'campaignId' with schema description 'Campaign ID'. Schema coverage is 100%, so description adds no extra semantics; baseline score 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 action ('Delete a campaign') and the resource, with a specific constraint ('Only allowed in DRAFT status'), distinguishing it from sibling tools like update_campaign or validate_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') and notes what happens to sent campaigns, guiding when to use this tool vs. when not to. No explicit alternative mentioned, but the condition is sufficient.
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?
Beyond the annotations (destructiveHint=true), the description adds critical behavioral context: posts are not deleted, only unlinked. This clarifies the scope of destructiveness and aids agent decision-making.
Agents need to know what a tool does to the 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 with the primary action. Could be slightly more structured but effectively conveys the 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 tool's simplicity (one parameter) and the presence of output schema and annotations, the description is sufficiently complete. It covers the main behavioral nuance (posts not 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 parameter description 'Category ID'. The tool description adds no further 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 the tool deletes a CMS post category and explicitly clarifies that posts in the category are not deleted but unlinked, distinguishing it from other delete 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?
No guidance is provided on when to use this tool versus alternatives (e.g., when to use restore_category instead). The description does not mention exclusions or prerequisites.
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 declare destructiveHint=true, and the description adds the critical condition that only draft invoices never sent are eligible. This goes beyond annotations by specifying the scope of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key constraint, no unnecessary words. 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?
Simple tool with one parameter and output schema (not shown but present). The description covers the essential condition and directs to the alternative, making it complete 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?
Only one parameter (invoiceId) fully described in the schema. The description adds no additional meaning beyond the schema's 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 the tool deletes a DRAFT invoice, specifies the condition (only invoices never sent), and distinguishes from void_invoice. Verb and resource are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provides when to use (draft invoices never sent) and when not to (otherwise use void_invoice). Includes a direct alternative tool reference.
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?
Discloses the soft-delete behavior and restorability, adding context beyond the destructiveHint annotation. Could mention if other users are affected, but sufficient for a delete tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one required parameter, an output schema, and the simple operation, the description provides complete context including the soft-delete nature and restore option.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'documentId' is clearly described in the schema. The description adds no extra meaning, meeting the baseline for high 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 'soft-delete' and the resource 'knowledge document,' distinguishing it 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?
Explicitly says 'The agent loses access immediately' and provides the alternative 'restore_knowledge_document,' guiding 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.
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?
Annotations already declare destructiveHint: true, but the description adds valuable context that the deletion is soft (restorable), which goes beyond the annotation. 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 extremely concise with two sentences, front-loading the action and then adding a single piece of critical 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 (one parameter, output schema exists) and the presence of annotations, the description is complete. It clearly conveys the purpose and the soft-delete behavior, leaving 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?
Schema coverage is 100% as postId is described with 'The post ID'. The tool description adds no additional semantic information beyond what the schema 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?
Description clearly states the verb (delete), resource (CMS post), and method (by ID). It also distinguishes from the sibling restore_post by mentioning that soft-deleted posts can be restored, making it clear that this tool performs a soft delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 deletion and hints at restore_post as an alternative for restoration, but it does not explicitly state when to use this tool versus alternatives or provide any when-not criteria.
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 indicate destructiveHint=true; description adds that it fails if posts exist, a key behavioral detail beyond annotations. 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?
Three sentences: one for action, two for constraints. Every sentence adds 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 output schema exists, description adequately covers failure conditions and prerequisites, making it complete for a delete 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 for the single parameter (postTypeId), so description adds no additional semantic detail about the parameter itself.
Input schemas describe structure but not intent. Descriptions should explain 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 deletes a custom post type, distinguishes from sibling delete tools (e.g., delete_post, delete_campaign), and specifies that built-in types cannot be deleted, providing 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?
Explicitly mentions prerequisites (delete posts of that type first) and constraints (built-in types not deletable), guiding agent on when to use and what to do before calling.
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 mark destructiveHint=true. The description adds critical context: the tool blocks deletion when posts have data in the field unless force=true is passed, which orphans the data. This goes beyond the annotation by explaining the blocking behavior and the consequence of using force.
Agents need to know what a tool does to the 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: first states the core action, second adds the conditional blocking and force behavior. No extraneous information, efficiently 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?
With a destructiveHint annotation and output schema present, the description adequately covers the primary behavior. It could mention that restoration might be possible (given sibling restore_post_type_field), but it is complete enough for safe 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 coverage is 100% with all parameters described. The description adds value by explaining the effect of the force parameter in the context of the deletion blocking condition, which is not fully captured in 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 'Remove a field from a post type schema,' using a specific verb and resource. It distinguishes from sibling tools like create_post_type_field, update_post_type_field, or restore_post_type_field by indicating the action and the condition of blocking when posts have data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use the force parameter ('blocked unless force=true') but does not explicitly discuss when to use this tool versus alternatives (e.g., update_post_type_field or restore_post_type_field). However, the context of deletion is clear.
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 already provide destructiveHint=true, but the description adds the valuable behavioral detail that 'Past usage records are preserved.' This goes beyond what annotations specify, offering context about the deletion's impact.
Agents need to know what a tool does to the 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 short, front-loaded sentences. It contains no filler and 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 simplicity (one parameter, destructive but with preserved records) and the existence of an output schema, the description covers the essential action and key behavioral note. However, it could mention what happens to the promotion object itself or any 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?
The input schema has 100% coverage with a description for promotionId ('Promotion ID'), so the description adds no further parameter semantics. 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 first sentence 'Delete a promotion' clearly states the action and resource. The second sentence adds a behavioral note about preserving past usage records, further distinguishing it from potentially similar tools like delete_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 notes that past usage records are preserved, which implies when to use it (when you want to delete without losing history), but it does not explicitly mention when not to use it or compare it to alternatives like update_promotion or restore_promotion.
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. The description does not add beyond that—no mention of side effects, permissions, or data impact. 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 sentence with no extraneous words. It is front-loaded with the verb and resource, perfectly concise for the simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool, annotations (destructiveHint), and presence of an output schema, the description sufficiently covers what the tool does. No further 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?
Schema coverage is 100% (both param and its description). The description adds no additional meaning or usage hints beyond the schema's 'Service package ID to delete.' Baseline score 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 action ('Delete') and the resource ('service package') with a specific identifier ('by ID'). It is unambiguous and distinguishes from sibling tools for 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 implies usage for deleting service packages but provides no explicit guidance on when to use versus alternatives, nor any prerequisites or when-not-to scenarios.
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 indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that the server records a transaction with the reason as audit context, which is helpful 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: first states purpose, second provides field usage and behavioral note. No unnecessary words; front-loaded with 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 presence of an output schema, the description does not need to explain return values. It covers all key aspects: purpose, parameter usage, and behavioral context. Slight lack of guidance on error cases 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?
Schema has 100% coverage with descriptions. The description adds value by clarifying how to use the 'field' parameter and emphasizing the 'reason' parameter's role for audit trails, going beyond schema defaults.
Input schemas describe structure but not intent. Descriptions should explain 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), resource (loyalty points or stamps), and target (member). It distinguishes from siblings like get_loyalty_balance and issue_rewards by specifying the action of crediting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for the 'field' parameter ('Use field="points" for points, "stamps" for stamps'). Implicitly differentiates from read-only loyalty tools, but does not list exclusions or alternatives.
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?
The description adds significant behavioral context beyond annotations: free tiers enrol immediately, paid tiers require payment unless skipPriceCheck is set. This is critical for an AI agent to understand the tool's side effects and possible outcomes.
Agents need to know what a tool does to the 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, no fluff, and essential information is front-loaded. 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?
The description covers the main use case and payment behavior, but fails to address the skipPriceCheck parameter which is referenced but not in the schema. The output schema exists, so return values are partially covered, but the missing parameter undermines 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 description mentions 'skipPriceCheck' as a parameter, but this parameter does not appear in the input schema. This mismatch can confuse an AI agent. Additionally, the description does add value for tierId and accountId, but the missing parameter is a serious flaw.
Input schemas describe structure but not intent. Descriptions should explain 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 enrols a member into a membership tier, with a specific verb and resource. It distinguishes from siblings by mentioning the use of list_tiers first and distinguishing free vs paid tier 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 description provides explicit guidance on when to use this tool: after listing tiers with list_tiers. It also explains the behavioral difference for free vs paid tiers, including the PAYMENT_REQUIRED return and the skipPriceCheck option.
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 do not provide much behavioral context. The description adds that this tool 'only prepares an internal Workroom channel', hinting at its scope but not disclosing idempotency, permissions, or side effects beyond creation. More detail 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?
The description is two sentences, each contributing value: first states the core function, 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?
The description covers the tool's purpose and usage trigger. It mentions it prepares an internal channel, implying the output is a thread reference. With an output schema present (not shown), this is sufficient for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for each parameter. The tool description does not add additional semantics beyond the schema, so it meets the baseline but does not enhance 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 action (find or create) and resource (Workroom DM thread between merchant user and AI colleague). It specifies a use case ('when an inbound event deserves owner attention but no threadId was provided') which distinguishes it from related tools like 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?
The description explicitly states when to use the tool: when an inbound event deserves owner attention and no threadId is provided. However, it does not mention when not to use it or alternatives, such as using post_workroom_message if a threadId exists.
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?
Discloses non-obvious behaviors: costs credits, async polling timeout, job continues running, and ability to retrieve later via jobId. Annotations only declare readOnlyHint=false and destructiveHint=false, so description 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?
Concise yet informative. Front-loaded with core purpose, followed by use cases and key notes. 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?
Covers all essential aspects: what it does, output URL, async handling, credit cost, and parameter details from schema. With 7 parameters and output schema present, it is sufficiently complete. Minor omission: no explicit error handling 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 coverage is 100% with descriptions for all 7 parameters. The description does not add significant meaning beyond the schema beyond mentioning jobId in the response (output). 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 'Generate an AI image via kie.ai and return its public R2 URL.' It specifies the action, resource, and output, and distinguishes from siblings like 'generate_post_cover' by noting it does not attach to a post itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use cases: 'mint reusable URLs for content blocks (image, gallery), product photos, or any field that takes an image URL.' Also mentions cost credits and async behavior with jobId for retrieval. Could be improved by explicitly stating when not to use, but overall good guidance.
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?
Annotations provide minimal behavioral info (readOnlyHint=false, destructiveHint=false). The description adds significant context: it's a write operation, costs credits, involves asynchronous polling with timeout, and explains the asset storage process. 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?
Three sentences pack the main purpose, workflow steps, and a fallback without waste. Front-loaded with the core action. 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?
Handles complexity: async job, polling, cost, timeout fallback. Output schema likely documents return values. Could mention permissions or error handling, but given annotations, it's 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 coverage is 100% (all 8 parameters described well). The description adds only a minor note about 'list_image_models' for modelCode, but does not enhance meaning beyond the schema. 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 'generates an AI image and attaches it as a post's featuredImage', specifying the verb, resource, and outcome. It distinguishes itself from siblings like 'generate_image' (just generates) and 'upload_post_cover_from_url' (uploads from URL).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the workflow (submits job, polls, copies to R2, writes URL), mentions costs, and provides a fallback for timeout. It gives context but does not explicitly differentiate from 'generate_image' or 'upload_post_cover_from_url', though the unique attach behavior is implied.
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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: caching on first read, possible statuses ('ready', 'skipped', 'failed', 'not_found'), and file type support. 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?
Three sentences with no filler. Front-loaded with purpose, then caching and return values. 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 simplicity and presence of output schema, the description covers purpose, caching behavior, return statuses, and file types. Adequate for an agent to use correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (attachmentId) with 100% schema coverage. Schema description is clear. Description does not add additional semantics beyond what schema 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 specifies file types and caching behavior, distinguishing it from sibling tools like list_attachments or 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 provides explicit guidance: 'Use when a message references an attachment you need to read.' It implies when not to use (e.g., if no attachment ID), but does not explicitly list exclusions or alternatives. Caching note also helps.
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 readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by noting 'including before/after snapshots when available', which is behavioral context 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?
Single sentence, front-loaded with the primary action, efficient and without waste. 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 get-by-ID tool with output schema and comprehensive annotations, the description is complete. It mentions the key additional context (snapshots) and no further details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the parameter as 'Audit log ID'. The description adds no new parameter information beyond what's in the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch a single audit log entry by ID', using a specific verb and resource. It distinguishes from siblings like 'list_audit_logs' (multiple logs) and 'search_audit_logs' (searching), and adds detail about including before/after snapshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 specific audit log ID is known, but does not explicitly state when to use it vs alternatives like list_audit_logs or search_audit_logs, nor does it provide when-not-to-use scenarios.
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?
The description aligns with annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) and is straightforward. It adds no extra behavioral context beyond the annotations, which already disclose safety traits. A score of 4 reflects that the description does not contradict and is consistent.
Agents need to know what a tool does to the 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 11-word sentence that is front-loaded with the action and resource. No extraneous 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?
For a straightforward read tool with 4 parameters (2 required) and an output schema, the description is sufficient. It covers the core purpose without needing to explain return values (handled by output schema). Minor omissions like pagination or slot ordering are acceptable given 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 description coverage is 100%, so the description does not need to add parameter details. The description mentions 'service' and 'specific date', which correspond to required parameters serviceId and date. However, it adds no additional semantic meaning 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 the tool's purpose: 'Find available booking slots for a service on a specific date.' It uses a specific verb ('find') and resource ('available booking slots'), and provides context (service, date). This distinguishes it from siblings like create_booking 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?
The description implies usage context (checking slots before booking) but does not explicitly state when to use or when not to use this tool versus alternatives. It is clear enough for an agent to infer usage, but lacks explicit exclusion or alternative guidance.
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 indicate readOnlyHint=true and destructiveHint=false, so the description's addition of output contents (line items, status history, participants) provides 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?
The description is a single sentence that is direct and front-loaded with the purpose, containing 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 read-only tool with one parameter and an output schema, the description sufficiently explains what the tool returns, making it complete enough for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes the bookingId parameter. The description adds no additional parameter info but is not required to; it compensates by explaining the output, keeping the parameter semantics 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 verb 'Get' and the resource 'full booking details', and explicitly lists what is included (line items, status history, participants), distinguishing it from list or summary 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 obtaining detailed booking data, but does not explicitly state when to use this over alternatives like list_bookings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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, idempotentHint=true, destructiveHint=false. The description adds behavioral context by specifying the categories of settings retrieved (cancellation rules, visibility options, confirmation requirements), which is 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 sentence that conveys all necessary information without redundancy. It is front-loaded with the action and resource, 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 no parameters, an output schema exists (though not inspected), and annotations cover safety, the description is complete. It explains what the tool retrieves and suffices for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so description coverage is 100%. The description adds meaning by detailing the types of settings returned, compensating for the absence of parameter docs.
Input schemas describe structure but not intent. Descriptions should explain 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 global booking settings' with specific areas: customer booking flow, cancellation rules, visibility options, and confirmation requirements. It uses a specific verb and resource, and implicitly distinguishes from sibling tools like 'get_booking_detail' (individual booking) and 'get_booking_stats' (statistics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, but its purpose as a global settings getter is clear. Sibling tools for specific bookings or stats exist, but no guidance on selecting among them is provided.
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?
Annotations provide readOnlyHint=true and idempotentHint=true, indicating safe read-only operation. Description adds value by specifying the exact output dimensions (time periods and status breakdown), which is 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?
Single sentence, 12 words, front-loaded with 'Get booking counts'. No wasted words, clearly communicates 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 zero parameters, existing annotations, and an output schema, the description is complete. It covers the essential information an agent needs 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?
Input schema has zero parameters, so schema coverage is 100%. Description adds meaning by summarizing the output, which is useful for an agent. Baseline 4 applies for 0 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 'Get booking counts: today, this week, this month, and breakdown by status' uses a specific verb (get) and resource (booking stats) and clearly differentiates from sibling tools like list_bookings or get_booking_detail by focusing on aggregated counts with time periods and status breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_bookings. The description implies use for aggregated statistics rather than individual bookings, but lacks when-not or alternative tool names.
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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no new behavioral traits beyond confirming the read operation. It does not describe what happens if the contact ID is invalid or missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is immediately useful and contains no extraneous words. It is front-loaded with 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 simple fetch operation, an output schema exists to describe return values, so the description does not need to elaborate. It adequately covers the core action, though it could mention how missing IDs are handled.
Complex tools with many parameters or behaviors need more documentation. 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 single parameter contactId described as 'The contact ID'. The description says 'by ID' but adds no additional semantics beyond the 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?
The description 'Fetch a single contact by ID' clearly specifies the action (fetch), the resource (contact), and the selection criterion (by ID). It distinguishes this tool from siblings like list_contacts and create_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?
No guidance on when to use this tool versus alternatives. For example, it does not mention that for multiple contacts, list_contacts should be used instead, nor does it indicate any prerequisites or limitations.
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 and idempotentHint=true, indicating a safe, non-destructive read operation. The description adds minimal behavioral context beyond stating it shows chat history. It does not contradict annotations, but it also fails to disclose details like ordering, pagination behavior, or the structure of returned messages.
Agents need to know what a tool does to the 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 unnecessary words. The purpose is front-loaded. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately explains the tool's purpose and resource for a simple read operation. With an output schema available (not shown), return values are covered. A minor gap is the lack of mention of message ordering (e.g., chronological). Overall, it is reasonably complete given the 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?
All three parameters have schema descriptions (100% coverage). The description adds a default value for 'limit' (20), which is helpful. However, it does not elaborate beyond what the schema provides for 'search' and 'conversationId'. The tool description itself does not mention parameters at all, so the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'messages from a specific conversation thread', and specifies it shows 'chat history between the merchant and a contact'. This distinguishes it from sibling tools like list_conversations (lists threads) and post_workroom_message (creates messages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description does not compare with alternatives such as list_conversations or search_crm. It only implies a conversationId is needed, but no context on when this tool is appropriate versus others.
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, destructiveHint=false, covering safety. The description adds the specific KPIs returned, which is useful context but does not disclose additional behavioral traits such as caching, rate limits, or data freshness.
Agents need to know what a tool does to the 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 lists the KPIs, front-loaded with the action. Every word is valuable; 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 zero parameters, rich annotations, and an existing output schema, the description adequately covers the tool's purpose and return values. It does not need to explain return format because the output schema 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?
With zero parameters and 100% schema coverage, the description adds no parameter information beyond the schema. The listing of KPIs helps understand the output but not parameter semantics. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves high-level business KPIs and enumerates specific metrics (member count, new members, etc.). The name 'get_dashboard_stats' combined with the description distinguishes it from sibling tools like get_booking_stats or get_invoice_stats that focus on specific areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 an executive dashboard view but does not explicitly state when to use this tool versus alternatives like get_booking_stats or list_*. There are no exclusions or prerequisites mentioned.
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 already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description adds valuable behavioral context by specifying the exact data returned (line items, payment history, customer detail). 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?
One concise sentence that front-loads the verb and resource, then lists details. Zero 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 that an output schema exists (as indicated in context signals), the description appropriately focuses on what is fetched without needing to explain return format. It covers all necessary aspects for a single-invoice retrieval 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% for the single parameter 'invoiceId', which is self-explanatory. The description does not add any extra information about the parameter beyond what the schema provides, 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 uses the specific verb 'Fetch' and resource 'invoice', and explicitly lists what is included (line items, payment history, customer detail). This clearly distinguishes it from siblings like 'list_invoices' (which returns multiple) and other 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?
The description implicitly conveys when to use this tool: when you need detailed information about a single invoice. It does not explicitly state when not to use it, but the context of siblings (e.g., 'list_invoices', 'create_invoice') makes the usage clear. A small gap in explicit guidance prevents a 5.
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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's behavioral disclosure burden is lower. The description adds that the tool returns aggregate metrics (outstanding, overdue, revenue) and implies a time range ('this period'), but does not clarify how the period is determined (e.g., current month, last 30 days). This is adequate but not highly 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?
The description is only two sentences, front-loaded with the tool's purpose and followed by a usage context. Every word adds value, and no irrelevant details are included. It is optimally 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 has no parameters and an output schema (implied), the description covers the main return values (outstanding totals, overdue counts, revenue) and usage context. However, the vague term 'this period' could be more precise (e.g., 'current billing period'). Despite this, the description is largely complete for a simple stats tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain any input fields. With 100% schema coverage, the baseline is 4. The description adds value by hinting at the output structure, which is relevant to parameter semantics only indirectly. No deduction needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'Outstanding totals, overdue counts, and revenue this period', which are specific financial metrics related to invoices. This distinguishes it from sibling tools like get_invoice (single invoice details) and other stats tools (e.g., get_booking_stats). The verb 'get' and resource 'stats' are implied, and the context of 'this period' 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 says 'Used by the weekly-snapshot playbook', providing a concrete use case. However, it does not explicitly state when not to use this tool or suggest alternatives, such as using get_invoice for individual invoice details. The usage context is clear but lacks exclusions.
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?
The description adds value beyond annotations by clarifying that only metadata and status are returned, not the actual content bytes. This is crucial for an agent that might expect full document content. It also points to the REST endpoint for content, providing 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 extremely concise—two sentences with no wasted words. It front-loads the action ('Fetch') and result ('metadata + status'), 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 presence of an output schema, the description doesn't need to detail return values. It adequately covers the key distinction from the content endpoint. However, it omits any mention of error cases or prerequisites (e.g., document must exist), but for a simple read tool this 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?
The sole parameter 'documentId' is well-described in the schema as 'Knowledge document ID'. The tool description does not add any additional meaning or context beyond what the schema already provides. With 100% schema coverage, baseline is 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 fetches a single knowledge document with metadata and status, distinguishing it from related tools like list_knowledge_documents (list vs single) and delete_knowledge_document. The specific verb 'Fetch' and resource 'knowledge document' make the action 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 explicitly notes that content bytes are served via a different endpoint and that this tool returns only metadata, guiding the agent on when to use this vs the content endpoint. However, it does not explicitly state 'do not use for content retrieval', though the implication is strong.
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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds value by disclosing that null is returned if the member is not enrolled, which is 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, well-structured sentence with a dash separator. Every word adds value, no fluff. It is appropriately sized and 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?
Given the tool's simplicity (one parameter, read-only, non-destructive) and the existence of an output schema, the description covers essential aspects: what balance includes and the null case. No gaps remain for typical 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 only parameter (accountId) is described in the schema as 'The member/account ID' with 100% schema coverage. The description does not add further meaning (e.g., format, example), 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 it retrieves the current loyalty balance and specifies the components (points, stamps, credits, lifetime totals, active membership tier). It also notes the return value when not enrolled. This distinguishes it from siblings like get_membership_tier which only get tier info, and get_member_profile which covers broader profile data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 full loyalty balance, but does not explicitly mention when to use this tool versus alternatives like get_membership_tier or earn_loyalty_points. 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_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, so the description adds minimal behavioral context. It mentions 'detailed profile' but doesn't elaborate on return structure or side effects. Given rich annotations, a 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?
Single sentence, no wasted words. Information is front-loaded and directly conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and an output schema, the description is adequate. It lacks detail about what fields constitute 'profile', but that's covered 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?
Only one parameter (accountId) with schema description 'The account ID'. Description adds 'by ID' but no additional semantics. Since schema coverage is 100%, baseline is 3 and description doesn't 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?
Description clearly states 'Get detailed profile for a specific member/account by ID.' It specifies the action (get), the resource (detailed profile), and the input (by ID), distinguishing it from other get tools like get_contact or get_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?
No explicit guidance on when to use this tool versus alternatives. The description implies usage when needing a member profile by ID, but doesn't contrast with similar tools like get_contact or get_membership_tier, which could cause confusion.
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 already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description is consistent and adds no contradiction, but doesn't provide additional behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and 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?
Complete for a simple read-only retrieval tool with one parameter and an output schema. No missing information needed for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with description for the required tierId parameter. The tool description adds 'by ID' which is already implied, offering 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?
Clear verb ('get') and resource ('membership tier') with specific method (by ID). Distinguishes from sibling '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?
No explicit guidance on when to use or alternatives. The purpose implies it's for fetching a single tier by ID, but lacks direction compared to 'list_tiers'.
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 declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows it's a safe read. The description adds that it includes associated products and discounts, providing extra behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 10 words, clear and front-loaded. 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 read tool with one parameter and an output schema, the description fully captures what the tool does and what it returns (detail with products and discounts). 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?
Schema coverage is 100% with a clear description for ruleId ('The offer rule ID'). The tool description adds no further meaning; baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'offer rule detail including associated products and discounts.' This distinguishes it from sibling tools like list_offer_rules (list) and create_offer_rule (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (retrieve a specific rule's details), but provides no explicit guidance on when to use versus alternatives like list_offer_rules or update_offer_rule (if exists). No exclusions or contextual notes are given.
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 and destructiveHint=false. The description adds that the tool returns line items, which is useful but does not disclose 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?
The description is a single, well-structured sentence with no wasted words, conveying the tool's purpose 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?
Given the simple input schema, existing output schema, and safe annotations, the description is sufficiently complete. It covers the key behavior (retrieving full order with line items) without needing additional detail.
Complex tools with many parameters or behaviors need more documentation. 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 parameter description already explains 'The order UUID'. The tool description does not add meaning beyond this, 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 uses a specific verb ('Get') and resource ('order detail') with scope ('full' and 'including line items'), clearly distinguishing from sibling tools like 'list_orders' which lists summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 order, but it does not explicitly state when to use this tool versus alternatives such as 'get_invoice' or 'list_orders', nor does it provide exclusions or context.
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 indicate read-only, idempotent, non-destructive. Description adds no new behavioral traits beyond confirming it shows information.
Agents need to know what a tool does to the 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 the 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?
Lists exactly what it returns (plan, subscription, modules, quota) and has an output schema, making it complete for understanding the tool's output.
Complex tools with many parameters or behaviors need more documentation. 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% coverage, so the description does not need to add parameter info. Baseline 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 shows organization plan, subscription/payment state, enabled modules, and quota usage. It uses a specific verb 'Show' and distinguishes from 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?
Explicitly says 'Use before deciding whether an agentic operation is allowed,' providing clear context for when to use. However, it doesn't mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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=true, idempotentHint=true, and destructiveHint=false, so the description adds value by specifying the return contents (content blocks, categories, tags). 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 is front-loaded with key info and contains 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?
Given the tool's simplicity, the presence of an output schema, and annotations covering safety, the description is adequate. It mentions key contents but could be slightly more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'postId' is described as 'The post ID' in the schema. The description does not add any additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'CMS post' and specifies what is included ('content blocks, categories, and tags'). It clearly distinguishes from sibling tools like 'list_posts' 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 needing detailed info on a single post, but does not explicitly provide when-not-to-use or alternatives. Siblings include many other get_ tools, but no direct alternative for posts is 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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, establishing it as a safe read. The description adds useful context about what data is returned (images, options, variations), improving 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?
Single sentence, front-loaded with the verb and purpose, no wasted words. 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 simple get tool with a single parameter and output schema present, the description adequately covers the tool's purpose and scope. No additional information 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% for the single parameter productId, with a description already present. The tool 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?
Description clearly states the tool retrieves full product detail including specific fields like images, options, and variations. It distinguishes from siblings such as list_products (list) and update_product (update) by focusing on comprehensive retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. Usage is implied by the verb 'get', but no exclusions or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotionARead-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 (readOnlyHint=true, idempotentHint=true, destructiveHint=false) already convey safety and idempotency. The description adds that it returns 'details,' but does not elaborate on the nature of those details or any behavioral nuances 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, concise, and contains no unnecessary words. Every word serves the 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 existence of an output schema (not shown), the description is adequate for a simple read operation. It explains the tool's purpose, though it could optionally hint at the output structure for extra clarity.
Complex tools with many parameters or behaviors need more documentation. 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 parameter 'promotionId' described as 'The promotion ID.' The description adds no additional meaning, so it meets the baseline but does not enhance 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 action ('get details') and the resource ('a specific promotion/coupon code'), distinguishing it from sibling tools like list_promotions (which retrieves multiple promotions) and create/update/delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as list_promotions (for summaries) or validate_promotion (for validation). The description does not provide context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_segment_membersARead-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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover safety and idempotency. The description adds no additional behavioral traits (e.g., pagination behavior, authorization needs, or response format) 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 with no redundant words. It front-loads the essential information and wastes no space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated) and full schema coverage, the description is largely adequate. However, it could briefly mention that the tool returns a list of members or that 'limit' defaults to 20, but these are minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning both parameters ('limit' and 'segmentId') are already documented in the schema. The description does not add extra meaning, such as clarifying that 'limit' controls pagination or that 'segmentId' is required. 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?
Description clearly states the verb 'Get' and the resource 'members that belong to a specific segment', making the action and object unambiguous. It distinguishes from sibling tools like 'list_segments' or 'get_member_profile' by specifying 'members of a segment' as the output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_segments' or 'search_members'. The description does not specify context, preconditions, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds no new behavioral context beyond what is provided by annotations and the schema, such as rate limits or data retention.
Agents need to know what a tool does to the 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, and front-loaded sentence that conveys all necessary information with zero 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 detailed here but indicated), the description adequately outlines the key aspects covered by the tool (addons, staff, resources, tier pricing). The low parameter count and high schema coverage make this description fitting.
Complex tools with many parameters or behaviors need more documentation. 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 'serviceId' already described as 'The service ID' in the schema. The description does not add any additional meaning or constraints beyond the schema 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 ('Get'), the resource ('full service details'), and explicitly lists included aspects ('addons, staff, resources, and tier pricing'). This distinguishes it from sibling tools like 'list_services' which only provides an 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?
The description implies usage for retrieving detailed information about a specific service, but does not explicitly state when to use this tool over alternatives (e.g., 'list_services' for all services, 'get_service_package' for packages). No when-not-to-use or alternative names are provided.
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 (readOnlyHint, idempotentHint, destructiveHint) already declare the tool as safe and read-only. The description adds no additional behavioral details (e.g., error handling, permissions, rate limits). It neither contradicts nor enriches 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, clear sentence with no wasted words. It is front-loaded with the action and immediately specifies the scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description provides a high-level overview of the return content (applicability and items). It is sufficiently complete for a simple read tool, though it could briefly note that the output schema details the structure.
Complex tools with many parameters or behaviors need more documentation. 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 for the single parameter (packageId: 'Service package ID'). The tool description does not add any new meaning beyond what the schema already provides, 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 'Get' and resource 'service package detail', specifying what is included ('applicability and selected booking service/event items'). This distinguishes the tool from siblings like get_service_detail (single service) and list_service_packages (list all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_service_packages or get_service_detail. An agent would have to infer context from the name alone, leading to potential misuse.
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 provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context about returned fields (customer, tier, billing cycle, renewal info), which is valuable beyond annotations. No additional behavioral traits (errors, permissions) are disclosed, but annotations cover safety profile.
Agents need to know what a tool does to the 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 with the action and resource. Every word is essential, 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 presence of an output schema, the description need not detail return values. It appropriately lists key fields returned. However, it lacks details on error states or access requirements, which are minor gaps for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter (subscriptionId) with 100% description coverage. The description does not add new meaning or format details beyond the schema's 'Subscription ID'. 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 verb 'Fetch' and the resource 'subscription', and specifies the included data (customer, tier, billing cycle, renewal info). This differentiates it from siblings like list_subscriptions (multiple) and cancel_subscription (different 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 does not explicitly state when to use this tool versus alternatives like list_subscriptions. The context is implied by the verb 'Fetch a single subscription', but no direct guidance on when to avoid or choose other tools is given.
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 declare readOnlyHint=true and idempotentHint=true, confirming safe read behavior. The description adds transparency by enumerating specific data returned (blocks, status, etc.), providing context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, complete sentence with no wasted words. It efficiently conveys the tool's function and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently covers what the tool returns. The listed details (blocks, status, etc.) align with expected output, making the description complete for a retrieval 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 is only one parameter (surveyId) with schema coverage 100%. The description does not elaborate beyond the schema, which is adequate given the parameter's simplicity. 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 'Get survey detail' and lists specific included aspects (blocks, publishing status, visibility, settings, response count), making it distinct from siblings like get_survey_responses or 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?
The description does not explicitly mention when to use this tool versus alternatives. Usage is implied by the purpose, but no direct guidance on conditions or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_survey_responsesARead-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 declare readOnlyHint=true and idempotentHint=true. The description aligns but adds no extra behavioral details such as pagination or default 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?
The description is a single short sentence, front-loaded and concise, though it could be slightly more informative without being 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 output schema exists, return structure is covered. However, the description lacks context on filtering, ordering, or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The tool description does not add any 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 'List responses for a survey' clearly states the verb and resource, distinguishing it from sibling list tools like 'list_surveys' or 'list_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?
No explicit guidance on when to use this tool versus alternatives. The description is minimal and does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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, idempotentHint=true, and destructiveHint=false, which sufficiently describe safety. The description adds no further behavioral traits beyond what annotations provide, but does not 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?
The description is a single, clear sentence with no wasted words, 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?
Given the presence of an output schema (not shown), the description adequately covers the tool's purpose for a simple metrics retrieval. It could hint at the type of metrics, but output schema likely fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter surveyId, and the description does not add additional meaning beyond the schema's 'Survey ID' description. 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 it retrieves 'response and invitation metrics for a survey overview dashboard,' specifying the verb and resource while differentiating from sibling tools like get_survey (general info) and get_survey_responses (raw 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 guidelines on when to use this tool versus alternatives such as get_survey or list_surveys, nor any indication of prerequisites or context 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.
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 indicate read-only, idempotent, non-destructive behavior. The description adds that results are grouped by status, providing useful behavioral 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 sentence, no wasted words, front-loaded with action and result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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. However, the description lacks detail on scope (e.g., all tickets or current user's tickets), which may leave ambiguity for agent 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?
No parameters exist in the schema; schema description coverage is 100%. The description does not need to add parameter info, and the baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'ticket counts' with the grouping 'by status', clearly distinguishing it from sibling tools like list_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 guidance on when to use this tool versus alternatives such as list_tickets or get_dashboard_stats; lacks context on whether it applies to all tickets or filtered scope.
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 provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the returned data types (WABA/phone metadata, agentic connect session state), 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 immediately states the purpose and includes relevant details. Every 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?
Given the tool has no parameters and an output schema exists (implied), the description explains the purpose and what metrics are included. It is complete for a simple read-only check 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 no parameters, so schema description coverage is trivially 100%. Per guidelines, baseline for 0 parameters is 4. The description does not need to add anything, and it doesn't.
Input schemas describe structure but not intent. Descriptions should explain 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 for a company, listing specific data returned (WABA/phone metadata, session state). It uses a specific verb and resource, distinguishing it from the sibling '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 does not provide any guidance on when to use this tool versus alternatives, such as when to check connection status versus when to create a connection link. There are no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_rewardsAInspect
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 indicate readOnlyHint=false, confirming it's a write operation, but the description adds no extra behavioral context (e.g., side effects, limitations). With annotations present, the description provides minimal added value beyond the bare 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—two sentences—with the action front-loaded. Every word is necessary, with no extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description adequately covers the tool's purpose and inputs. It could mention the restriction of up to 50 members (present in schema but not description) for completeness, but it's 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%, with clear descriptions for each parameter. The description merely restates the required parameters without adding new semantic insights, so it meets 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 'Issue' and the resource 'gift/reward to multiple members', differentiating it from siblings like 'earn_loyalty_points' 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?
The description mentions required inputs (gift offer ID and member IDs) but does not specify when not to use this tool or provide alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_resource_to_serviceAInspect
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?
Annotations are present but add no extra behavioral context beyond readOnlyHint and destructiveHint. The description does not disclose potential side effects or reversibility, but given annotations, the baseline is adequate.
Agents need to know what a tool does to the 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, direct sentence with no unnecessary words, 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 linking operation with two parameters and an output schema, the description is nearly complete. It could mention allowed resource types or the effect of linking, but it is sufficient for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with straightforward parameter descriptions. The tool 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 action ('Link') and the objects involved ('room/resource' and 'booking service'), distinguishing it from related tools like 'assign_staff_to_service' or 'create_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 provides no guidance on when to use this tool versus alternatives, such as prerequisites or when linking is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_logsBRead-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, idempotentHint=true, and destructiveHint=false, so the description does not need to reiterate these. It adds the scope 'for this company' and mentions filtering, but lacks details like pagination or default limit. This is adequate 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 sentence that efficiently conveys the core purpose and available filters, with no wasted words. It is 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 existence of an output schema and explicit annotations, the description covers the essential purpose. However, it omits behavioral context such as pagination, ordering, or the meaning of 'recent', which would help the 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?
The input schema has 100% coverage with descriptions for all parameters. The description merely lists the same filter names without adding semantics 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 tool lists audit log entries for the company and enumerates available filters. However, it does not explicitly differentiate from sibling tools like 'search_audit_logs' or 'get_audit_log', which lowers 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?
No guidance is provided on when to use this tool vs alternatives. The agent is left to infer based on name convention, which is insufficient.
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 declare readOnlyHint=true and idempotentHint=true, so the description adds no new behavioral traits (e.g., pagination, ordering, scope). It only restates filter capabilities already 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?
Single sentence covering key purpose and filters. Zero 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?
Adequate for a read-only list tool with complete schema and output schema. However, it lacks details on default ordering, scope (e.g., within the current company), or that all filters are optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description summarizes filter types (e.g., 'date range', 'status') matching schema parameters but adds no deeper meaning or formatting details 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 'List bookings' as the core function and enumerates filter categories (date range, status, service, staff, member). This distinguishes it from siblings like get_booking_detail (single booking) and 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?
Usage context is implied (listing multiple bookings) but no explicit guidance on when to use this vs. alternatives like get_booking_detail or search_crm. No when-not-to-use or exclusions provided.
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 no destructiveHint, covering safety and idempotency. The description adds context that the tool returns 'delivery stats', which goes beyond annotations. No contradiction; no additional behavioral details (e.g., pagination, auth) are needed given 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 that is front-loaded with key action and resource, no fluff. All information is meaningful and structured 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?
Given the presence of an output schema and 5 simple parameters, the description adequately summarizes the tool's purpose and high-level return. It could explicitly mention the scope (e.g., 'all campaigns'), but the context signals (openWorldHint=false) imply a bounded set.
Complex tools with many parameters or behaviors need more documentation. 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 value by listing some channel values ('email, SMS, WhatsApp') but omits 'push' from the enum. This is marginal improvement; 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 verb 'List', the resource 'marketing campaigns', and specifies supported channels (email, SMS, WhatsApp) along with 'delivery stats'. This clearly differentiates it from sibling tools like create_campaign or update_campaign, and from other 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 implies usage (listing campaigns), but lacks explicit guidance on when to use this tool versus alternatives (e.g., when to use filter parameters, when not to use, or when to use other list tools). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 declare readOnlyHint=true and destructiveHint=false, so the description adds no further behavioral context (e.g., pagination, ordering). It doesn't contradict annotations but provides no extra 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?
Single sentence with no wasted words. 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 tool's simplicity (no parameters, read-only, output schema exists), the description is sufficiently complete. No missing critical 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?
No parameters in schema, so description doesn't need parameter details. It correctly states the resource being listed. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List CMS post categories.' uses a specific verb 'List' and resource 'CMS post categories'. It clearly distinguishes from sibling tools like create_category or delete_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 versus alternatives like list_tags or list_service_categories. No 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_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, idempotentHint=true, destructiveHint=false, so the description's behavioral disclosure is minimal. It adds that contacts are CRM-linked and filterable, but doesn't mention pagination, ordering, or result limits (schema covers limits). Adequate but not enhanced 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?
Extremely concise: one 14-word sentence that front-loads the core purpose. Every word is necessary; no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with good annotations and output schema, the description covers the essential purpose and filtering options. It could mention default limit (20) and that results are paginated, but the schema covers limit. Very 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 parameter descriptions. The description restates filtering by account or search but adds no new meaning. 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 filtering by account or search. It distinguishes from general people tools and other list_ tools, but could more explicitly differentiate from 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?
Usage is implied: use to get multiple contacts with optional filters. No explicit guidance on when to use this vs. search_crm or get_contact, which could cause ambiguity.
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 indicate readOnlyHint=true and idempotentHint=true. The description adds that it shows unread counts and last message time, which is minor additional context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and scope, no wasted words. 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?
The description covers the tool's function and what it returns, but does not mention pagination or ordering. However, an output schema exists to fill details, making it mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description provides high-level context but does not add new information about specific parameters beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain 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 'messaging conversations' across multiple channels, differentiating from sibling tools like get_conversation_messages 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 for high-level conversation overview across channels, but does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_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 declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds only that it lists deals with optional filters, with no additional behavioral context such as pagination, sorting, or data freshness. 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, front-loaded sentence with no redundant 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?
Given 6 optional parameters and the existence of an output schema, the description is overly brief. It does not mention that the tool returns a paginated list, how filters combine, or any ordering. Without the output schema, this would be inadequate; even with it, the description lacks completeness for a tool with multiple filter options.
Complex tools with many parameters or behaviors need more documentation. 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 6 parameters have descriptions in the schema. The description does not add any additional meaning or usage guidance beyond what the schema provides, meeting the baseline for high 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 'list', the resource 'CRM deals (sales pipeline)', and mentions optional filters. It distinguishes from sibling tools like list_contacts or list_bookings by specifying the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing deals with optional filters but does not provide explicit guidance on when to use this tool vs alternatives, nor when not to use it. No direct mention of alternatives 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_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 declare readOnly, idempotent, non-destructive. Description adds useful behavioral context: results are sanitized (provider/cost hidden). 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, no wasted words. First sentence states core purpose and key detail, second provides usage guidance. Perfectly 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 no parameters, output schema exists, and annotations cover safety, the description is fully complete. It explains what the tool does, what is hidden, and how to use the result.
Complex tools with many parameters or behaviors need more documentation. 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 is 100% by default. Baseline 4 is appropriate since description adds no param detail but none needed. The description focuses on output usage, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain 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 AI image-generation models, with explicit note of sanitization (provider/cost hidden). It directly ties to usage: selecting a `modelCode` for `generate_post_cover`, distinguishing it from sibling tools like `generate_image`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States purpose is to pick a modelCode for generate_post_cover, providing clear context. Does not explicitly state when not to use, but the straightforward nature (no parameters) and sibling context make misuse unlikely.
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 it as read-only and non-destructive. Description does not add behavioral details beyond that (e.g., pagination, result limit), but since annotations carry the burden, the score is adequate.
Agents need to know what a tool does to the 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 core action, zero wasted words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return format is covered. Parameter count is 5, all optional, and the description provides a key filter example. Lacks mention of default limit (20) but that's in schema description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are documented in the input schema with descriptions. The tool description adds practical value by highlighting the 'OVERDUE' status tip, which goes 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?
Description clearly states 'List invoices with optional filters' using specific verb and resource. Provides a concrete example for filtering overdue invoices, but does not explicitly distinguish from sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a specific usage tip (status 'OVERDUE'), but lacks guidance on when to use this tool versus other list tools or alternatives. No when-not or context for choosing this function.
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?
Adds value beyond annotations by clarifying the tool returns metadata only and does not include content bytes. The description reinforces the read-only, idempotent nature indicated in 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?
Three concise sentences: purpose, usage guidance, and limitation. No redundant information. Front-loaded with 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?
Adequate for a list tool with output schema. Explains parameter usage and return limitation. Lacks info on pagination beyond limit, but not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters fully (100%). Description adds context for `updatedAfter` (delta sync) and implies default for `limit`. Slightly exceeds 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?
Explicitly states 'list merchant knowledge base documents' and specifies inclusion of uploads and scraped URLs. Distinguishes from siblings by noting it returns metadata only and that content is fetched separately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Use to discover what raw sources exist for the LLM-wiki pattern' and advises using `updatedAfter` for delta sync. Does not explicitly list alternatives, but the distinction from content-fetching tool is implied.
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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds the behavioral scope 'current user has access to' but beyond that, no additional traits are disclosed. The bar is lower due to annotations, so a 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 consists of two concise sentences with no redundant information. It is front-loaded with the purpose and provides a clear 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?
Given the tool's simplicity (no parameters, output schema likely present), the description fully covers the necessary context: what the tool does and when to use it. No additional information 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 and schema coverage is 100%. Per guidelines, baseline is 4 for 0 parameters. The description does not add parameter info but doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain 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' with the specific scope 'the current user has access to'. It uses a specific verb and resource, and the phrase 'before switching' distinguishes it from sibling tools like 'switch_company'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use this to see available orgs before switching' provides explicit context on when to use this tool, implying it is a precursor to switch_company. No exclusions or alternatives are mentioned, but it's sufficient for this simple tool.
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 provide readOnlyHint, destructiveHint, idempotentHint, covering safety. Description adds that it lists notes attached to entities, but does not disclose pagination, ordering, or permissions. With annotations present, the bar is lower, but no extra behavioral context 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?
Single sentence, front-loaded, no waste. Efficiently conveys the core purpose. Minor deduction for the slight inaccuracy regarding entity types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, return values need not be explained. However, description lacks mention of invoice in entity types and gives no context about sorting or result limits. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. However, description does not add meaning beyond schema; it inaccurately lists entity types (omits 'invoice') and does not explain limit default. This reduces value below 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?
Description uses specific verb 'list' and resource 'notes attached to a member/account, booking, or ticket', clearly identifying the tool's function. It distinguishes itself from other listing tools by focusing on notes. However, it omits 'invoice' from the entity type list, which is present in the schema enum, causing slight inaccuracy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. There is no comparison with search_crm or other note-related tools. The description only states what it does, not when to choose it over siblings.
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 indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, establishing safety. The description adds that recipients are masked by default for incident-response safety, a behavioral trait not in annotations. 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 verb 'List', no redundant phrases. Every word adds value, succinctly conveying purpose and a key behavioral 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?
While output schema likely covers return format, the description omits mention of filtering capabilities (e.g., by status, channel) and pagination, which are important for a listing tool with 8 optional parameters. Adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. 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 tool description adds no additional parameter information, 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 lists notification delivery logs for the current company, a specific verb-resource pair. It mentions recipient masking for safety, which distinguishes it from other list tools like list_audit_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 viewing notification logs but provides no explicit guidance on when to use this vs. alternatives (e.g., list_audit_logs) or when not to use it. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 declare readOnlyHint, idempotentHint, and destructiveHint, so the description's mention of filters adds limited behavioral context. No contradictions. With annotations, the description provides adequate reinforcement.
Agents need to know what a tool does to the 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 (8 words) that front-loads the action and resource. 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 an output schema exists and 3 optional params with clear enums, the description covers the essential behavior for a list tool. No missing critical 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?
Schema description coverage is 100%, so the description does not add meaning beyond the schema. The phrase 'with optional filters' high-level summarizes but does not specify parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'offer rules', and the domain 'upsell/cross-sell'. It distinguishes from siblings like get_offer_rule (single) and create_offer_rule (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'optional filters', giving context for parameter usage. It implicitly differentiates from get_offer_rule by implying multiple results, but lacks explicit 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.
list_ordersBRead-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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds no extra behavioral context (e.g., pagination behavior, default sorting, or permission requirements), but annotations suffice for basic transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence without any fluff. Every word is necessary and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (3 optional params, output schema exists, annotations cover safety), the description is adequate. It misses mention of pagination behavior (e.g., offset) but the limit parameter is documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and describes all three parameters with types and descriptions. The description summarizes the filters but adds no new 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 verb 'list' and resource 'shop orders', and mentions optional filters. It is specific and unambiguous, though it doesn't differentiate from sibling list tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_bookings or list_invoices. No exclusions or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_outletsBRead-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, idempotentHint=true, destructiveHint=false, indicating safe read-only behavior. The description adds no additional behavioral context (e.g., pagination, sorting, or side effects), but the annotations cover the key 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 one concise sentence with no extraneous information. 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?
For a simple listing tool with an output schema and one optional parameter, the description is mostly complete. It could mention that it returns all outlets for the current company, but the output schema likely covers structure. No critical 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?
The schema fully describes the single parameter 'activeOnly' with its description. The description does not add any further semantics or examples, so it meets the baseline for 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 verb 'List' and the resource 'shop outlets/locations for the company'. It is distinct from sibling tools like list_contacts or list_bookings, but does not elaborate on scope (e.g., all outlets or for a specific entity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. For a simple listing tool, it is acceptable but it does not mention context such as filtering by company or active state, nor does it exclude 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_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, covering safety. The description adds context about listing only active plans and including the current plan indicator, but does not disclose 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?
A single, 16-word sentence conveys the entire purpose with no redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description fully covers what the tool does. The tool's simplicity means no further detail 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?
No parameters exist (0 params, schema coverage 100%), so the description adds meaning about the output but cannot add parameter semantics. Baseline 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 verb 'list', the resource 'active FavCRM plans', and specifies the returned details (prices, quotas, modules, current plan flag). It distinguishes from sibling tools like list_subscriptions by focusing on plan options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, such as when checking available plans before upgrading or comparing with subscription lists.
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, and destructiveHint=false, covering safety profile. Description adds that results are for blog posts/pages and filters are optional, but does not disclose existence of pagination, default limit, or ordering beyond schema. Output schema likely fills return structure, so description adds moderate 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?
Single sentence, no fluff, clearly front-loaded with purpose and scope. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, output schema exists, and annotations are complete, the description is adequate but minimal. It does not explain return format, error handling, or ordering, but the output schema likely compensates. Suitable for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 4 parameters. Description reiterates 'optional filters' but adds no additional meaning beyond 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 lists CMS posts (blog posts and/or pages) with optional filters, specifying the resource and action. It distinguishes from siblings like get_post (single) and create_post, but does not explicitly differentiate from other 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?
Description implies usage for browsing or searching posts but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives like get_post for single post retrieval.
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 provide readOnlyHint=true and idempotentHint=true. Description adds practical context about returning schema info for keys and types. No contradictions or hidden side effects disclosed beyond annotations, which is appropriate for a read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: first states purpose, second gives usage context. No fluff, front-loaded with actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema, the description fully explains what it does and why to use it. It tells the agent to use it before creating posts, which is valuable context. Complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description for postTypeId is 'Post type ID (from list_post_types)' with 100% coverage. Tool description does not add new parameter details beyond what schema provides, but it contextualizes the parameter within the tool's purpose. 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 it lists the custom field schema for a post type, using specific verb 'list' and resource 'custom field schema'. It distinguishes from sibling tools like list_post_types (which lists post types) and create_post_type_field (which creates fields).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use this before creating posts to know which keys to pass in meta and what types they expect.' This provides clear when-to-use guidance and implies it's a prerequisite for creating posts, helping the agent choose correctly.
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 declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by stating the exact scope and examples (built-in + custom), which goes beyond annotations without contradicting 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?
One sentence that is front-loaded with the core action and resource, no redundant words. Perfectly concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is parameterless and has an output schema (mentioned), the description sufficiently explains what the tool returns and provides examples. No additional context 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 zero parameters (100% coverage), so the description does not need to provide parameter details. Baseline is 4, and no additional semantics are required.
Input schemas describe structure but not intent. Descriptions should explain 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 specifies the action 'list', the resource 'post types', and the scope 'for this company', with concrete examples of built-in types (blog_post, page) and custom types. It clearly distinguishes from siblings like 'create_post_type' and 'list_post_type_fields'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool (to see all post types) but does not provide explicit guidance on when not to use it or mention alternatives. It lacks exclusion criteria or comparison with similar list tools.
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 declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description needs to add no further safety context. However, it does not disclose any additional behavioral details (e.g., pagination, sorting), which would be helpful. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that immediately conveys the tool's purpose. Every word is necessary, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, safe read operation, output schema present), the description is largely sufficient. However, it could briefly mention if results are paginated or ordered, which would enhance completeness. Overall, it meets the minimum for a straightforward list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema coverage is 100%. According to guidelines, with 0 parameters, the baseline is 4. The description adds no parameter information, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all product categories for the shop,' using a specific verb and resource. Among sibling tools like list_categories and list_service_categories, it explicitly identifies 'product categories,' making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_categories or list_service_categories. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsBRead-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 indicate read-only and idempotent behavior. The description adds no new behavioral details beyond the filters. It does not mention pagination, ordering, or result format, but the 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?
Single sentence, front-loaded with the main action. No superfluous words. However, it could be slightly expanded to include pagination hint 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?
Adequate for a tool with annotations and output schema, but missing pagination info. The description covers the core function but not all 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 description coverage is 100%, so the baseline is 3. The description summarizes three filter parameters (name, status, category) but omits the limit parameter. It adds marginal value by grouping filters.
Input schemas describe structure but not intent. Descriptions should explain 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 'shop products', and mentions optional filters. It distinguishes from other list tools by specifying 'shop products', but could be more explicit about the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_product_categories or list_orders. The agent must infer based on the resource name alone.
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, idempotentHint, and destructiveHint, covering safety. The description adds that it lists codes, but little else beyond what annotations and schema 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, clear sentence with no wasted words, efficiently conveying the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 listing tool with output schema and annotations, the description is adequate. It could mention pagination or output format, but the schema and annotations cover 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 coverage is 100% with descriptions for all 3 parameters. The description only mentions 'optional status filter', adding no new 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 promotion/coupon codes and mentions an optional status filter, distinguishing it from related tools like get_promotion, create_promotion, 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 when listing promotions with optional filtering, but does not explicitly state when to use this tool versus alternatives like get_promotion for a single record or search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resourcesBRead-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 cover readOnlyHint, idempotentHint, and destructiveHint, so the agent knows the tool is safe. The description adds that resources are 'booking resources' but does not disclose additional behaviors like pagination, scope (e.g., company-wide), or data freshness. Without annotations, this would score lower, but with them, a 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 with no unnecessary words. It is appropriately concise for a simple list 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 simplicity and the presence of an output schema, the description is adequate but incomplete. It does not mention the scope of resources (e.g., belonging to the current company) or that the result is paginated based on limit. The output schema likely covers return fields, but the description could be more helpful by stating what the list contains.
Complex tools with many parameters or behaviors need more documentation. 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 limit parameter's description in the schema is sufficient. The tool description does not add any extra semantics beyond what the schema already provides, so a baseline 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 clearly states the verb 'List' and the resource 'booking resources' with examples (rooms, equipment). It distinguishes from sibling tools like list_bookings or list_contacts because it is the only tool for listing resources. However, it does not explicitly differentiate by scope or filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives, such as for filtering or searching resources. It simply states the function, leaving the agent to infer usage from context.
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 and destructiveHint=false, making the safety profile clear. The description adds scoping ('configured for this business') but does not disclose pagination behavior, whether inactive schemes are included, or any rate limits. The description adds minimal 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 a single sentence with no unnecessary words. It conveys the essential purpose and context efficiently. 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 two parameters are fully documented in the schema. The only potential gap is the omission of whether the listing includes only active or all schemes, but overall it is fairly complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (limit and search) have full schema descriptions (100% coverage). The description does not add any additional meaning or usage notes 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 action 'List', the resource 'loyalty reward schemes', and provides context 'points/stamps programs configured for this business'. It distinguishes from sibling tools like 'earn_loyalty_points' and 'issue_rewards' by focusing on listing configured schemes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 like 'get_loyalty_balance' or 'issue_rewards'. It only describes what it does, leaving usage inference to the agent. No guidance on prerequisites or exclusions is provided.
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=true, destructiveHint=false, idempotentHint=true, so the tool's safety is clear. The description adds no additional behavioral context (e.g., pagination, sorting), 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?
Two concise sentences with no fluff. First sentence states purpose, second provides conceptual background. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 2 parameters and an existing output schema, the description is fairly complete. It could mention default ordering or the fact that it returns an array, but these are minor omissions given 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 descriptions for both parameters ('limit' and 'search'). The description adds no extra meaning beyond what is in 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's action ('List') and resource ('customer segments'), and provides a brief explanation of what segments are used for, distinguishing it from sibling tools like list_campaigns 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?
No guidance is given on when to use this tool versus alternatives, such as search_crm or list_tags. Missing 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.
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=true, idempotentHint=true, destructiveHint=false, so the description's mention of listing groups aligns. No additional behavioral details 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 sentence, 11 words, front-loaded with purpose and examples. 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?
Has output schema, so return format is covered. Description explains what service categories are and gives examples, which is complete for this simple 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?
No parameters. Schema coverage is 100% (vacuously). Baseline 4 for 0 params; description doesn't need further parameter info.
Input schemas describe structure but not intent. Descriptions should explain 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 lists service categories, gives concrete examples ('Treatments', 'Classes'), and the name specifies 'service_categories' which distinguishes it from generic list_categories sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly clear usage: when you need a list of service categories. No explicit alternatives or when-not-to-use, but the tool has no parameters so usage is straightforward.
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, destructiveHint, idempotentHint; description adds behavioral context (optional search, status, sorting, pagination) 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?
Single sentence of 12 words, front-loaded with 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?
Adequate for a list tool with 5 optional parameters and output schema present; mentions key features but could include default pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage; description merely lists parameter categories (search, status, sorting, pagination) without adding new information beyond 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?
Description clearly states verb (list) and resource (service packages/prepaid session bundles), distinguishing it from siblings like 'list_services' and '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 explicit guidance on when to use vs alternatives; only implies usage for listing with optional filters. Could be improved by specifying when to prefer this over other list or get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesARead-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 declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. Description adds that it returns specific fields but does not elaborate on pagination or other behaviors. Minimal additional 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?
Single sentence, zero waste, conveys essential information 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?
Simple list tool with optional parameters and existing output schema. Description is minimal but adequate for its straightforward purpose. Could mention pagination or filtering more explicitly, but not necessary.
Complex tools with many parameters or behaviors need more documentation. 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 three parameters (limit, search, status). Description adds no extra meaning beyond listing services, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'list' and resource 'booking services', and specifies the fields returned (name, price, duration, status). It distinguishes itself from sibling list tools like list_service_categories or list_service_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, but the context of 'list booking services' makes it implicitly clear. Sibling tools cover different resources, so usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_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 declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds no behavioral details (e.g., pagination, data format) 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 words. Every word adds value, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 optional parameters and an output schema, the description is too brief. It does not explain what 'schedule windows' are, how they relate to bookings, or how filtering works. Siblings like get_available_slots suggest related concepts but are not distinguished.
Complex tools with many parameters or behaviors need more documentation. 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 (e.g., 'Max results (default 20)'). The tool description adds no additional parameter semantics beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists schedule windows for booking services, which differentiates it from siblings like list_services or get_service_detail that list services themselves. However, it could be more specific about what constitutes a 'schedule window'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 get_available_slots or list_service_schedules. The description does not indicate prerequisites or contexts 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.
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 declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds no new behavioral details beyond stating the action, which is acceptable but not enriching.
Agents need to know what a tool does to the 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. The description 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?
For a simple read-only listing tool with no parameters and an output schema, the description adequately covers the purpose and context. No additional information 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?
With zero parameters, the description does not need to add parameter details. Baseline is 4; the description correctly implies no filtering but does not elaborate on output.
Input schemas describe structure but not intent. Descriptions should explain 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 shipping methods for the shop. It uses a specific verb-resource pair and is distinct from sibling tools that list 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?
The description implies usage for retrieving all shipping methods but provides no explicit guidance on when to use it versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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, idempotentHint, and destructiveHint. The description adds no behavioral context beyond that, such as pagination behavior or rate limits. With annotations covering safety, a 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 with no fluff, achieving conciseness. However, it could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one optional parameter and an output schema, the description is adequate but lacks details on return values or default ordering. It does not leverage the output schema to explain results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'limit' described. The description does not add meaning beyond the schema. Baseline 3 is correct here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'staff/team members in the business.' It uses a specific verb and resource, and among siblings like list_contacts or list_services, it is distinct. However, it could be more precise about scope (e.g., all staff or paginated).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_contacts or assign_staff_to_service. The description does not mention any prerequisites or context 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.
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 indicate read-only, idempotent, non-destructive. Description adds filtering context but no behavioral traits beyond what annotations 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?
Single sentence, directly to the point, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with output schema. Could add mention of pagination or 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?
Schema coverage is 100% with descriptions for both parameters. Description only mentions 'status' filter, 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', resource 'member subscriptions', and distinct filtering capability. Among siblings, 'get_subscription' is singular, so this is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for filtering by status but does not explicitly differentiate from alternatives like 'get_subscription' or 'list_invoices'.
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 mark it as readOnly, idempotent, and non-destructive. The description adds valuable context by specifying that it omits token hashes and old invitation tokens, which is a behavioral trait beyond what annotations 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, concise sentence with no unnecessary words. It is front-loaded with the primary action and 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 tool (2 parameters, output schema provided), the description adequately covers what is needed. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. 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 'surveyId' and 'limit', so the description adds no additional meaning beyond the 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?
The description clearly states the action ('List') and resource ('survey invitation history'), and distinguishes itself by explicitly noting it does not expose token hashes or old invitation tokens, setting it apart 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 does not provide guidance on when to use this tool versus its siblings (e.g., create_survey_invitation, get_survey_responses). No when-to-use or when-not-to-use context is given.
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, destructiveHint=false. The description does not add new behavioral context beyond stating optional filters, which is already in the schema. 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, no unnecessary words, front-loaded with the core action. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with annotations and output schema present. Description covers the main purpose and filtering. Minor omission: no mention of pagination beyond the limit parameter, 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?
Schema coverage is 100% with good descriptions for each parameter. The description merely reiterates 'optional filters' without adding new 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 clearly states the verb 'list' and resource 'surveys', and specifies optional filtering by status/search, distinguishing it from siblings like get_survey or create_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?
The description implies when to use (to list surveys with optional filters) but does not explicitly state when not to use or mention alternatives like get_survey for a single survey. However, the context provides sufficient differentiation.
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?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no behavioral context beyond confirming it lists workflows. It does not detail output format or pagination, but annotations 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?
Single sentence, subject-verb-object structure, no unnecessary words. 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?
For a simple list tool with full annotation coverage and output schema, the description is adequate. It could mention that it returns the workflows, 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?
The schema covers the only parameter (surveyId) with description 'Survey ID' (100% coverage). The description does not add any further 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 uses a specific verb 'List' and resource 'automation workflows', with scope 'attached to a survey', clearly distinguishing from sibling tools like list_surveys or list_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?
No guidance on when to use this tool versus alternatives (e.g., get_survey, upsert_survey_workflow). The description lacks context about prerequisites or exclusion conditions.
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 and destructiveHint=false, covering safety. The description adds that it returns 'all available tags', which provides basic behavioral context but no additional depth like pagination 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?
The description is a single sentence that is front-loaded and contains no unnecessary words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema, the description is complete. It sufficiently covers the tool's behavior without needing further elaboration.
Complex tools with many parameters or behaviors need more documentation. 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 'search' parameter. The description does not add meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('all available tags for the merchant'). It is specific and distinguishes from sibling list tools by naming a specific entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool (when needing a list of available tags) but does not explicitly mention exclusions or alternatives. For a simple listing tool, this is clear enough.
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 provide readOnlyHint, destructiveHint, and idempotentHint. The description adds minimal behavioral context beyond the filters, which are already in the schema. 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, well-front-loaded sentence that conveys the purpose and filters without any unnecessary words. Highly 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 simple nature of the tool, the full schema coverage, and existing annotations, the description is complete. The output schema (not shown) likely details return format, so no further context 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 each parameter is already described. The tool description does not add additional meaning beyond the schema descriptions, warranting 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 it lists tasks with optional status, assignee, and account filters. It distinguishes from sibling list tools (e.g., list_contacts, list_bookings) by specifying these task-specific filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 optional filters. It does not explicitly mention when not to use it or compare to alternatives like search_crm, but the context is clear enough for an AI agent.
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 indicate read-only, idempotent, non-destructive. Description adds no behavioral context beyond annotations. Neither confirms nor contradicts 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, clear and to the point. Could be slightly expanded without compromising 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?
Minimal description. Lacks mention of pagination, default limit (20), sorting, or output schema. Adequate for a simple list but incomplete given complex sibling set.
Complex tools with many parameters or behaviors need more documentation. 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. The tool description adds no extra semantic meaning beyond 'optional filters'. 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?
Name and description clearly state the action (list) and resource (tickets) with optional filters. Distinct from sibling tools like get_ticket_stats 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?
No guidance on when to use this tool versus alternatives (e.g., search_tickets or get_ticket_detail). Does not mention typical scenarios or limitations.
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, destructiveHint=false, idempotentHint=true, so the description adds minimal behavioral context beyond mentioning 'member counts and stats'. 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?
Single sentence, front-loaded with the verb 'list', concise, and no wasted words. Perfectly size-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 no parameters, output schema present, and annotations cover safety. The description sufficiently tells the agent what it does; no additional context needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. The description correctly adds no parameter info, meeting the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all membership tiers and includes member counts and stats, distinguishing it from other list tools that deal with 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?
No explicit guidance on when to use this tool vs alternatives. Usage is implied by the name and description, but with many sibling list tools, some differentiation would be helpful.
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 idempotency, but annotations set idempotentHint to false, creating a contradiction. This misleads the agent about the tool's behavior; description should align 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: first states purpose and state transition, second gives usage guideline and idempotency. Every sentence earns its place; no unnecessary 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 state-transition tool with 100% schema coverage and an output schema, the description is mostly sufficient. However, the contradiction with annotations regarding idempotency undermines completeness, as the agent cannot trust the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required parameter 'invoiceId' described as 'Invoice ID'. 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 marks an invoice as sent and transitions state from DRAFT to OPEN. This specific verb+resource+state transition distinguishes it from sibling tools like create_invoice, record_invoice_payment, and void_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 explicitly says to use it after delivering the invoice via email or share link, providing clear context. However, it does not mention when not to use it or name alternative tools.
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?
The description only states the basic action without disclosing behavioral traits beyond the annotations. Annotations provide minimal safety info (destructiveHint=false) but do not cover side effects like status changes or billing consequences, which an agent might need.
Agents need to know what a tool does to the 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 is front-loaded and contains no unnecessary words. It efficiently communicates 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's simplicity (one parameter) and the presence of an output schema, the description provides sufficient context to understand the basic operation. However, it could mention prerequisites or consequences for a more complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter 'bookingId' with a description. The tool description adds no 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 verb 'mark' and the resource 'booking as no-show', distinguishing it from sibling tools like 'cancel_booking' and 'complete_booking'. 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 clear context ('when the customer did not attend') for when to use the tool. However, it does not explicitly mention when not to use it or list alternative tools.
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?
Describes status change to past_due and cessation of auto-renew. Annotations provide no behavioral details; description adds useful context. Could mention reversibility but implied by sibling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with core function and outcome. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers purpose and behavior for a simple mutation tool with output schema present. Could include return value hint but not necessary given context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter (subscriptionId) with description 'Subscription ID'. Description adds no additional 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?
Clearly states the action (pause), target (active subscription), and outcome (status → past_due, no auto-renew). Distinguishes from 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 resume_subscription as alternative for reactivation. Implies usage for active subscriptions only but lacks explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 already indicate write operation (readOnlyHint=false) and non-destructive nature. Description adds context about internal posting and no customer communication, but lacks details on permissions, notifications, 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?
Two sentences that concisely convey purpose, usage, and constraints. No redundant information; 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?
Tool is simple and description covers core functionality well. Output schema likely provides return value details. Missing some nuance like whether posting triggers notifications or requires thread participation, 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 each parameter documented. Description adds little beyond schema; for example, 'content' is noted as Markdown-capable but schema already says that. The optional 'metadata' parameter has no additional explanation despite being nested.
Input schemas describe structure but not intent. Descriptions should explain 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 'Post an internal message from an AI colleague into a Workroom thread' with specific verb and resource. It distinguishes from siblings by emphasizing internal use and that it does not send to customers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit use cases: report findings, ask for approval, share source links. It also clarifies what it does not do (send to customers), helping avoid misuse, though it does not name alternative sibling tools.
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 declares the tool as a preview, which implies no direct data mutation, and does not contradict annotations (readOnlyHint=false but the preview likely doesn't modify data; no conflict). It adds context about matching logic and output deltas, but could mention idempotency or rate limits if applicable.
Agents need to know what a tool does to the 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-loading the most important information (max rows, matching logic, output, and next step). Every sentence is informative and necessary, 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?
For a preview tool, the description covers the key aspects: input constraints, behavior, output (actions and deltas), and the follow-up step using the returned sessionId. The presence of an output schema further supports completeness, but the description itself 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?
Although the input schema has high coverage with field descriptions, the tool description adds value by explaining how the rows are processed (matching by phone/email) and what information the preview yields (create vs update actions, deltas). This goes beyond the schema's field-level details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Preview' and the resource 'bulk customer import', with specific details like max rows, matching logic, and output types. It distinguishes itself from the sibling 'commit_customer_import' by mentioning the returned sessionId for later application.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 indicates when to use this tool (before committing a bulk import) and points to the sibling tool for actual application. It does not explicitly mention when not to use it or alternative approaches for single customer operations, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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, and idempotentHint=true. The description adds that the tool returns 'grounded snippets with source document IDs,' providing output context. No contradictions. With annotations covering safety, the description adds useful 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 two sentences long, front-loaded with purpose and then usage examples. Every sentence adds value with no fluff. It is appropriately 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 moderate complexity (3 parameters, 1 required) and presence of an output schema, the description is fairly complete. It covers purpose, usage examples, and output nature. It does not mention pagination or sorting, but those may be in the output schema. Slightly more detail on scoping (per company) would improve it, but it's already adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all three parameters (query, limit, maxSnippetChars) with 100% coverage. The description does not add further parameter details beyond what the schema offers. 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's purpose: 'Search this company's knowledge base and return grounded snippets with source document IDs.' It also lists specific use cases (merchant policies, FAQs, etc.), distinguishing it from sibling tools like list_knowledge_documents or add_knowledge_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Use for merchant policies, FAQs, pricing notes, brand guidance, and other uploaded references.' It provides clear context but does not explicitly state when not to use or mention alternatives. However, the sibling list includes many related tools, so the guidance is helpful.
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 and destructiveHint=false. Description adds context about searching platform capabilities but does not disclose additional behavioral traits 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, no wasted words. First sentence states purpose, second gives usage guidance. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be described. Parameters fully covered. Description provides complete guidance for a discovery 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 schema already documents parameters. Description adds value with plain-language example for query parameter and notes defaults for area and limit.
Input schemas describe structure but not intent. Descriptions should explain 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 FavCRM MCP tools, skills, and feature areas. It uses specific verb+resource ('Search FavCRM MCP tools'), distinguishing it from sibling tools like list_* 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?
Explicitly says 'Use before guessing tool names or JSON arguments', providing clear when-to-use guidance. Does not mention alternatives or when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
The description adds behavioral information beyond annotations by stating that the tool updates invoice status to PARTIAL or PAID based on the running total. 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 two concise sentences with no wasted words, efficiently conveying purpose and behavior upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 schema coverage, the description adequately covers core usage and side effects, though it omits prerequisites like invoice existence.
Complex tools with many parameters or behaviors need more documentation. 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 minimal parameter-specific detail beyond schema, though it contextualizes payment methods as manual and the status update effect.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Record a manual payment against an invoice') and lists specific payment types, distinguishing it from creating or voiding 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 (recording a manual payment) but does not explicitly mention when not to use or provide alternatives among sibling tools.
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?
Annotations already indicate not read-only, not idempotent, not destructive. Description adds the 6-digit code and 10-minute TTL from the email parameter, plus the step context, adding useful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, no fluff. Front-loaded with purpose, then next step, then 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?
Complete for a first-step tool: explains the flow, links to next tool, and with output schema available, 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?
Schema coverage is 100%, so baseline is 3. Description does not add additional parameter meaning beyond what is in the input schema, but does not need to.
Input schemas describe structure but not intent. Descriptions should explain 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's step 1 of signup, sends verification code, and directs to register_organisation_verify. Distinguishes from sibling tools by specifying the 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?
Explicitly states when to use (creating new workspace) and when not to (calls out next step register_organisation_verify). Provides clear context.
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?
The description discloses that the tool creates a workspace (mutation) and returns an API key for session authentication. Annotations show readOnlyHint=false, consistent with this. It adds important behavioral context beyond annotations, though it could mention idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-loaded with purpose, then step context and result usage. No redundant 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?
Given an output schema exists (not shown), the description explains the key output (API key) and its usage. For a two-step signup tool, this is sufficiently complete. Could mention that workspace creation is immediate and no further verification 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% with descriptions. The description adds relational context by noting requestId comes from register_organisation_request and code is a '6-digit code from the verification email.' This adds value 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 it is 'Step 2 of agentic signup' and specifies the action: 'Confirms the 6-digit code and creates the workspace.' This distinguishes it from its sibling register_organisation_request (step 1) and other 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 it follows register_organisation_request by mentioning 'requestId' from that step and instructing the agent to set the returned API key for subsequent calls. No explicit when-not-to-use, but the context is sufficient for correct sequencing.
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 not covered by annotations, enhancing transparency 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?
The description is a single sentence that efficiently conveys the operation and its effect, with no unnecessary words. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the presence of an output schema, and the description covering the core action and side effect, the definition is 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 coverage is 100%, so the schema already documents both parameters. The description adds minimal extra meaning ('0-based index' is already in schema description). Baseline 3 is appropriate as description does not significantly augment 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 ('Remove the block') and the resource ('block at given index') with the side effect of shifting subsequent blocks. This distinguishes it from siblings like append_post_block, replace_post_block, and reorder_post_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 when to use the tool (to remove a block by index) but does not provide guidance on when not to use it or mention alternatives like replacing or reordering blocks.
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 indicate a mutation (readOnlyHint=false) but not destructive. The description adds the constraint about complete ID list. No additional behavioral traits like permissions, side effects, or rate limits are mentioned. With annotations, the description contributes some value but not extensive.
Agents need to know what a tool does to the 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 action and resource, includes essential constraint without any 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 an output schema exists, return format is covered. The description covers the core logic and critical constraint. It lacks mention of error handling (e.g., what happens if IDs don't match) but that is minor given 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%, so parameters are documented. The description adds meaning by stating that orderedBlockIds must contain every existing block ID exactly once, which is a critical constraint beyond the schema's 'must match the existing set exactly'.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Reorder blocks'), the resource ('blocks'), and a key constraint ('The id list must contain every existing block id exactly once'). This distinguishes it from siblings like remove_post_block, replace_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 provides a clear usage constraint (the id list must be a complete set of all existing block IDs), implying that users need to know the current block set. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions.
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?
The description discloses that 'sortOrder is updated to match' the provided order, which is a behavioral trait beyond the annotations. Annotations set readOnlyHint=false and destructiveHint=false, and the description confirms mutation without destruction, adding 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 lean two sentences, front-loading the action ('Reorder fields on a post type') and providing a clear instruction. Every word adds 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 low complexity (2 parameters, simple reorder operation) and the presence of an output schema, the description sufficiently covers the key aspects. It explains the effect on sortOrder and leaves return details to 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 for parameters is 100%, but the description adds meaning by explaining that 'orderedFieldIds' should be passed in the 'desired display order', emphasizing the sequencing requirement. This enriches the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reorder' and the resource 'fields on a post type', making the tool's purpose unambiguous. It distinguishes from siblings like 'update_post_type_field' (which modifies field properties) and 'list_post_type_fields' (which retrieves fields).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 reordering field display but does not explicitly state when to use this tool versus alternatives (e.g., 'update_post_type_field') or when not to use it. No exclusions or contextual hints are provided.
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?
The description indicates a write operation ('Replace') which aligns with readOnlyHint=false. It does not disclose potential side effects (e.g., index out-of-bounds errors, permissions required, or whether the tool is idempotent). The description adds minimal behavioral context beyond the verb itself.
Agents need to know what a tool does to the 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 action, and contains no extraneous words. Every sentence adds value: the first states the purpose, the second provides a usage differentiator.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 types (detailed in input schema), the description is brief but sufficient alongside the schema and output schema. It covers the main use case and distinguishes from update_post, though it lacks information about error handling or index validity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description explains the 'index' parameter as 0-based and implies the 'block' is the replacement, but the schema already provides these descriptions. The description does not add new information about parameters beyond what is 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 'Replace a single block' with the resource 'at the given index', and distinguishes itself from the sibling tool 'update_post' by highlighting the efficiency gain (avoid fetching full post). This provides a specific verb-resource combination and differentiates from an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly suggests using this tool instead of update_post when only one block needs replacement, providing a clear usage context. However, it does not mention when not to use it (e.g., multiple blocks) or other alternatives like append_post_block or remove_post_block.
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 already indicate readOnlyHint=false, destructiveHint=false, etc., so the base behavioral profile is set. The description adds that the report is intended 'so the platform team can follow up,' implying a notification or ticket creation. However, it does not explicitly disclose whether this creates a persistent record, requires authentication, or has side effects beyond what annotations 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 sentences: the first defines the tool's purpose and triggers, the second explains what to include and why. Every sentence adds value with no redundancy. It is front-loaded and easily parsed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 13 parameters, nested objects, and an output schema (not shown), the description provides a high-level overview but omits guidance on required fields like title, severity, or how to structure nested objects. While the schema fills gaps, the description could be more complete to aid agent usage amidst 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%, so the input schema already describes all 13 parameters. The description mentions including 'logs, AI analysis, references, and clarification questions,' which maps to some parameters but adds no new semantic meaning beyond the schema descriptions. A baseline score of 3 is appropriate given 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 the tool's purpose: 'Report a FavCRM platform issue' from an agent's perspective. It enumerates specific issue types (missing MCP path, tool failure, confusing schema, CLI/docs issue, SDK fallback), making the scope unambiguous. This distinctively separates it from the sibling tools, which are primarily CRUD or business 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 when-to-use scenarios ('when an agent finds a missing MCP path, tool failure, confusing schema, CLI/docs issue, or SDK fallback'). However, it does not mention when NOT to use the tool or list alternative tools, slightly reducing clarity for agents comparing options.
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 are sparse (only readOnlyHint, openWorldHint, etc.). The description adds value by explaining that this tool creates an approval request that defers execution until merchant approval, which is a key behavioral trait 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 with two sentences, the first stating the core purpose and the second providing critical usage constraint. 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 and rich input schema, the description covers purpose, usage, and behavioral context adequately. It could mention prerequisites (e.g., agent must be thread participant) but these are documented in parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. 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% (all parameters have descriptions in the schema). The tool description does not repeat parameter details but does not need to; 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 merchant-owned approval request for customer-facing sends, and explicitly distinguishes it from direct send tools by listing four sibling tools that must not be called instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use this tool (when needing merchant approval before sending) and when not to (direct send tools are listed as forbidden alternatives).
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?
Description implies mutation (restore) but does not disclose specifics like permissions, side effects, or conditions (e.g., time limit). Annotations provide minimal safety info.
Agents need to know what a tool does to the 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, no wasted words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with one parameter and an output schema, but lacks behavioral context that would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds no additional meaning beyond the schema's parameter 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?
Description clearly states the verb 'restore' and resource 'campaign'. It distinguishes from sibling tools like 'delete_campaign' and other restore tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. Usage is implied, but no prerequisites or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_categoryAInspect
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 this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds no additional behavioral details beyond what is in the annotations, such as side effects or prerequisites, so it meets the minimum but adds no extra 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, front-loaded sentence with no unnecessary words. It is perfectly concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is mostly complete. It could mention prerequisites (e.g., the category must exist and be deleted), but the omission 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?
The schema provides a basic description of 'categoryId' as 'Category ID', but the tool description adds context by implying it is the ID of a previously deleted category. This adds meaning beyond the schema's minimal 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 ('restore') and the resource ('CMS post category'), distinguishing it from sibling restore_* tools that target 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 that the tool is for restoring a previously deleted category, providing clear context. However, it does not explicitly state when not to use it or suggest alternatives, but for a simple tool, this is sufficient.
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 already indicate readOnlyHint=false and destructiveHint=false. The description adds key behavioral context: the invoice must be 'previously deleted' and a 'DRAFT', which goes beyond the annotations. It does not detail reversal or authorization, but the added context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that wastes no words, is front-loaded with the action and resource, and is perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (so return values need not be described) and is a simple restore operation, the description adequately covers the precondition. It could mention error cases (e.g., if invoice ID is invalid), but for a straightforward tool, this 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?
The schema already describes 'invoiceId' as 'Invoice ID to restore' with 100% coverage. The description does not add any 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 specifies the action ('restore'), the resource ('invoice'), and the specific state ('previously deleted DRAFT'). This distinguishes it from sibling tools 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 states the precondition ('deleted DRAFT invoice'), providing clear context for when to use the tool. It does not explicitly mention alternatives or when not to use, but the condition implies if the invoice is not a deleted draft, this tool is not appropriate. Given many invoice-related siblings, explicit exclusion would improve it.
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?
Annotations provide no behavioral details beyond non-read-only and non-destructive. Description adds no context about prerequisites, side effects, or return behavior beyond the action itself.
Agents need to know what a tool does to the 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 redundant information; 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?
Though the tool has only one parameter and an output schema, the description lacks important context such as the requirement that the document be in a deleted state, and does not specify the outcome if the document is not found or already restored.
Complex tools with many parameters or behaviors need more documentation. 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 minimal description 'Knowledge document ID'. Description does not add any additional meaning or formatting details 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?
Description clearly states verb 'restore' and resource 'knowledge document', distinguishing it from sibling restore_ tools for 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?
No guidance on when to use this tool vs alternatives like delete_knowledge_document or get_knowledge_document; does not explicitly state that the document must be deleted first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_postAInspect
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 provide basic safety hints (non-destructive, non-read-only), but the description adds no behavioral context such as error handling, idempotency, or permission requirements. For a mutation tool, more transparency is expected.
Agents need to know what a tool does to the 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 efficiently communicates the tool's purpose with 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?
Given the tool's simplicity (one required parameter, existence of output schema) and lack of complex behavior, the description is nearly complete. However, it could mention that the post must have been previously deleted or clarify the state change.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'postId' described as 'The post ID'. The tool description does not add any additional meaning beyond the schema, meeting the baseline but not exceeding 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 the action ('restore') and the resource ('previously deleted CMS post'), distinguishing it from sibling restore tools that target different entities (e.g., restore_campaign, restore_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?
The description implies usage after deletion but provides no explicit guidance on when to use this tool versus alternatives, no prerequisites, or scenarios to avoid. It is adequate for a simple undo operation but lacks depth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_post_typeBInspect
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?
Annotations provide no behavioral insight (readOnlyHint=false, destructiveHint=false). The description merely states 'Restore' without elaborating on side effects, permissions required, or what happens if the post type does not exist or is already restored. The description carries the full burden due to lack of annotation detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, front-loaded with the key action and resource. Every word is necessary, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists (not shown but indicated), so return values need not be described. However, the description lacks context about error conditions, validation, or state requirements (e.g., post type must be deleted). It is minimally adequate for a simple tool but 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 coverage is 100% for a single parameter 'postTypeId' described as 'Post type ID'. The description adds no additional meaning beyond the schema, so baseline score 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 'Restore a previously deleted custom post type' uses a specific verb 'Restore' and identifies the resource 'custom post type', clearly distinguishing it from sibling tools like 'delete_post_type' and 'restore_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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., the post type must have been deleted) or situations where other restore 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.
restore_post_type_fieldBInspect
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. The description adds that the tool restores a previously deleted field, which is consistent. No further behavioral details are provided (e.g., reversibility, side effects), but the annotations partially cover safety profile.
Agents need to know what a tool does to the 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 is front-loaded with the key action and resource. It is efficient but could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and sibling tools, the description adequately conveys the core function. However, it omits contextual details such as ordering restoration or potential constraints, leaving it merely 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 descriptions for both parameters (Field ID, Post type ID). The description does not add additional meaning beyond the schema, earning 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 'Restore a previously deleted field on a post type schema' uses a specific verb 'Restore' and identifies the exact resource 'field on a post type schema'. It clearly distinguishes from sibling tools like create, update, delete, and list 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 no guidance on when to use this tool versus alternatives such as restore_post_type or create_post_type_field. There is no mention of prerequisites, timing, or conditions under which restoration is possible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_promotionBInspect
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 indicate readOnlyHint=false and destructiveHint=false, but the description adds no behavioral context beyond 'restore'. It does not disclose what happens to the promotion's state (e.g., whether it becomes active again), any required permissions, or side effects. The description fails to add value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is front-loaded and contains no unnecessary words. It is appropriately sized for the simplicity of the 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 that the tool has one parameter and an output schema (implied by context), the description is minimally complete but lacks details on the restoration's effect (e.g., visibility, status) and any constraints. It is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. 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 (promotionId: 'Promotion ID'). The tool description does not add any additional meaning to the parameter, so it meets the baseline of 3. No parameter information is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Restore a previously deleted promotion' clearly identifies the action (restore) and the resource (promotion). It distinguishes from sibling tools like delete_promotion, update_promotion, and list_promotions by using the specific verb '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?
No guidance is provided on when to use this tool versus alternatives. It does not explicitly state prerequisites (e.g., the promotion must have been deleted) or mention any conditions that might affect usage. The context implies usage for undeleting, but explicit instruction is absent.
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 indicate non-read-only and non-destructive behavior. The description adds 'restore' which is clear but lacks additional context like authorization requirements or potential 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?
One concise sentence with no waste. All information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple operation (1 parameter, no nested objects, output schema present), the description is adequate. It does not need to explain return values due to 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% and the description adds no extra meaning beyond the schema's parameter description. 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), the resource (service package), and the method (by ID). It is distinct from sibling tools like 'delete_service_package' and other restore tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool (e.g., after deletion) or when not to use it. No mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_subscriptionAInspect
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?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows it's a mutation without destructive side effects. The description adds that the tool changes state from paused to active, which is useful but does not elaborate further (e.g., idempotency, charges triggered, or behavior if already active).
Agents need to know what a tool does to the 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 clearly communicates the action and state transition. It contains no unnecessary words and is front-loaded with 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?
The tool is simple with one parameter and an output schema, so the description is mostly adequate. However, it lacks details on return values (mitigated by output schema), error handling, and usage context. For a complete description, it could mention typical scenarios or restrictions.
Complex tools with many parameters or behaviors need more documentation. 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 (subscriptionId). The description adds no additional meaning beyond the schema's description of 'Subscription ID'. Baseline is 3, and the description does not raise 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 the verb 'resume' and the resource 'subscription', and specifies the state change from paused to active. It effectively distinguishes from sibling tools like 'pause_subscription' (reverse action), 'cancel_subscription' (termination), and 'create_subscription' (new 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?
The description provides no guidance on when to use this tool vs alternatives. It does not mention prerequisites (e.g., subscription must be paused), error conditions, or exclusions. For example, it could note that 'cancel_subscription' is used for permanent termination.
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 mark destructiveHint=true; the description adds the mechanism of restoring a before snapshot, providing useful behavioral context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. The first sentence defines the action and method; the second adds a critical constraint. 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?
For a revert tool with an existing output schema, the description covers the main purpose and limitation. It could mention prerequisites like valid audit log IDs, but the sibling list_audit_logs tool likely covers that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the input schema. The description does not add any parameter-specific 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 states a specific verb (revert) and resource (audited action) and provides a clear mechanism (restoring captured before snapshot). It distinguishes from sibling restore_* tools by focusing on audit logs rather than generic restoration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 constraint (only for allowlisted tables with full snapshots) but does not provide explicit when-to-use guidance or alternatives. The usage context is implied but not complete.
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 the server crawls the URL, stores the response body in R2, returns a new document ID, and that failures store the row with status='failed'. This adds behavioral context beyond the annotations (readOnlyHint=false, destructiveHint=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 three sentences: first states the purpose, second explains the process, third gives usage examples. It is concise and front-loaded 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?
For a simple tool with one parameter and an output schema, the description covers the key points: what it does, how it works, failure handling, and typical use cases. It provides sufficient context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the 'url' parameter with format and description. The description adds minimal semantic value 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 fetches a URL and stores its content in the knowledge base, returning a document ID. It uses specific verb+resource and distinguishes from siblings like add_knowledge_text and query_company_knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for adding marketing pages, FAQ docs, or external references' which provides clear usage context. However, it does not provide when-not-to-use or direct alternatives.
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, indicating a safe read operation. The description adds value by specifying the fields searched, which is beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, no filler or redundancy. It front-loads the purpose and is 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?
The description covers the core functionality well, and output schema likely defines the return shape. It does not mention pagination or ordering, but for a search tool with a limit parameter and output schema, it is reasonably 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?
Input schema coverage is 100% with each parameter having a description. The description does not add additional information about parameters beyond what the schema already provides, so it meets the baseline but does not exceed.
Input schemas describe structure but not intent. Descriptions should explain 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 'Search' and the resource 'audit logs', and specifies the exact fields searched (action, resource, resource ID, changes JSON, metadata JSON), which distinguishes it from sibling tools like get_audit_log and list_audit_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the use case for free-text search across specific fields, but does not explicitly mention when to use alternatives (e.g., list_audit_logs for unfiltered listing, get_audit_log for a specific log). However, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_crmBRead-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, destructiveHint=false, idempotentHint=true, so the description does not need to repeat safety. However, it adds no extra behavioral context such as result format, pagination, or that it searches both accounts and contacts simultaneously. The description is adequate but not informative 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?
A single, front-loaded sentence of 10 words effectively states the tool's purpose. No extraneous 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?
With an output schema present and annotations covering safety, the description is somewhat complete. However, it lacks details about which CRM entities are searched (only accounts and contacts?) and how results are ordered or combined. Given the tool's simplicity, it's minimally viable but could benefit from more scope clarity.
Complex tools with many parameters or behaviors need more documentation. 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 adds context that the query can be a name, email, or phone, which enhances the schema's 'Search string' description. However, it doesn't clarify the limit's per-entity behavior beyond the schema, so the value added is moderate.
Input schemas describe structure but not intent. Descriptions should explain 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 'Search' and the resources 'CRM accounts and contacts', with specific search fields (name, email, phone). It distinguishes from siblings like list_contacts or search_members by specifying a cross-entity search scope, though it doesn't explicitly exclude other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_contacts or search_members. It does not mention prerequisites or exclusions, leaving the agent to infer context from the tool name and sibling list.
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 indicate readOnlyHint=true and destructiveHint=false, so the description does not need to repeat safety. It adds behavioral context by mentioning the supported filters and specifically highlighting the ability to find inactive members via lastBookingBefore/inactiveDays. 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 extremely concise: two sentences, front-loaded with the primary purpose, followed by a specific use case. Every sentence adds value without repetition 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 18 parameters (all with schema descriptions), complete annotations, and an output schema, the description is sufficiently complete. It covers the core functionality and gives a practical example. However, it could briefly mention pagination or sorting behavior, which are important for a search tool, but the existing schema covers those 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 coverage is 100% and each parameter has a description in the schema. The description adds value by summarizing the types of filters (text, date ranges, etc.) and calling out specific parameters (lastBookingBefore, inactiveDays), but it does not provide additional meaning beyond what the schema already offers. 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's purpose: 'Search and filter members/accounts.' It specifies supported filter types (text, date ranges, booking/activity history, etc.) and distinguishes itself from sibling tools like get_member_profile (which retrieves a single member) and search_crm (which searches other CRM 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 a concrete usage example: 'Use lastBookingBefore/inactiveDays to find inactive members.' This gives clear guidance for a specific scenario. However, it does not explicitly state when not to use this tool or compare it to alternatives like list_contacts, leaving room for ambiguity in some cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_resource_availabilityAIdempotentInspect
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?
Description adds context about mutation and idempotent creation of availability windows, but doesn't detail permissions or side effects beyond annotations which already indicate idempotentHint=true.
Agents need to know what a tool does to the 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 verb and resource, 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?
With output schema present and 7 parameters, the description covers two main usage patterns but doesn't mention the 'type' enum for available/blocked, which is in 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%, and description adds value by explaining the interplay between dayOfWeek, isRecurring, and date, aiding agent understanding beyond individual param 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 'Add an availability window for a resource' and distinguishes between recurring weekly schedules and one-off blocks, differentiating from sibling 'set_staff_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?
Provides explicit guidance on when to use dayOfWeek+recurring vs date for one-off blocks, but lacks when-not-to-use 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.
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 indicate idempotentHint=true and destructiveHint=false. The description adds no extra behavioral context beyond these, such as whether the tool creates or updates, or what happens on duplicate. It is not contradictory, but it does not leverage the opportunity to add more detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys both purpose and usage scenarios efficiently. No filler words; every part 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 has 7 parameters with conditional relationships and an output schema, the description covers the core behavior and main use cases. It does not address potential issues like overlapping windows, but it is sufficient for an agent to understand when and how to invoke the 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 defines parameters well. The description adds value by explaining how to combine dayOfWeek, isRecurring, and date parameters for different use cases, which is 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 adds an availability window for a staff member, specifying the resource (staff) and the action (add window). It distinguishes from sibling tool 'set_resource_availability' by explicitly mentioning staff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 two usage scenarios: using day-of-week with recurring for weekly schedules, or a specific date for one-off changes. This helps the agent choose the right parameter combination, but does not mention when to use alternative tools or exclude cases.
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?
The description discloses that the tool returns a new access token and changes the session context for subsequent calls. Annotations provide readOnlyHint=false, which aligns with the state-changing nature. The description adds value beyond annotations by explaining the token behavior and session persistence, though it does not detail reversibility 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 concise with three sentences, each adding unique value: the action, the return value, and the effect on subsequent calls. It is front-loaded with the main purpose and avoids 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 (one parameter, straightforward behavior) and the presence of a output schema (not shown but inferred), the description is complete. It explains the input, output (new access token), and side effect (session switch). It also contextually references a related tool for ID discovery.
Complex tools with many parameters or behaviors need more documentation. 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 'companyId' is fully described in the input schema (100% coverage), including guidance to use 'list_my_companies' to find IDs. The tool description itself adds no additional meaning beyond the schema's property description. 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 clearly states the tool's purpose: switching the current session to a different company. It uses a specific verb ('switch') and resource ('company'), and distinguishes itself from siblings like 'list_my_companies' by implying that this tool changes context rather than lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: it explains that all subsequent calls will operate on the new company. It also references the sibling tool 'list_my_companies' for finding available IDs, offering guidance on how to obtain the required parameter. No explicit when-not-to-use is mentioned, 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.
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 idempotentHint=true and destructiveHint=false. The description adds valuable behavioral context by specifying partial update semantics ('Pass only the fields you want to change'), which the agent needs to know for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences. The first states the action, the second provides critical usage instruction. 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 15 parameters with full schema descriptions, output schema exists, and annotations are present, the description is adequate but minimal. It lacks explicit scope (e.g., 'global' meaning company-wide) and does not reference the read counterpart (get_booking_settings).
Complex tools with many parameters or behaviors need more documentation. 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, so baseline is 3. The description adds overarching semantic guidance (partial update), which aids in understanding how to use the parameters even without per-parameter enhancement.
Input schemas describe structure but not intent. Descriptions should explain 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 global booking settings' with a specific verb and resource. However, it could better differentiate from sibling tools like get_booking_settings or other update_* tools, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you need to change booking settings) and includes 'Pass only the fields you want to change' indicating partial updates. It does not explicitly mention alternatives or when not to use, but the guidance is adequate.
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?
Annotations already indicate idempotent and non-destructive update. The description adds channel immutability and partial update behavior, which are useful beyond the annotations. Could mention side effects of status changes but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that convey purpose and key usage constraints without fluff. 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 (8 params, enums, nested channelConfig), the description covers the essentials. It could mention valid status transitions or that channelConfig changes are ignored, but with output schema present, it 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 input schema has 100% description coverage, so baseline is 3. The description adds a useful hint about partial updates ('Pass only fields to change'), but this is minimal 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 'Update an existing campaign,' which is a specific verb+resource combination. It distinguishes from 'create_campaign' by focusing on updates and adds constraints like channel immutability and partial update pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Channel cannot be changed after creation' and 'Pass only fields to change.' While it could explicitly mention alternatives (e.g., create new campaign) for channel changes, the sibling tool 'create_campaign' is contextually available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryBIdempotentInspect
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 'Update' is consistent but adds no additional behavioral context beyond what annotations provide. No disclosure of effects, permissions, or side effects is given.
Agents need to know what a tool does to the 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 unnecessary words. It is front-loaded and efficient. However, it is very minimal, and a bit more detail could improve 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?
Given the presence of an output schema and full parameter descriptions, the description is adequate for a simple update tool. However, it does not explain the update behavior (e.g., partial or full replacement) or any constraints beyond what the schema offers.
Complex tools with many parameters or behaviors need more documentation. 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 a description. The tool description does not add any extra meaning or context for the parameters. Baseline 3 is appropriate as the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a CMS post category,' specifying the verb 'Update' and the resource 'CMS post category.' This distinguishes it from siblings like create_category, delete_category, and list_categories by indicating a mutation operation on an existing 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 contextual guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites, scenarios, or when not to use it. Agents must infer usage solely from the tool name and sibling names.
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 declare idempotentHint=true and destructiveHint=false. The description adds 'Update fields on an existing contact' which confirms mutation but adds no further behavioral details (e.g., partial update behavior, side effects). 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, front-loaded sentence with no redundancy. Every word is necessary and the meaning is 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 has 6 parameters, an output schema, and annotations, the description is minimal. It does not mention that only provided fields are updated (patch semantics) or that contactId is required. Adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The tool description does not add any additional parameter meaning beyond what is in the schema, providing 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 'Update' and the resource 'contact', distinguishing it from create_contact (create) and get_contact (read). However, it does not explicitly differentiate from other update tools, but the resource is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 create_contact or when not to use it. No prerequisites or context provided.
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 already indicate the tool is not read-only and not destructive, but the description adds no additional behavioral context. For instance, it does not state that changes are idempotent (as hinted), whether probability is updated alongside stage, or any side effects like notifications.
Agents need to know what a tool does to the 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, making it easy to parse. However, it could benefit from a brief note on usage or prerequisites 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?
Given the tool has an output schema and two required parameters, the description is too sparse. It lacks context on when to move a deal stage, whether stages are validated, and how it relates to other deal operations. The presence of siblings like list_deals suggests more detail could help.
Complex tools with many parameters or behaviors need more documentation. 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 three parameters. The description adds no extra meaning beyond the schema; it only reinforces the stage parameter. With high schema coverage, baseline is 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 ('Move') and clearly identifies the resource ('deal') and the attribute being modified ('pipeline stage'). This clearly distinguishes it from other update tools in the sibling list, as no other tool specifically targets deal stage updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisites, exclusions, or typical use cases. For a tool that modifies pipeline stage, context about stage validation or dependencies would be helpful.
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 already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds no further behavioral context beyond stating 'update', which is already implied. No mention of side effects, permissions, or response 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 a single clear sentence with no superfluous words. It is front-loaded with the core purpose and examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 status update tool with two required parameters and an output schema, the description is adequate. It covers the core function but lacks details like ownership, validation rules, or post-update 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?
Input schema has 100% description coverage for both parameters, so description adds little value. The examples given (confirm, ship, cancel) are a subset of the enum values listed in the schema, providing no additional semantic 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 action ('Update the status of a shop order') and provides specific examples (confirm, ship, cancel), distinguishing it from sibling tools like create_order or delete_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 usage for updating order status but does not explicitly state when to use this tool versus alternatives like cancel_booking or update_ticket_status, nor does it mention any prerequisites or conditions.
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 provide idempotentHint=true and destructiveHint=false. Description adds no extra behavioral context such as required 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?
Single sentence, direct and no superfluous text. Efficiently conveys 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?
With 10 parameters and an update operation, the description omits that only provided fields are updated (partial update). Lacks details on response or constraints, though 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?
Input schema covers 100% of parameters with descriptions. Description does not add further meaning or usage 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?
Description clearly states verb 'Update' and resource 'existing shop outlet/location by ID', differentiating from 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?
No guidance on when to use this tool versus alternatives like create_outlet or other update tools. Missing context for selection.
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?
The description adds context by stating 'any post type' and 'Only provided fields are changed', which goes beyond annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false). However, it does not elaborate on failure modes (e.g., what if postId doesn't exist) or permission implications, leaving some behavioral gaps.
Agents need to know what a tool does to the 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 fluff. The first sentence states the action and scope, the second clarifies the partial update behavior. It is front-loaded and efficiently communicates the core 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 parameters, nested objects, many siblings), the description is too brief. It does not mention return values (though output schema exists), nor does it warn about the blocks array replacement behavior or other caveats. A few extra sentences would improve completeness for such a complex 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 description coverage, the bar is at baseline. The main description adds the general semantics that only provided fields are changed, which informs parameter optionality. But it does not provide per-parameter context beyond what the schema already offers, so it meets 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 ('Update') and resource ('existing CMS post (any post type)'), and distinguishes from siblings like create_post (who create new posts) and delete_post (who delete them). The phrase 'Only provided fields are changed' clarifies that it's a partial update, which differentiates from replace-like 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 does not explicitly state when to use this tool over alternatives (e.g., when to use update_post vs append_post_block for block-level edits). However, the input schema for the 'blocks' parameter provides that guidance, partially compensating. Still, the main description lacks clear usage context for a tool with many siblings.
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 declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description adds the built-in type constraint. It does not disclose error behavior or authorization requirements 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?
Two concise sentences with no waste. Essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage, annotations, and an output schema, the description is adequate. It mentions the key constraint on built-in types, but could briefly note that the tool is idempotent and non-destructive (already in 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%, so the description gains no extra points for explaining parameters. It 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 specifies the action ('update') and the resource ('custom post type'), and distinguishes from built-in types that cannot be modified. This differentiates it from siblings like 'create_post_type' and 'update_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 states when to use (updating custom post types) and explicitly excludes built-in types. However, it does not provide guidance on when to use alternatives or what to do if the target is a built-in type.
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?
Beyond annotations (idempotentHint true, destructiveHint false), description discloses a blocking behavior that triggers unless force=true. Adds value by explaining safety guard.
Agents need to know what a tool does to the 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 serve all purpose: statement of action and key constraint. No extraneous text. Optimal length 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 10 parameters, output schema exists, and siblings named clearly, description covers main purpose and critical edge case. Could mention that other fields are freely updatable, but not mandatory.
Complex tools with many parameters or behaviors need more documentation. 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 documentation coverage is 100%, baseline 3. Description adds context for force, fieldType, and required by explaining the condition, which is more than the schema alone provides. Other parameters not elaborated but are standard.
Input schemas describe structure but not intent. Descriptions should explain 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 'Update' and resource 'field on a post type schema'. Distinguishes from sibling create/delete tools. The additional constraint about force adds specificity without confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 force is needed (changing fieldType or flipping required=true when data exists). Does not explicitly state when not to use or alternatives, but context is sufficiently clear.
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 idempotentHint=true, non-destructive. The description adds that only provided fields are changed, clarifying partial update behavior. This adds value beyond annotations. However, it doesn't mention side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the key purpose. Every word is essential, 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 9 parameters, 1 required, and existence of output schema, the description is minimal. It does not explain return values, errors, or high-level constraints. Adequate but 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 baseline is 3. The description does not add additional meaning to parameters beyond what the schema already provides. It offers no extra context for 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 'Update an existing product' with a specific verb and resource, and adds 'Only provided fields are changed' to clarify behavior. This distinguishes it from siblings like create_product, delete_product, list_products, 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 use for updating specific fields without affecting others, but does not explicitly state when to use this tool over alternatives (e.g., when to update vs create). No exclusions or context for 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_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 idempotent and non-destructive. Description adds partial update behavior but no other side effects or prerequisites.
Agents need to know what a tool does to the 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, 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 for return values, parameters fully documented. Description covers key behavioral aspect (partial update) 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 has 100% coverage with descriptions for all parameters. Description reinforces partial update semantics but adds no new parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update an existing promotion' with a specific verb and resource. Differentiates from sibling tools like create_promotion and delete_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?
Instructs to pass only fields to change, which is a key usage guideline. Lacks explicit when-not or alternatives, but context from siblings makes it clear.
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 provide readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds the partial update behavior but does not elaborate on side effects, required permissions, or validation. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly stating the purpose and key usage note. It is front-loaded with the verb and resource, and every word serves a clear purpose. 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 high schema coverage, presence of an output schema, and annotations covering safety, the description adequately captures the core functionality and partial update pattern. It could mention error cases or what happens when only serviceId is provided, but it is largely 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 all parameters have descriptions in the input schema. The tool description adds only the general directive to pass only changed fields, which does not enhance individual parameter semantics 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 ('Update'), the resource ('an existing booking service'), and the partial update semantics ('Pass only the fields you want to change'). It distinguishes from sibling tools like 'create_service', 'update_service_package', and 'update_service_schedule' by focusing on updating a service itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_service' for new services, 'get_service_detail' for viewing), nor does it mention prerequisites 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.
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?
Annotations already indicate non-read-only, non-destructive, and idempotent behavior. The description adds valuable context about partial update semantics ('Pass only the fields you want to change'), which is beyond what annotations provide, without contradicting 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 two concise sentences with no wasted words. It front-loads the purpose and provides an essential usage hint, making it efficient 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 tool has 9 parameters, an output schema, and annotations that cover safety (idempotent, non-destructive), the description is sufficient. It could mention that the packageId must exist, but the partial update hint and schema coverage make it complete enough for an update 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%, so each parameter already has a description. The tool description adds only general context about partial updates, which reinforces the optional nature of most parameters but does not add specific parameter-level 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 'Update an existing service package', specifying the verb (update) and resource (service package). It distinguishes from sibling tools like create_service_package, delete_service_package, and get_service_package by emphasizing 'existing' and 'update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for modifying existing packages, but does not explicitly state when to use it over alternatives (e.g., create_service_package) or provide exclusions. It lacks guidance on prerequisites or scenarios where other tools might be preferred.
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 indicate idempotentHint=true and destructiveHint=false. The description adds that it updates a schedule and that only fields to change are needed, but does not elaborate on permissions, side effects, or return values. The output schema likely covers the 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?
The description is concise, two sentences, front-loaded with the action, and provides a key usage hint without any wasteful 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 has 12 parameters and a complex domain (scheduling), the description is minimal. It does not explain what a 'service schedule window' is or how recurrence fields interact. Output schema exists, so return values are documented elsewhere, but more context would improve usability.
Complex tools with many parameters or behaviors need more documentation. 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 are well-documented. The description adds value by specifying that only fields to change should be passed, which is a crucial usage hint 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 'Update' and the resource 'service schedule window', distinguishing it from sibling tools like create_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?
The description indicates that only fields to change should be passed, implying a partial update. However, it does not explicitly state when to use this tool versus alternatives, but the sibling list provides context.
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?
Annotations indicate idempotentHint=true and destructiveHint=false, which are consistent with an update operation. The description does not add behavioral context beyond what annotations provide, such as authorization needs or side effects. Without annotations, this would score lower.
Agents need to know what a tool does to the 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: the first clearly states the tool's purpose, and the second provides a critical usage hint. No wasted words. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, nested objects) and the presence of an output schema, the description is adequate but minimal. It does not explain common parameter combinations or typical usage patterns, leaving the agent to infer from 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 description coverage is 100%, so baseline is 3. The description adds value by clarifying that questionBlocks replaces the ordered block list, which goes beyond the schema's generic description ('Ordered survey question blocks').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('survey'), and the scope ('draft or publishing configuration'). It effectively distinguishes from sibling tools like create_survey or 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?
The description provides specific guidance on the questionBlocks parameter ('Use questionBlocks to replace the ordered form block list'), but lacks explicit when-to-use or when-not-to-use instructions relative to other survey tools. No alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskBIdempotentInspect
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 provide readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds the word 'completion' beyond the schema but does not contradict annotations. It provides minimal additional 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 sentence of 8 words, very concise and front-loaded. It could include slightly more information (e.g., patch semantics) 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 7 parameters and an output schema, the description is minimal. It does not mention patch semantics, idempotency (hinted in annotations), or that it returns the updated task. The output schema covers return values, 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 coverage is 100%, so the schema already describes all parameters. The description lists some parameters (status, priority, assignee, due date, completion) but adds no new meaning 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 specifies the verb 'Update' and the resource 'task', and lists the updatable fields (status, priority, assignee, due date, completion), clearly distinguishing it from create_task or other task 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?
No guidance on when to use this tool versus alternatives (e.g., create_task, delete_task) or prerequisites. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticket_statusBIdempotentInspect
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 indicate the tool is not read-only, is idempotent, and not destructive. The description adds no additional behavioral context (e.g., side effects, permissions) 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 short sentence with no waste. It is efficiently front-loaded 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?
Given the output schema exists and parameters are well-documented, the description is adequate but minimal. It does not mention that only status is updated (not other ticket fields) or any side effects, leaving some gaps 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% with both parameters well-described (ticket ID and status enum). The description adds no extra meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update the status of an existing support ticket' with a specific verb and resource. It distinguishes from sibling tools like create_ticket or list_tickets, and from other update tools by specifying 'status' and '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 does not mention prerequisites, when not to use it, or any context about ticket ownership or existence.
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?
Beyond annotations (which are minimal), the description discloses that it downloads the image into R2 (side effect), validates content-type and size, and notes no AI credits are charged. This adds useful behavioral context without contradicting 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?
Three sentences front-load the purpose and then provide key details without 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 tool has 2 parameters and an output schema (not shown but present), the description covers input constraints, behavior, side effects, and cost indication (no AI credits). It is complete for an 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?
The schema has 100% coverage with descriptions for both parameters, but the description adds value by explaining the sourceUrl must be a public http(s) URL with image/* content-type and imposes a 20 MB size limit not in the schema, helping the agent understand constraints.
Input schemas describe structure but not intent. Descriptions should explain 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 downloads an external image URL into R2 and attaches it as the post's featuredImage, with a specific verb and resource. It implicitly distinguishes from siblings like generate_post_cover (which generates images) and attach_post_cover_from_job (which likely uses a different source).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it replaces the manual flow of pasting external URLs that break, indicating when to use. It specifies validation constraints (content-type and size) but does not explicitly state when not to use it or provide alternatives, though 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.
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 declare idempotentHint=true and destructiveHint=false, providing safety profile. Description adds only 'usually triggered by survey_response_submitted', which is minimal additional behavioral context. No disclosure of side effects, permissions, or behavior beyond upsert.
Agents need to know what a tool does to the 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 10-word sentence, highly concise. It is front-loaded with key action. Could be slightly more structured (e.g., separate trigger context) but 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 (6 parameters, nested graph object, output schema exists), the description is too brief. It does not explain the graph structure, status defaults, relationship between trigger and graph.trigger, or when to use workflowId. Incomplete for an upsert 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 schema fully documents all 6 parameters. Description adds no extra meaning beyond what 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 'Create or update a survey automation workflow' with a specific verb and resource, and adds context about typical trigger 'survey_response_submitted'. This distinguishes it from sibling tools like create_survey 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 implies usage when managing survey automation workflows but does not specify when to use this tool versus alternatives (e.g., create_survey_workflow if it existed). No when-not or exclusion guidance is provided.
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 context by specifying what the preview includes (contactable count, subject/body) and emphasizes 'without sending', aligning with non-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?
Single sentence, 15 words, front-loaded with purpose. Every part is informative with 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?
With one parameter and an output schema present, description sufficiently explains what the tool does and what it returns conceptually (contactable count and preview). 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?
Schema has 100% coverage with description 'Campaign ID to validate'. Description adds no further parameter information. 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 verb 'validate' and resource 'campaign', specifying it resolves contactable recipient count and previews subject/body without sending. This distinguishes it from sibling tools like create_campaign, update_campaign, delete_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?
Implies usage before sending a campaign to preview and validate. While it doesn't explicitly state when not to use or list alternatives, the context is clear enough 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.
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 readOnlyHint=true and idempotentHint=true. Description adds that it returns isValid, discount amount, and error code/message, which is helpful but not critical 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, no redundancy. First sentence states function and output, second gives usage guidance. 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 annotations and output schema, description covers purpose, usage timing, and output summary. No gaps evident.
Complex tools with many parameters or behaviors need more documentation. 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 for parameters, so description adds no new parameter info. 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 'Check if a promotion code is valid' and target 'for a given order'. Distinguishes from siblings like 'get_promotion' and 'create_promotion' by emphasizing validation 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?
Explicitly says 'Use before applying to a checkout', providing clear timing context. Does not explicitly mention 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.
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?
The description adds important behavioral context beyond the destructiveHint annotation: it states the invoice becomes unpayable and uneditable, and that existing payments are preserved. This aligns with the annotation 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, with two short sentences that deliver maximum information. No redundant or unnecessary 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 tool (1 parameter, straightforward action) and the presence of an output schema, the description provides all necessary context: what the tool does, its destructive nature, and a key constraint on 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 covers the single parameter with 100% coverage. The description doesn't add extra meaning beyond what the schema already provides for 'invoiceId'. 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 begins with 'Void an invoice,' clearly stating the action and resource. It further specifies the consequences and restrictions, distinguishing it from sibling tools like delete_invoice or cancel_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?
The description explicitly states when the tool cannot be used: 'Cannot void invoices that are already PAID or VOIDED.' While it doesn't explicitly contrast with alternatives, this constraint provides clear usage boundaries.
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!