Shopmonkey MCP Server
The Shopmonkey MCP Server enables AI agents and LLMs to interact with the Shopmonkey shop management platform via 64 tools, wrapping the Shopmonkey REST API (v3). It supports dual transport: stdio for local clients (Claude Desktop, Cursor) and Streamable HTTP for cloud deployment (Claude.ai), with API key authentication, automatic retry with exponential backoff, max 5 concurrent requests, 30-second timeouts, and multi-location filtering.
Work Orders — List, get, create, update, and delete (requires explicit confirmation) work orders with filters for status, customer, and location.
Customers — List/search by name, email, or phone; get, create, and update customer profiles.
Vehicles — List by customer/location, get details, create (with VIN, make, model, year, mileage, plate), update, and look up by VIN or license plate.
Inventory & Parts — List parts and tire inventory, get individual part details, and search the parts catalog by name, number, or description.
Appointments — List with date/status/customer filters, get, create (linked to order/vehicle/customer), and update/reschedule.
Payments — List by work order, get details, and record new payments against an order.
Labor & Technicians — List labor line items, track technician time clock events, list shop users/technicians, and get individual user profiles.
Canned Services — Full CRUD on pre-built service templates, including management of line items (fees, labor, parts, subcontracts, tires).
Webhooks — Full CRUD with support for 11 trigger types.
Reports — Generate revenue summaries, appointment summaries, and open estimates reports.
Workflow & Locations — List workflow/pipeline status stages and all shop locations for multi-location support.
Supports deployment of the MCP server to Railway cloud platform for HTTP transport, enabling cloud-based access to Shopmonkey shop management tools through Claude.ai and other MCP-compatible clients.
Supports deployment of the MCP server to Render cloud platform for HTTP transport, enabling cloud-based access to Shopmonkey shop management tools through Claude.ai and other MCP-compatible clients.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Shopmonkey MCP Serverfind all open work orders for customer John Doe"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Shopmonkey MCP Server
A Model Context Protocol (MCP) server that wraps the Shopmonkey REST API (v3), enabling AI agents and LLMs to interact with shop management data — work orders, customers, vehicles, inventory, appointments, payments, labor, canned services, webhooks, and more.
Features
69 tools across 12 resource groups covering the Shopmonkey API
Dual transport — stdio for local/desktop use, Streamable HTTP for cloud deployment
Shopmonkey API key authentication (Bearer token to Shopmonkey REST API)
Automatic retry with exponential backoff on rate limits (429) and server errors (5xx)
Request concurrency control (max 5 simultaneous API calls)
30-second request timeout per call
Multi-location support via
SHOPMONKEY_LOCATION_IDor per-requestlocationIdDescriptive error messages surfacing Shopmonkey error codes and messages
HTTP transport includes bearer auth, health check endpoint, and graceful shutdown
Works with Claude Desktop, Cursor, Claude Code, Claude.ai, and any MCP-compatible client
Related MCP server: Thinkific MCP Server
Quick Start
git clone https://github.com/AbbottDevelopments/shopmonkey-mcp-server.git
cd shopmonkey-mcp-server
npm install
npm run buildCopy .env.example to .env and add your Shopmonkey API key:
cp .env.example .env
# Edit .env — set SHOPMONKEY_API_KEY to your keyStart the server:
# stdio (local use with Claude Desktop, Cursor, Claude Code)
npm start
# HTTP (cloud deployment, Claude.ai)
npm run start:httpTransports
The server ships two entry points sharing a single tool registry — use whichever matches your deployment target.
stdio (local use)
node dist/index.js
# or: npm startYour MCP client spawns this process directly. Used by Claude Desktop, Cursor, and Claude Code. See MCP Client Configuration below.
Streamable HTTP (cloud deployment)
PORT=3000 node dist/http.js
# or: npm run start:httpThe HTTP server listens on PORT (default 3000) and handles MCP requests at /. Required for cloud deployment (Railway, Render) and for connecting to Claude.ai.
HTTP features:
Authentication — Set
MCP_AUTH_TOKENto requireAuthorization: Bearer <token>on all MCP requests. Open access when unset (local development).Health check —
GET /healthandGET /return{"status":"ok"}for load balancer probes.Graceful shutdown — Clean exit on SIGTERM/SIGINT with a 5-second timeout.
For cloud deployment instructions, see docs/DEPLOYMENT.md.
Tool Reference
Work Orders (4 tools)
Tool | Description |
| List work orders with filters (status, customer, location). Valid statuses: |
| Get full work order details |
| Create a new work order |
| Update work order fields |
Order deletion is not supported by the Shopmonkey API. See docs/LIMITATIONS.md for details.
Customers (6 tools)
Tool | Description |
| Search customers by full-body query |
| Search for a customer by email address |
| Search for a customer by phone number |
| Get full customer profile |
| Create a new customer (name and address fields) |
| Update customer information |
Email and phone are sub-resources in Shopmonkey. After creating a customer, use
POST /v3/customer/:id/emailand/phone_numberto attach contact info. See docs/LIMITATIONS.md.
Vehicles (7 tools)
Tool | Description |
| List all vehicles for a specific customer |
| Look up a vehicle by VIN number |
| Look up a vehicle by license plate and region |
| List owners associated with a vehicle |
| Get full vehicle details |
| Add a vehicle (optionally linked to a customer) |
| Update vehicle data |
Inventory & Parts (4 tools)
Tool | Description |
| List parts inventory |
| Get single part details |
| List tire inventory |
| Search parts catalog by query |
Appointments (4 tools)
Tool | Description |
| List appointments with date and status filters |
| Get full appointment details |
| Book a new appointment |
| Reschedule or update an appointment |
Payments (3 tools)
Tool | Description |
| List payments for an order |
| Get payment details |
| Record a payment ( |
All money values use integer cents with
*Centsnaming. Never send decimal dollar amounts.
Technicians & Labor (4 tools)
Tool | Description |
| List labor line items |
| Technician clock-in/clock-out events |
| List shop users and technicians |
| Get user/technician profile |
Services & Canned Services (22 tools)
Tool | Description |
| List services on work orders |
| List pre-built service templates |
| Get canned service details with line items |
| Create a new canned service template |
| Update a canned service |
| Delete a canned service template |
| List deferred (recommended but not yet performed) services |
Canned service line items — 5 types (fee, labor, part, subcontract, tire) with add/update/remove operations:
Fee | Labor | Part | Subcontract | Tire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Webhooks (5 tools)
Tool | Description |
| List all registered webhooks |
| Get webhook details |
| Register a new webhook endpoint with trigger types |
| Update a webhook |
| Delete a webhook |
Supported triggers: Appointment, Customer, Inspection, Inventory, Message, Order, Payment, PurchaseOrder, User, Vehicle, Vendor
Reports — Composite (3 tools)
Tool | Description |
| Revenue totals by status and paid/unpaid split for a date range |
| Appointment counts by confirmation status for a date range |
| Open unauthorized estimates with age-in-days calculation |
Reports are composited from list endpoints (max 100 records per report). Use tighter date ranges for larger shops.
Workflow & Locations (2 tools)
Tool | Description |
| Get pipeline/workflow stages |
| List shop locations |
MCP Client Configuration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"shopmonkey": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/shopmonkey-mcp-server",
"env": {
"SHOPMONKEY_API_KEY": "your_api_key_here"
}
}
}
}Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"shopmonkey": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/shopmonkey-mcp-server",
"env": {
"SHOPMONKEY_API_KEY": "your_api_key_here"
}
}
}
}Claude Code
claude mcp add shopmonkey -e SHOPMONKEY_API_KEY=your_api_key_here -- node /path/to/shopmonkey-mcp-server/dist/index.jsClaude.ai (HTTP transport)
Deploy dist/http.js to Railway or Render with SHOPMONKEY_API_KEY and MCP_AUTH_TOKEN set as environment variables. See docs/DEPLOYMENT.md for the full guide.
Documentation
Document | Description |
System design, dual transport, tool module pattern, client resilience | |
All 69 tools with use-case descriptions | |
Release history | |
Fork authors whose field reports drive this project | |
Why v1.0.0 called endpoints that do not exist | |
Unsupported operations with rationale and workarounds | |
Railway + Doppler single-tenant deployment guide | |
Future-work exploration for multi-shop deployment |
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Shopmonkey API key (Settings > Integration > API Keys) |
| No |
| API base URL |
| No | — | Scope all queries to one location (multi-location shops) |
| Cloud: Yes | — | Bearer token for HTTP transport authentication. Required for cloud deployment — omitting it makes the endpoint public. |
| No |
| HTTP transport listening port |
The server automatically loads .env via dotenv if present. You can also pass variables through your shell or MCP client config.
Development
npm run build # Compile TypeScript
npm run dev # Watch mode (tsc --watch)
npm start # Start stdio server
npm run start:http # Start HTTP server
npm test # Run test suite (requires build first)The test suite includes 186 tests across 9 test files covering mock API behavior, MCP protocol compliance, error paths, and transport validation.
Error Handling
The server handles common API scenarios:
Missing API key — Descriptive error with setup instructions
Rate limiting (429) — Automatic retry with exponential backoff (up to 3 attempts), respects
Retry-AfterheaderServer errors (500, 502, 503, 504) — Automatic retry with backoff
Request timeout — 30-second abort with clear error message
Network failures — Retry with backoff, readable error messages
API errors — Surfaces Shopmonkey error codes (
API-xxxxx,ORM-xxxxx) and human-readablemessagefield
API Reference
License
Available Tools
69 toolsadd_canned_service_feeA
Add a fee line item to an existing canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Fee name | |
| notes | No | Additional notes | |
| quantity | No | Quantity | |
| description | No | Fee description | |
| unitCostCents | No | Unit cost in integer cents | |
| unitPriceCents | No | Unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID to add the fee to | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides minimal behavioral information, only stating the action without disclosing side effects, permissions, or 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?
The description is a single, clear sentence with no extraneous information, front-loading the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation with no output schema, the description is adequate to understand the tool's purpose, though it could optionally mention success/failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions fully cover all parameters, and the tool description adds no further meaning, so baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add', the object 'fee line item', and the context 'to an existing canned service template', distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the action, but does not explicitly mention when to use it over alternatives like add_canned_service_labor or add_canned_service_part.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_canned_service_laborA
Add a labor line item to an existing canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Labor name | |
| note | No | Additional notes | |
| hours | No | Labor hours (e.g. 2.5) | |
| taxable | No | Whether this labor line is taxable | |
| rateCents | No | Billed labor rate per hour, in integer cents | |
| costRateCents | No | Internal cost rate per hour, in integer cents | |
| cannedServiceId | Yes | The canned service ID to add labor to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It accurately indicates a create/add operation but does not disclose side effects, failure behavior, or whether adding is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary wording or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward additive operation with fully described parameters and no output schema, the description is largely complete. It could be slightly richer about expected behavior, but the current text plus schema gives adequate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all parameters, and the description adds no meaningful semantic detail beyond what is already in the input schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add'), the object ('labor line item'), and the target ('existing canned service template'), which distinguishes it from related tools like add_canned_service_fee or update_canned_service_labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case by naming the operation, but it does not explicitly contrast it with alternatives such as update_canned_service_labor or remove_canned_service_labor, leaving the agent to infer when this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_canned_service_partB
Add a part line item to an existing canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Part name | |
| note | No | Additional notes | |
| taxable | No | Whether this part line is taxable | |
| quantity | No | Quantity of parts | |
| partNumber | No | Vendor part number | |
| cannedServiceId | Yes | The canned service ID to add the part to | |
| retailCostCents | No | Price charged to the customer, per unit, in integer cents | |
| wholesaleCostCents | No | Cost paid to the vendor, per unit, in integer cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of disclosing side effects, requirements, and side conditions. It only states what the tool does, not whether it modifies the template, what happens on duplicate parts, or any permission requirements. This is a significant gap given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that omits unnecessary details. It is front-loaded with the key action and object, making it easy to parse quickly. No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a straightforward CRUD operation, so the description is adequate for basic usage. However, it lacks information about the return value or any error conditions, and there is no output schema. Given the simplicity, a score of 3 is appropriate—it covers the essential purpose but leaves some operational details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all eight parameters, achieving 100% coverage. The tool description adds no extra meaning beyond the schema definitions, so the baseline score applies. Parameters like 'retailCostCents' and 'wholesaleCostCents' are already clearly explained 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 ('Add') and the object ('a part line item to an existing canned service template'), which is specific and distinguishes it from sibling tools like fee or labor additions. However, it doesn't explicitly name any sibling tools or contrast with them, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as add_canned_service_fee or add_canned_service_labor. The operation name itself is self-explanatory, but the description offers no explicit selection criteria, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_canned_service_subcontractB
Add a subcontract line item to an existing canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Subcontract name | |
| notes | No | Additional notes | |
| quantity | No | Quantity | |
| description | No | Subcontract description | |
| unitCostCents | No | Unit cost in integer cents | |
| unitPriceCents | No | Unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID to add the subcontract to | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral transparency. It states only that a subcontract line item is added, but does not disclose side effects, persistence behavior, validation requirements, failure modes, or whether the canned service must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant or irrelevant content. It is well structured and immediately communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation with 8 parameters and no output schema, the one-sentence description is too sparse. It does not explain what happens when the subcontract is added, how fields like quantity or unitCostCents interact, what 'taxableValueType' means, or what the caller should expect after 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 descriptions cover 100% of the 8 parameters, so the baseline is 3. The description adds no additional meaning beyond the schema, and some properties like 'taxableValueType' remain vague, but the schema does provide basic one-line descriptions for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add'), the object ('a subcontract line item'), and the target ('an existing canned service template'). It is easily distinguished from sibling tools like add_canned_service_labor, add_canned_service_part, and add_canned_service_tire.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 adding a subcontract to a canned service. However, it does not explicitly mention alternatives like update_canned_service_subcontract or remove_canned_service_subcontract, so the guidance is only implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_canned_service_tireA
Add a tire line item to an existing canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Tire name or description | |
| notes | No | Additional notes | |
| quantity | No | Number of tires | |
| description | No | Additional description | |
| unitCostCents | No | Unit cost in integer cents | |
| unitPriceCents | No | Unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID to add the tire to | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral impact. It says 'Add' indicating a write operation, but does not describe side effects, validation, or error conditions. This 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?
Single concise sentence, front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple add operation, the description is sufficient to understand the intent, though it doesn't explain what happens to existing line items. Acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 8 parameters with descriptions. The tool description adds no additional meaning. Some descriptions like 'Additional description' are vague but exist. 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?
States a specific verb 'Add', a specific resource 'tire line item', and target 'canned service template'. Clearly distinguishes from sibling tools like add_canned_service_fee or add_canned_service_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Does not explicitly state when to use or not use this tool, though the sibling list implies it. It only says 'Add...' without mentioning alternatives or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_service_to_orderA
Add a service to a work order. Pass fromCannedServiceId to copy an existing canned service template (its labor, parts, fees) onto the order in one call, or pass name/note/pricing to create a custom one-off service instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Service name (required if fromCannedServiceId is not given) | |
| note | No | Additional notes for the service | |
| orderId | Yes | The work order ID to add the service to | |
| pricing | No | Pricing model for a custom service | |
| fromCannedServiceId | No | ID of a canned service template to copy onto the order (labor/parts/fees included) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action (add a service) but does not mention side effects such as whether the order is modified in place, whether it appends or replaces existing services, any permission requirements, or potential impacts on order totals. The mutation nature is implied but not elaborated, leaving significant gaps for a tool that alters an order.
Agents need to know what a tool does to the 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 that are front-loaded with the core purpose. The first sentence states the action, and the second explains the two usage patterns. There is no redundant or filler content, making it efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool without an output schema, the description adequately covers the essential invocation logic: the two modes and their associated parameters. It does not explain what happens after the call (e.g., whether the order totals are recalculated) or any prerequisites like order status, but these are not strictly required for a basic call. The absence of behavioral details lowers the score slightly, but the description is otherwise complete for selecting and calling 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?
While the schema covers 100% of parameter descriptions, the description adds semantic value by grouping parameters into two usage modes. It explains that fromCannedServiceId triggers a template copy including labor/parts/fees, whereas name/note/pricing creates a custom service. This goes beyond the raw schema and helps the agent understand the interplay between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the resource 'a service to a work order', with a specific and unambiguous purpose. It also distinguishes two modes of operation (canned template vs. custom), making it easy for an agent to understand what the tool accomplishes. It stands apart from sibling tools that operate on canned services rather than orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 each parameter path: passing fromCannedServiceId for copying a template, or name/note/pricing for a custom service. This helps the agent decide how to invoke the tool. It does not explicitly contrast with alternative tools, but there is no direct sibling that adds a service to an order, so 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.
assign_labelA
Assign an existing label (found via list_labels) to an entity such as an Order or Customer.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | The type of entity to assign the label to (e.g. "Order") | |
| labelId | Yes | The ID of the label to assign | |
| entityId | Yes | The ID of the entity to assign the label to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'assign an existing label', which implies mutation but does not state whether the assignment is idempotent, whether it overwrites existing label associations, what happens if the label or entity does not exist, or any permission requirements. The description gives no information about side effects, return values, or error handling, which is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words. It front-loads the action ('Assign') and includes the valuable hint about list_labels in parentheses. Every word earns its place, and there is no filler 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 that this is a mutation tool with no annotations and no output schema, the description should provide more context about behavior, results, and prerequisites. It only covers the prerequisite of using list_labels, but omits what happens on success, whether the action is reversible, and any permission requirements. The description is incomplete for an agent to fully anticipate the tool's effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, including a clear enum for entity and descriptions for labelId and entityId. The description adds minimal extra meaning beyond the schema—only a brief mention that entity can be 'such as an Order or Customer', which is already in the schema. The schema already does the heavy lifting, so a 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: assign an existing label to an entity. It names the resource (label) and the target (entity) and even hints at how to find labels (via list_labels). It distinguishes itself from sibling tools like list_labels and get_label by focusing on the assignment action, leaving no ambiguity about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: the label must already exist and be found via list_labels. It implies the tool is for assigning, not creating labels. There is no alternative assign-label sibling, so no explicit when-not-to-use is needed, but the prerequisite guidance is helpful and gives context on when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_technicianA
Assign a technician to one or more labor line items on a work order. Use list_services (orderId) to find the serviceId, list_labor (orderId + serviceId) to find labor IDs, and list_users to find the technician's user ID.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The work order ID the labor line items belong to | |
| laborIds | Yes | One or more labor line item IDs to assign the technician to | |
| technicianId | Yes | The technician/user ID to assign (from list_users) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states the assignment action but does not mention whether an existing assignment will be replaced, what happens on invalid IDs, or any response/return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and contains no redundant or extraneous information. The workflow guidance is compact and directly relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It includes necessary prerequisite lookup steps and correctly identifies all required inputs. It lacks explicit postcondition or output information, but given the simplicity of the action, 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?
The schema provides basic descriptions for all three parameters, and the tool description adds useful context by explaining how to obtain orderId, laborIds, and technicianId through related tools. This goes beyond the schema but does not deeply detail each 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 uses a specific verb ('Assign') and clearly identifies the resource ('technician') and target ('one or more labor line items on a work order'). It is distinct from sibling tools like add_service_to_order and list_labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent which lookup tools to use for each input parameter (list_services, list_labor, list_users), providing a clear workflow before calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_appointmentB
Book a new appointment in Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Additional notes for the appointment | |
| title | No | Appointment title or summary | |
| endDate | No | Appointment end date/time (ISO 8601 format) | |
| orderId | No | Work order ID to link to | |
| startDate | No | Appointment start date/time (ISO 8601 format) | |
| vehicleId | No | Vehicle ID for the appointment | |
| customerId | No | Customer ID for the appointment | |
| locationId | No | Location ID for multi-location shops. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, forcing the description to carry full disclosure burden. However, it reveals nothing about side effects, conflict handling (e.g., double-booked slots), return values, or whether notifications are sent. Only states the basic creation 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?
Single sentence with zero redundancy. However, for an 8-parameter creation tool with zero annotations, this brevity may be insufficient rather than optimally concise—it leaves critical context unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for complexity level. An 8-parameter mutation tool with no annotations and no output schema requires substantial contextual support (prerequisites, side effects, required relationships). The single-sentence description fails to provide this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema adequately documents all 8 parameters (customerId, vehicleId, etc.). The description adds no semantic detail beyond the schema, but baseline 3 applies per rubric for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Book') with clear resource ('appointment') and context ('Shopmonkey'). It clearly distinguishes from siblings like 'get_appointment', 'update_appointment', and 'list_appointments' by indicating this is a creation operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus 'update_appointment' or prerequisites (e.g., that customerId/vehicleId likely require existing records). No mention of required fields despite all 8 parameters being technically optional in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_canned_serviceA
Create a new canned service template in Shopmonkey. Canned services are reusable service bundles that can be added to work orders.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the canned service (e.g., "Full Synthetic Oil Change") | |
| express | No | Whether this is an express service | |
| lumpSum | No | Whether to display as a single lump-sum price on the work order | |
| pricing | No | Pricing model: FixedPrice uses fixedPriceCents; LineItem sums its line items | |
| bookable | No | Whether customers can book this service online | |
| locationId | No | Location ID to associate the service with. Defaults to SHOPMONKEY_LOCATION_ID env var if set. | |
| description | No | Description of the service | |
| recommended | No | Whether to show this as a recommended service | |
| fixedPriceCents | No | Fixed price in integer cents (e.g., $59.99 = 5999). Only applicable when pricing is FixedPrice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the basic create action and defines canned services; it does not mention that this is a mutating operation, potential side effects, permission requirements, or response format. Critical behavioral context is 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 two concise sentences: the first states the action and scope, the second provides essential context about what canned services are. It is front-loaded with the action and contains zero fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters) and absence of an output schema, the description provides adequate context about the purpose and domain but omits details on return values, prerequisites, or behavioral expectations. It is minimal and leaves the agent to infer how the creation result is 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?
The input schema provides 100% parameter coverage with detailed descriptions for each of the 9 parameters. The tool description adds no additional parameter semantics beyond the schema, so it meets the baseline for high schema coverage. No value beyond schema is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), the resource (canned service template), and the domain (Shopmonkey). It defines canned services as reusable bundles, distinguishing it from update/delete siblings. The purpose is unambiguous and 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?
The description makes clear this is for creating new templates, which implies when to use it, but it does not explicitly exclude alternatives or mention conditions like updating existing templates. The context is clear but lacks explicit when-not guidance or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerB
Create a new customer in Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ZIP code | |
| city | No | City | |
| state | No | State | |
| address | No | Street address | |
| lastName | No | Customer last name | |
| firstName | No | Customer first name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must convey behavioral expectations. It only states 'Create' with no mention of side effects, validation, error conditions, or idempotency, offering minimal transparency 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?
The description is a single, direct sentence that is perfectly concise. It uses no unnecessary words and immediately 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 such a simple create operation, the description is adequate but lacks details about the expected response (e.g., created customer ID) and any prerequisites such as uniqueness checks. The absence of an output schema increases the need for this context, which is not provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters are described in the schema (100% coverage), so the baseline is 3. The description adds no extra meaning to the parameters, relying entirely on the already clear field names and short descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Create), the target resource (a new customer), and the context (in Shopmonkey). It effectively distinguishes this from sibling tools like update_customer and search_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?
No guidance is provided on when to use this tool versus alternatives. It does not mention checking for existing customers before creating, nor when to prefer create over update, leaving the agent without explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_orderA
Create a new work order in Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Order title shown on the work order (e.g. "Front brake job") | |
| status | No | Initial order status | |
| vehicleId | No | Vehicle ID to associate with the order | |
| customerId | No | Customer ID to associate with the order | |
| locationId | No | Location ID for multi-location shops. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool creates a new order, which implies a write operation. With no annotations to indicate side effects, this basic behavioral transparency is sufficient for the simple action, though it does not detail any potential implications (e.g., defaults or related records).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that directly states the purpose without any unnecessary words or tangential details. 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?
For a simple create operation with no output schema, the description is complete. It correctly identifies the action and object, and the schema provides all necessary parameter details. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all five parameters, covering 100% of them. The individual descriptions (e.g., locationId default) add clear meaning, so the tool description itself does not need to elaborate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 work order') and the context ('in Shopmonkey'), making the tool's purpose unambiguous and easily distinguishable from sibling tools that operate on other resources (e.g., customers, vehicles).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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, but since there is no other create-order tool among the siblings, the usage context is implicit. The clear purpose provides sufficient guidance for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_paymentA
Record a new payment in Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Additional notes about the payment | |
| method | No | Payment method (e.g., cash, credit_card, check) | |
| orderId | Yes | Work order ID to apply the payment to | |
| amountCents | Yes | Payment amount in integer cents. Example: $150.50 = 15050. NEVER send a decimal value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states that a new payment is recorded, implying a write operation, but does not disclose side effects (e.g., updates to order balance), validation rules, or idempotency. Basic behavior is clear, but deeper consequences are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action ('Record') and the resource ('payment'). It contains no fluff and is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple create operation, and the description gives the essential purpose. However, the absence of an output schema and annotations leaves the return value and error behavior unspecified, which may require the agent to make assumptions. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%: all four parameters (orderId, amountCents, method, notes) have descriptions. The tool description adds no additional semantic value beyond the schema, so 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 'Record a new payment in Shopmonkey' clearly specifies the action (recording/creating) and the resource (payment). It is distinct from sibling tools like get_payment and list_payments, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates this tool is for creating new payments, and sibling tools for retrieving payments exist, but it does not explicitly state when to use this tool versus alternatives. The usage is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vehicleB
Add a new vehicle to Shopmonkey, optionally linked to a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | Vehicle Identification Number | |
| make | No | Vehicle make (e.g., Toyota, Ford) | |
| year | No | Vehicle model year | |
| color | No | Vehicle color | |
| model | No | Vehicle model (e.g., Camry, F-150) | |
| mileage | No | Current mileage | |
| customerId | No | Customer ID to associate with the vehicle | |
| licensePlate | No | License plate number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States 'Add' indicating mutation, but fails to disclose side effects (what happens on duplicate VIN?), return values, idempotency, or required fields despite schema marking all as optional.
Agents need to know what a tool does to the 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 11-word sentence. Front-loaded with action verb. Zero redundancy. Every word earns its place by conveying core operation, target system, and key optional relationship.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Creation tool with no output schema and no annotations, but benefits from 100% param schema coverage. Adequate for basic invocation but gaps remain: no mention of return payload (created object ID?), validation behavior, or conflict resolution.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, establishing baseline 3. Description adds 'optionally linked' which reinforces the optional nature of customerId parameter, but otherwise doesn't expand on parameter semantics, formats, or validation rules 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?
Clear verb 'Add' with specific resource 'vehicle' and system context 'Shopmonkey'. Mentions optional customer linking which adds scope detail. Lacks explicit differentiation from sibling 'update_vehicle' (create vs modify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context via 'optionally linked to a customer', suggesting when to include customerId. However, lacks explicit prerequisites (e.g., 'create customer first') or 'when-not-to-use' guidance versus update_vehicle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookA
Create a new webhook in Shopmonkey. Use this to register Make.com or other endpoint URLs that receive Shopmonkey event notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The HTTPS endpoint URL that will receive webhook events | |
| name | Yes | Descriptive name for this webhook (e.g., "make-ghl-sync") | |
| secret | No | Optional shared secret for HMAC signature verification | |
| enabled | No | Whether the webhook is active (default: true) | |
| version | No | Webhook payload version | |
| triggers | Yes | List of event types that trigger this webhook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly indicates a write operation ('Create' and 'register') and implies the creation of a new webhook resource, which is transparent for a typical create action. It doesn't mention side effects, but they are not necessary for this simple 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?
The description is two concise sentences with no fluff. It efficiently conveys the purpose and a common use case, 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?
The description is comprehensive for a create operation. It doesn't mention output schema (none exists), but it provides enough context about the resource and intended usage. The required parameters are in the schema, so the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers 100% of parameters, and the description does not add any extra meaning beyond what the schema already explains. The baseline is 3 because it relies fully on the schema, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('webhook in Shopmonkey'), and specifies the intended use of registering endpoint URLs for receiving event notifications. It distinguishes itself from sibling tools like list_webhooks, update_webhook, and delete_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool (to register Make.com or other endpoint URLs for event notifications). It doesn't explicitly say when not to use it, but the purpose is clear enough that an agent can infer alternatives like listing or updating webhooks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_canned_serviceA
Delete a canned service template by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The canned service ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states that deletion occurs, with no mention of irreversibility, side effects, permissions, or impact on related data such as associated fees, labor, parts, or subcontracts. Since no annotations are present, this lack of behavioral detail leaves important safety information undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It directly communicates the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter and no output schema, the description is mostly sufficient. However, it omits any indication of what happens after deletion (e.g., confirmation behavior) and does not address potential constraints or dependencies, leaving some contextual 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 single parameter 'id' is fully covered by its schema description ('The canned service ID to delete'), and the description aligns with it. The description adds little beyond what the schema already states, so the 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 a specific action ('Delete') and a specific resource ('canned service template') with an identifier. This distinguishes it from sibling tools like create_canned_service, update_canned_service, and list_canned_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 the intended use: deleting a canned service template by ID. However, it does not explicitly mention when to prefer this tool over alternatives or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookA
Delete a webhook by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey destructive behavior. 'Delete' clearly indicates a destructive action, but it does not mention permanence, side effects, or whether the operation is idempotent. It provides basic transparency but lacks 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, clear sentence with no unnecessary words. It is appropriately sized for a simple delete operation and front-loads the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sibling tools, the purpose is clear, and no extra context is strictly required for a simple delete. However, it does not mention any prerequisites (e.g., the webhook must exist) or expected result (e.g., success/failure response), leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'id' parameter as 'The webhook ID to delete', and the description repeats this nearly verbatim. It adds no new meaning or context, such as format, constraints, or validation rules, though coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Delete' with the resource 'webhook', clearly identifying the action. It distinguishes itself from sibling tools like create_webhook, update_webhook, and get_webhook by focusing solely on deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention that this is the only tool for deleting webhooks or that list/get should be used to find the ID first. Usage must be inferred from the action name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appointmentA
Get detailed information about a single appointment by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The appointment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full disclosure burden. Adds 'detailed information' to distinguish depth from summary listings, but fails to disclose read-only safety (implied but not stated), error behavior if ID invalid, or authorization 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 sentence of 9 words. Front-loaded action verb, zero redundancy, every word earns its place. Appropriate length for simple retrieval 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?
Adequate for a simple 1-parameter retrieval tool without output schema. Describes the lookup mechanism and depth of return ('detailed'). Could improve by noting error behavior (e.g., 404 if ID not found) but satisfies core requirements.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'id' parameter fully described as 'The appointment ID'. Description mentions 'by its ID' confirming the parameter's identifying purpose, but adds no syntax guidance or validation rules beyond schema. Baseline 3 appropriate for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Excellent clarity: specific verb 'Get', resource 'appointment', and scope 'single appointment by its ID' clearly distinguishes from sibling list_appointments (plural listing) and update_appointment (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?
Provides implied usage through 'by its ID', signaling this requires a specific identifier rather than browsing. However, lacks explicit contrast with list_appointments alternative or guidance on when to use each (e.g., 'Use this when you have a specific appointment ID; use list_appointments to search broadly').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_canned_serviceB
Get detailed information about a single canned service template by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full behavioral disclosure burden. Fails to disclose: read-only nature (implied but not explicit), error behavior for invalid IDs, rate limits, or what 'detailed information' encompasses. Provides minimal safety/operational context beyond the action verb.
Agents need to know what a tool does to the 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 no redundant words. Every element earns its place: verb, resource, scope qualifier, and key parameter reference. Appropriately compact for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 single-parameter tool with complete schema coverage, but gaps remain given no output schema exists. Description does not hint at return value structure, payload size, or what fields constitute 'detailed information'. Sufficient but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, establishing baseline 3. Description references 'by its ID' which aligns with the parameter, but adds no additional semantic context such as ID format constraints, where to obtain valid IDs, or validation rules beyond the schema's basic 'The canned service ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Get'), specific resource ('canned service template'), and scope ('single' + 'by its ID'). Distinguishes implicitly from sibling 'list_canned_services' by emphasizing the singular lookup pattern, though it does not explicitly name the 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?
No explicit guidance on when to use this tool versus alternatives. While 'by its ID' implies you must have a specific identifier, it does not state when to use this versus 'list_canned_services' for browsing, nor does it mention prerequisites like ID discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerA
Get detailed information about a single customer by their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, 'Get' implies a safe read-only operation, but the description omits error handling, authorization requirements, and what constitutes 'detailed' 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?
Single sentence, front-loaded with action verb, no redundancy. Every word earns its place in defining scope 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 simple single-parameter getter, but given the lack of output schema and annotations, the description should ideally specify error behavior or the structure of the 'detailed information' returned.
Complex tools with many parameters or behaviors need more documentation. Simple 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 is already well-described. The description mentions 'by their ID' which aligns with the schema but adds no additional semantic clarity 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?
States specific action (Get), resource (customer), and scope (single by ID). The 'single' qualifier distinguishes it from the sibling list_customers tool, though it doesn't explicitly name the 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?
Implies usage context (when you have a specific ID) through 'by their ID', but lacks explicit guidance on when to prefer list_customers or error scenarios like 'customer not found'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventory_partB
Get detailed information about a single inventory part by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The inventory part ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States 'Get' implying read-only safety, but lacks disclosure of error behavior (e.g., 404 if ID not found), return structure, or what 'detailed information' encompasses.
Agents need to know what a tool does to the 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 11-word sentence with no redundancy. Front-loaded with action verb, 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?
Adequate for a low-complexity single-parameter tool, though absence of output schema and annotations leaves gaps around return value structure and error states that a complete description should ideally address.
Complex tools with many parameters or behaviors need more documentation. 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 (parameter 'id' fully documented), baseline is appropriately met. Description reinforces the ID parameter with 'by its ID', but adds no syntax specifics, format constraints, or examples 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?
Clear verb (Get), resource (inventory part), and scope (single item by ID). The phrase 'by its ID' distinguishes this from the sibling 'list_inventory_parts', though it does not explicitly reference sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus siblings like 'search_parts' or 'list_inventory_parts'. Agents must infer that ID-based lookup is the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_labelA
Get a single label by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The label ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the core operation and does not disclose potential error behavior, response format, permissions, or side effects. For a read operation, this is a notable 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 a single, focused sentence that immediately states the purpose. There is no fluff or redundant information, making it highly efficient for an agent 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?
For a simple get-by-ID tool, the description is minimally adequate. However, it lacks context about when to use this tool versus list_labels or assign_label, and does not mention error handling or output expectations, which could confuse an agent in a large 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 description coverage is 100%, so the 'id' parameter is already documented. The description merely repeats 'by its ID' without adding any new meaning, aligning with the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get), the resource (label), and the scope (single by ID). It distinguishes from list_labels (which retrieves multiple) and assign_label (which performs an action) through the explicit 'single' and 'by its ID' phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 by the description and the tool's name—use when you have a specific label ID. However, there is no explicit guidance contrasting it with list_labels or assign_label, so the agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderB
Get detailed information about a single work order by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States 'Get' implying read-only safety, but provides no details on error behavior (e.g., 404 for invalid ID), cache behavior, or what constitutes 'detailed' information beyond the order ID parameter.
Agents need to know what a tool does to the 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 of 10 words with zero redundancy. Every word earns its place: verb, resource scope, and key parameter reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 single-parameter retrieval tool with complete schema coverage. Acceptable given no output schema exists, though could benefit from noting that the ID must be known (likely from list_orders) and hinting at the data richness expected.
Complex tools with many parameters or behaviors need more documentation. Simple 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% description coverage ('The work order ID'), so baseline is met. Description mentions 'by its ID' but adds no additional semantics regarding ID format, constraints, or lookup requirements 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?
Clear verb 'Get' with specific resource 'work order'. Scope qualifiers 'single' and 'by its ID' effectively distinguish this from sibling list_orders, though 'detailed information' is vague about what data is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 signals ID-based lookup via 'by its ID', distinguishing from list/search siblings. However, lacks explicit guidance on when to use list_orders first to find IDs, or error handling if ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paymentB
Get detailed information about a single payment by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The payment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden of behavioral disclosure. Fails to specify error behavior (e.g., invalid ID), authentication requirements, rate limits, or what constitutes 'detailed information'. Only implies read-only access through the verb 'Get'.
Agents need to know what a tool does to the 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 efficient sentence with zero redundancy. Information is front-loaded and appropriately sized for the tool's simplicity; 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?
Adequate for a simple retrieval tool with complete parameter schema. Lacks description of return values and error scenarios (compounded by missing output schema and annotations), but meets minimum viable standards for a single-parameter lookup operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'id' parameter fully documented as 'The payment ID'. The description reinforces this with 'by its ID' but adds no additional semantic details, examples, or format constraints beyond what the schema provides. Baseline 3 is appropriate for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific action (Get) and resource (payment), and clarifies scope (single by ID). Implicitly distinguishes from list_payments by specifying 'single' and 'by its ID', though it doesn't explicitly name the sibling 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?
Lacks explicit when-to-use guidance; only implies an ID is required via 'by its ID'. Does not mention list_payments as the alternative when the payment ID is unknown, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get detailed information about a single shop user or technician by their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The user/technician ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds the detail that the information is 'detailed,' suggesting comprehensive data return, but lacks disclosure on error behavior (e.g., what happens if ID is invalid), authentication requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence (11 words) that front-loads the verb and resource. Every word earns its place; there is no redundancy or filler 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?
Given this is a simple single-parameter lookup tool with no output schema, the description is sufficiently complete. It appropriately clarifies the domain context ('shop') and role equivalence ('user or technician') without over-specifying.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'id' parameter fully described as 'The user/technician ID'. The description references the ID ('by their ID'), confirming the parameter's purpose, but does not add syntax constraints, format examples, or validation rules 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 detailed information), resource (shop user or technician), and scope (single entity by ID). The word 'single' implicitly distinguishes this from the sibling 'list_users', though it does not explicitly name that 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 implies an ID is required ('by their ID'), but provides no explicit guidance on when to use this specific retrieval tool versus 'list_users' or 'search_parts'. It states the mechanism but not the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicleB
Get detailed information about a single vehicle by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The vehicle ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. While 'Get' implies a read-only operation, the description lacks details about error behavior (e.g., invalid ID), authentication requirements, or what specific 'detailed information' is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. It immediately communicates the core purpose and required parameter without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description is minimally adequate. However, given the lack of annotations and output schema, it should ideally mention error cases (e.g., vehicle not found) or the nature of the returned 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?
With 100% schema coverage, the input parameter 'id' is already well-documented as 'The vehicle ID'. The description mentions 'by its ID' which aligns with the parameter usage but doesn't add significant semantic value beyond what the schema already provides, warranting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation (Get), resource (vehicle), scope (single), and retrieval method (by ID). The phrase 'single vehicle' effectively distinguishes this from the sibling 'list_vehicles' tool, though it doesn't explicitly name that 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?
While 'by its ID' implies you need a specific identifier, there is no explicit guidance on when to use this versus 'list_vehicles' for searching, or what to do if the ID is unknown. No prerequisites or error conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhookA
Get details of a single webhook by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation but does not explicitly state side effects, error cases, or what happens if the webhook does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary details, perfectly matching 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?
The description sufficiently conveys the purpose for a simple get operation. It could mention the return format or error behavior, but given the minimal complexity, it is nearly 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 schema already provides a clear description for the single parameter 'id' ('The webhook ID'), and the description adds no additional meaning. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get details'), the resource ('webhook'), and the scope ('single webhook by ID'), which distinguishes it from list_webhooks and other webhook 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 explicit guidance on when to use this tool over alternatives like list_webhooks, though the unique ID parameter implies its use case. The description is adequate but lacks explicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appointmentsA
List appointments from Shopmonkey. Supports filtering and pagination. Date-filtered queries are routed through the /appointment/search endpoint, which applies the range server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| endDate | No | Filter by end date (ISO 8601 format) | |
| startDate | No | Filter by start date (ISO 8601 format) | |
| customerId | No | Filter appointments by customer ID | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of conveying behavioral transparency. It only states that the tool lists appointments, implying a read-only operation, but it does not explicitly confirm that it is side-effect-free, nor does it mention any authentication, rate limits, or potential failure modes. This lack of explicit behavioral detail is 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 brief and to the point, consisting of two sentences with no redundant information. It avoids vague marketing language and directly states what the tool does and a key implementation nuance, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality but omits some contextual details that would help an agent fully understand the tool. For example, it does not mention what the response structure looks like, whether the list is ordered, or how pagination variables interact (e.g., whether skip/limit are mandatory for large result sets). Given the absence of an output schema, this lack of return-shape information leaves a moderate 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?
Although the schema already provides descriptions for all six parameters, the description adds meaningful context by explaining that date-filtered queries are routed to a specific endpoint and that the range is applied server-side. This clarifies the behavior of the startDate and endDate parameters, going beyond the schema's simple 'Filter by...' descriptions. The other parameters (skip, limit, customerId, locationId) are adequately described by the schema and need no extra explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 ('appointments from Shopmonkey'), making the tool's purpose unambiguous. It also mentions filtering and pagination, which are key features that distinguish it from single-item retrieval tools like get_appointment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 that filtering and pagination are supported, and it gives a specific implementation detail about date-filtered queries going through the /appointment/search endpoint. However, it does not explicitly mention when to use this tool versus alternatives such as get_appointment for a single appointment or create/update for mutations, leaving the agent to infer the collection-focused use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_canned_servicesA
List pre-built canned service templates from Shopmonkey. These are reusable service templates that can be added to work orders.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It states the operation lists templates but does not mention that it is read-only, pagination behavior, or that it returns a list. Basic but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant wording. It efficiently conveys the purpose and nature of the templates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list operation, the description gives sufficient context about what the tool does and the nature of the items. It does not explain return format, but that is acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all three parameters (skip, limit, locationId), so coverage is 100%. The description adds no extra parameter context, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'pre-built canned service templates from Shopmonkey', adding context that these are reusable templates for work orders. This 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 does not explicitly contrast with sibling tools like get_canned_service or create_canned_service. While it implies a listing operation, it lacks direct guidance on when to choose this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customer_deferred_servicesA
List deferred services (recommended-but-not-yet-performed work) for a customer. Useful for revenue-opportunity surfacing in chat.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| customerId | Yes | The customer ID to list deferred services for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It implicitly signals a safe read operation via 'List' and defines the concept of deferred services, but does not explicitly mention side effects, output format, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The definition and use case are front-loaded, making the purpose immediately 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?
The description is sufficiently complete for a simple read-only list operation. It defines the domain concept and use case, though it does not specify return fields or default ordering; these are not strictly required for basic correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all three parameters with clear descriptions. The tool description adds no additional parameter-level detail, so 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?
States a specific verb ('list'), a specific resource ('deferred services for a customer'), and clarifies that deferred services are recommended-but-not-yet-performed work, distinguishing it from generic service listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context by scoping to a customer and mentioning the intended use case ('revenue-opportunity surfacing in chat'), though it does not explicitly contrast with sibling tools like list_services or list_canned_services.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inventory_partsC
List parts from Shopmonkey inventory. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only mentions 'List parts' and 'Supports pagination' – it does not explicitly state that this is a read-only operation, nor does it disclose any side effects or return characteristics beyond pagination. The description adds little beyond what the schema already conveys.
Agents need to know what a tool does to the 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 core purpose and then a note on pagination. It is appropriately concise and easy to scan, though it could optionally mention the location filter or default behavior for slightly more completeness 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?
For a simple listing tool, the description is adequate: it states the resource and pagination. However, it does not mention the locationId filter (covered in schema) or any ordering/defaults, and there is no output schema to clarify return structure. Given its simplicity, the description is acceptable but could be more complete by noting that it returns a list of parts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (skip, limit, locationId) already described in the schema. The description's mention of pagination reinforces the skip/limit parameters but adds no new meaning. Since the schema handles parameter documentation, a 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 action (list) and the resource (parts from Shopmonkey inventory). It also notes pagination support, which adds context. However, it does not explicitly distinguish this from sibling tools like list_inventory_tires or search_parts, though the distinction is somewhat implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that search_parts is for filtering or that list_inventory_tires is for tires. The only context is the pagination note, which is more about parameters than usage. There is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inventory_tiresB
List tires from Shopmonkey inventory. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It states it lists tires and supports pagination but does not explicitly confirm read-only side effects, result ordering, or error behavior. The description is too minimal to fully inform the agent about runtime implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences conveying the essential purpose and a key capability. No redundant or irrelevant information is present, making it 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 tool has no output schema, so the description should compensate by explaining return values or result structure. It does not mention what the response contains (e.g., tire objects, total count, or next-page tokens). Without that context, the agent is left guessing about the output format, making the description incomplete for full contextual 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?
All three parameters (skip, limit, locationId) have descriptions in the schema, providing full coverage. The description itself does not add extra meaning beyond the schema, so it meets the baseline for parameter clarity without 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 the action ('List tires') and the resource ('Shopmonkey inventory'), which is specific and distinguishes it from sibling tools like list_inventory_parts. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions pagination support but provides no guidance on when to use this tool versus alternatives (e.g., search_parts or list_inventory_parts). It does not state scenarios for using the locationId filter or any exclusions, leaving the agent without explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_labelsA
List labels defined in Shopmonkey (custom tags such as "Warranty" or "Fleet"). Filter by exact name to find a label ID before assigning it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter to labels with this exact name | |
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 50) | |
| entity | No | Filter to labels configured for this entity type (e.g. "Order") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'List' implies a read-only operation with no side effects, which is appropriate for this tool. It does not explicitly state read-only behavior, but given the nature of the action, the disclosure is adequate for typical usage.
Agents need to know what a tool does to the 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: the first states the core function, and the second explains a key use case. There is no redundancy or unnecessary detail, making it 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 purpose and a practical use case. There is no output schema, but for a list operation, the response format is typically implied. The description does not specify pagination behavior or return fields, but the schema already documents skip and limit parameters, and the tool's purpose is straightforward, so 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?
All four parameters are fully described in the schema (100% coverage), so the baseline is 3. The description adds context by framing the 'name' parameter as a filter to 'find a label ID before assigning it,' which helps the agent understand why they would use this parameter. However, the description adds little beyond the schema for skip, limit, and entity, so a 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?
Clearly states the verb 'List' and the resource 'labels defined in Shopmonkey' with context about custom tags. The description distinguishes from sibling tools like get_label (which retrieves a single label) and assign_label (which assigns a label), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case: 'Filter by exact name to find a label ID before assigning it.' This signals when to use the tool, but it does not explicitly mention alternatives such as get_label for cases where the ID is already known, so it falls slightly short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_laborA
List the labor line items on a service. Shopmonkey nests labor under order > service, so both orderId and serviceId are required — call list_services with an orderId first to get the serviceId.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The work order ID the service belongs to | |
| serviceId | Yes | The service ID to list labor line items for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'list' unambiguously implies a read-only operation with no side effects, conveying the behavioral profile effectively.
Agents need to know what a tool does to the 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 deliver all necessary information without any fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the object being operated on, the required parameters, and the prerequisite action, making it self-sufficient for 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?
Both orderId and serviceId have clear descriptive definitions that explain their roles in the operation.
Input schemas describe structure but not intent. Descriptions should explain 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 lists labor line items on a service, with the specific context of Shopmonkey's nesting under order > 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?
Provides a direct prerequisite hint to call list_services first to obtain the serviceId, which is practical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsA
List all shop locations in Shopmonkey. Useful for multi-location shops to identify location IDs for filtering other resources.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'List' implies a read-only operation, but no explicit mention of side effects or side effects absence. Given no annotations, it's reasonably transparent but could be more explicit about non-destructiveness.
Agents need to know what a tool does to the 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, front-loading the primary purpose and then adding 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?
Provides sufficient context for when it would be used and why the returned location IDs matter. No output schema is provided, but the description covers the essential purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions. 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?
Clearly states it lists all shop locations, with a specific verb and resource. Unambiguous and distinct from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete use case (multi-location shops needing location IDs for filtering), though it doesn't explicitly state when not to use it or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersB
List work orders from Shopmonkey. Filter by status, customer ID, date range, or location.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| status | No | Filter by order status | |
| customerId | No | Filter orders by customer ID | |
| locationId | No | Filter by location ID (for multi-location shops). Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'List' implies a read-only operation, but with no annotations and no mention of side effects, pagination behavior, or response shape, the behavioral transparency is average. It does not contradict any annotations because none are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it includes an inaccurate reference to date range filtering that is not supported by the schema. It is short and front-loaded but not entirely accurate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is thin. It gives the basic purpose and filter hints, but omits pagination defaults, result shape, and the fact that date range filtering is not actually available. An agent could be misled into expecting a date range parameter.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions fully cover the parameters, so the baseline is 3, but the description adds no extra value beyond the schema and introduces a misleading 'date range' filter that does not exist in the input schema. This detracts from clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific verb and resource: 'List work orders from Shopmonkey.' This distinguishes it from single-order tools like get_order and mutation tools like create_order/update_order. Minor deduction because the description mentions filtering by date range, but no date range parameters exist in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for listing multiple work orders, and the name contrasts with get_order, but it does not explicitly state when to use this tool versus alternatives. 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.
list_paymentsA
List payments from Shopmonkey. Supports filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| orderId | No | Filter payments by work order ID | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds that filtering and pagination are supported, which is useful, but it does not mention return format, ordering, or any prerequisites. It also doesn't state that it is read-only, though 'list' implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the purpose ('List payments from Shopmonkey') and then adding the key capability. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with fully documented parameters and no output schema, the description is sufficient to understand what the tool does. However, it omits details about the response structure and any limits, but these are not critical for a basic 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?
The input schema provides descriptions for all four parameters (100% coverage), so the description adds little beyond the general statement of filtering and pagination. The defaults and env var behavior are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'payments' from Shopmonkey, clearly distinguishing it from the sibling tool get_payment (singular). It also notes support for filtering and pagination, which further clarifies its role as a collection-retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that the tool supports filtering and pagination, implying it is for retrieving multiple payments with optional constraints. However, it does not explicitly state when to prefer this over get_payment or other list tools, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesA
List the services on a work order. Shopmonkey nests services under their order — there is no flat service list — so orderId is required.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| orderId | Yes | The work order ID to list services for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the nesting behavior (services are nested under orders), which is useful structural context. However, it does not mention pagination behavior, response format, or any side effects. For a read-only list operation, this is somewhat minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and immediately explains the key constraint. There is no wasted verbiage, and the structure is clear 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 list tool with pagination parameters and no output schema, the description provides enough context: it states the purpose, the required parameter, and the data model. It could optionally mention pagination defaults, but those are already in the schema. The description is complete enough for an agent to call 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 already covers all three parameters (100% coverage), so the baseline is 3. The description adds semantic value by explaining why orderId is required and how the data is structured, which goes beyond the schema's simple field descriptions. This enhances the agent's understanding of the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 services on a work order, with a specific verb, resource, and scope. It also explains the nesting context, which distinguishes it from other list tools in the sibling set. The purpose is unambiguous and differentiates it from tools like list_canned_services or list_labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 that orderId is required and explains why (services are nested under orders, no flat list). This gives clear context for when to use the tool and the necessary precondition. While it doesn't mention alternatives or when not to use, the guidance is adequate 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_timeclockA
List technician time clock events. Track clock-in/clock-out for shop staff.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| userId | No | Filter by user/technician ID | |
| endDate | No | Filter by end date (ISO 8601 format) | |
| startDate | No | Filter by start date (ISO 8601 format) | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description implies a read-only list operation but does not explicitly state the absence of side effects or any authorization requirements. The verb 'list' suggests non-mutating behavior, but it is not stated explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's function without any redundant information. It is well-structured 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?
For a simple list operation, the description is sufficient even without an explicit return format. It could mention what fields are returned, but the absence is minor given the tool's simplicity and the parameter 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?
The schema descriptions fully cover all six parameters (pagination, filters, location default), so the tool description adds no additional meaning beyond what is already in the input schema. This is exactly the baseline for full 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 lists technician time clock events and tracks clock-in/clock-out for shop staff, using a specific verb ('list') and resource ('technician time clock events'). It leaves no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, though no direct sibling for timeclock events exists. It does not elaborate on filtering or pagination, relying instead on parameter descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersB
List shop users and technicians from Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description relies on 'List' to imply read-only behavior, but it does not explicitly mention side effects, authorization, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence; concise and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description plus schema is sufficient for a simple list operation, though no output shape is described; 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?
All three parameters are documented in the schema with descriptions and defaults; the description adds no extra semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the verb ('List') and resource ('shop users and technicians') clearly, but does not explicitly differentiate from sibling tools like get_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instead of get_user or other list tools; the only implication is from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vehicle_ownersB
List all customers who own or are associated with a specific vehicle.
| Name | Required | Description | Default |
|---|---|---|---|
| vehicleId | Yes | The vehicle ID to list owners for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without mentioning whether it is read-only, what the output looks like (e.g., full customer objects vs. IDs), or any semantics around 'associated' (e.g., historical vs. current owners). These are gaps for a list operation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that gets straight to the point. It uses the imperative 'List' and front-loads the action and resource, with zero filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool, the description covers the core purpose but leaves some gaps. It does not specify the shape of the returned customers (e.g., full objects, references), nor clarify what 'associated' means (current vs. historical). Without an output schema, a bit more detail on the return value would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the sole parameter (vehicleId) with a matching description ('The vehicle ID to list owners for'). The tool description adds no additional meaning beyond that, so it meets the baseline of 3 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 action (list) and the resource (customers), scoped to 'a specific vehicle'. It is distinct from sibling tools like list_vehicles_for_customer, which does the reverse. The verb and object are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_vehicles_for_customer or get_customer. It does not mention any exclusions, prerequisites, or conditions that would steer an agent toward or away from this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vehicles_for_customerA
List all vehicles associated with a specific customer.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| customerId | Yes | The customer ID whose vehicles to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden, but it only states the listing action and does not disclose pagination behavior, read-only nature, or potential edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words 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 list operation with a well-defined parameter set, the description is adequate, though it does not mention output shape or pagination details beyond the schema 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?
The schema already provides descriptions for all three parameters, so the description adds no additional semantic value beyond what is already in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('vehicles associated with a specific customer'), distinguishing it from sibling tools like get_vehicle or lookup_vehicle_by_vin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 all vehicles for a customer) but does not explicitly contrast it with alternatives such as get_vehicle or lookup_vehicle_by_vin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksA
List all registered webhooks in Shopmonkey.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It only says 'List', which implies a read-only operation, but does not explicitly state that no modifications occur or that authentication is required. The absence of any side-effect disclosure is a minor 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 a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the verb and resource, with no fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, the description is complete enough. It does not require an output schema explanation, and the pagination parameters are already documented. It could mention whether the list is ordered or includes archived webhooks, but such details are beyond the minimal context needed to invoke the tool successfully.
Complex tools with many parameters or behaviors need more documentation. 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 provides descriptions for both skip and limit parameters (100% coverage). The description adds no additional meaning about how these parameters affect the listing, such as sorting or default pagination behavior, so it neither enhances nor detracts from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (all registered webhooks in Shopmonkey), and naturally distinguishes itself from the sibling get_webhook, which retrieves a single webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies its use for retrieving all webhooks, it does not explicitly mention when to use this tool versus get_webhook, create_webhook, update_webhook, or delete_webhook. No direct 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.
list_workflow_statusesC
List workflow/pipeline status stages from Shopmonkey. Shows the progression stages work orders move through.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains what data represents (progression stages) but discloses no API behavior: no mention of idempotency, caching, rate limits, error handling, or return structure. 'List' implies read-only but doesn't confirm safety or scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with minimal redundancy. 'Workflow/pipeline' is slightly redundant, and 'Shows' is weaker than 'Returns,' but overall efficient and appropriately sized for the tool's complexity. No structural 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?
Adequate for a single-parameter read tool with complete schema coverage. Explains the domain concept (workflow statuses) but misses the location filtering aspect and lacks output description (though no output schema exists to constrain it). Acceptable but has 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%, establishing a baseline of 3. The description adds no parameter-specific context (doesn't mention locationId or the env var fallback), but the schema adequately documents the single optional parameter without requiring supplementary 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?
Clear verb 'List' and specific resource 'workflow/pipeline status stages'. The phrase 'progression stages work orders move through' effectively clarifies this returns status taxonomy/metadata rather than actual orders, distinguishing it from sibling tools like list_orders. Deducts one point for not explicitly naming the distinction from order-listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to invoke this tool versus alternatives. Does not explain typical use cases (e.g., fetching statuses to populate a dropdown filter) or prerequisites (e.g., needing location context). Purely descriptive without prescriptive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_vehicle_by_plateA
Look up a vehicle in Shopmonkey by its license plate and region.
| Name | Required | Description | Default |
|---|---|---|---|
| plate | Yes | License plate number | |
| region | Yes | Region/state code (e.g., US-CA, US-TX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral details such as read-only nature, potential errors, or side effects. It only states the basic action without elaboration, so the description carries the full burden and falls short.
Agents need to know what a tool does to the 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 verb and resource. It is front-loaded, contains no unnecessary words, and effectively communicates the tool's core 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 lookup operation, the description adequately conveys what the tool does and the inputs it requires. It does not mention output format, but the absence of an output schema and the straightforward nature of the lookup make this 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 schema already provides descriptions for both parameters ('License plate number' and 'Region/state code'), so the coverage is 100%. The tool description adds no extra meaning beyond repeating the purpose, so it does not enhance the parameter understanding 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's function: looking up a vehicle by license plate and region. It identifies the resource (vehicle) and the specific identifiers (plate and region), and it is easily distinguishable from sibling tools like lookup_vehicle_by_vin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not explicitly mention when to prefer it over alternatives (e.g., lookup_vehicle_by_vin). It provides no conditions or context for use, leaving the agent to infer when this lookup is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_vehicle_by_vinB
Look up a vehicle in Shopmonkey by its VIN (Vehicle Identification Number).
| Name | Required | Description | Default |
|---|---|---|---|
| vin | Yes | The Vehicle Identification Number to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action and resource, without disclosing behavior such as read-only nature, error handling, or what happens if the VIN is not found. It does not contradict annotations (none exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently communicates the tool's purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup, the description is minimally adequate but lacks return format information and any note about uniqueness or error cases. With no output schema, an agent might be uncertain about what the response 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 description coverage is 100%, and the schema already documents the 'vin' parameter. The description merely restates 'by its VIN', adding no new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Look up'), a specific resource ('vehicle'), and the exact key ('VIN'), which clearly distinguishes it from sibling tools like lookup_vehicle_by_plate and get_vehicle. The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_vehicle (by ID) or lookup_vehicle_by_plate. The description does not mention any exclusions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_canned_service_feeB
Remove a fee line item from a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The fee line item ID to remove | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Remove' but does not disclose side effects such as whether removal is permanent, whether it requires specific permissions, or what happens if the fee item does not exist. This is a destructive operation with no transparency beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant words or information. It is appropriately concise for the tool's simple 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 straightforward removal operation with two fully documented parameters, the description is minimally adequate. However, it omits any mention of prerequisites (e.g., whether the canned service must exist) or error behavior, and it does not reference the family of canned-service fee tools. Given the tool's simplicity, a 3 reflects the lack of additional useful context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters (itemId and cannedServiceId) with clear descriptions, and schema coverage is 100%. The tool description adds no additional parameter context, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and a clear resource ('fee line item from a canned service template'). It unambiguously distinguishes from sibling tools like update_canned_service_fee or remove_canned_service_labor, which operate on different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as update_canned_service_fee for modifying a fee or add_canned_service_fee for adding one. The description only states what it does, leaving the agent to infer appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_canned_service_laborA
Remove a labor line item from a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The labor line item ID to remove | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It only says 'Remove' without disclosing side effects, permanence, permission requirements, or behavior when the item does not exist. This lack of detail leaves behavioral ambiguity for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words or repetition. It is structurally efficient and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic intent but lacks contextual details such as whether the removal is permanent, whether it affects existing orders using the template, or what the expected return value is. For a destructive operation, this additional context would be valuable but is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for both parameters (cannedServiceId and itemId), so the description does not add new meaning. It simply echoes the schema's own descriptions, resulting in no additional semantic value beyond what is already structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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) and the resource (a labor line item from a canned service template). It is specific enough to distinguish from sibling removal tools like remove_canned_service_fee or remove_canned_service_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the exact resource, but it does not explicitly contrast with other removal tools or provide conditions for when to choose this tool over alternatives. No additional guidance such as prerequisites 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.
remove_canned_service_partA
Remove a part line item from a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The part line item ID to remove | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states the action 'Remove' which implies mutation, but does not disclose whether the removal is permanent, if it cascades to other items, or any side effects. This is a minimal disclosure for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that states the action clearly without unnecessary words. It is appropriately sized and front-loaded with the verb, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with two well-documented parameters and no output schema, the description covers the core action. It doesn't mention return values or error conditions, but these are often implicit for removal operations. The tool's simplicity means this 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?
The schema descriptions for both parameters are explicit ('The part line item ID to remove' and 'The canned service ID'), covering 100% of parameters. The description adds no additional meaning beyond these, so it provides no extra value for parameter understanding. Baseline 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 uses a specific verb 'Remove' and clearly identifies the resource as 'a part line item from a canned service template'. This distinguishes it from sibling tools like remove_canned_service_fee or remove_canned_service_labor by explicitly naming the part line item, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. The implied usage is clear from the tool name and description, but there is no mention of alternatives or exclusions. An agent must infer that this tool is for removing parts specifically, as opposed to fees, labor, or tires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_canned_service_subcontractA
Remove a subcontract line item from a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The subcontract line item ID to remove | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only restates the operation without any details on side effects, idempotency, error handling, or whether the deletion is permanent. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly communicates the tool's purpose without unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with no output schema. The description sufficiently explains the action, though it could benefit from noting whether the operation is idempotent or what happens if the subcontract item does not exist. Overall, the context is adequately covered for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters, so coverage is 100%. The description adds no additional meaning about how the parameters relate or any constraints, keeping it at the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the specific resource (subcontract line item from a canned service template), distinguishing it from other removal tools like remove_canned_service_fee or remove_canned_service_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the action description rather than explicitly stated. It does not mention when to prefer this tool over alternatives, nor does it provide any exclusions or conditions. However, the purpose is specific enough that an agent could infer 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.
remove_canned_service_tireA
Remove a tire line item from a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The tire line item ID to remove | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states a removal action but does not disclose side effects, reversibility, idempotency, or error behavior. The minimal description leaves behavioral aspects transparent but insufficiently 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 a single, concise sentence with no unnecessary detail. It is well-structured and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple removal operation, but it lacks context about preconditions (e.g., whether the item must exist) or consequences (e.g., whether it permanently deletes or soft-deletes). Given the absence of an output schema, some assumptions remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (itemId and cannedServiceId), covering 100% of the fields. The description adds no extra semantic meaning beyond what the schema already provides, so the 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 action: removing a tire line item from a canned service template. It specifies the resource (canned service) and the item type (tire), distinguishing it from other removal tools like remove_canned_service_part or remove_canned_service_fee.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is clear about what it does but does not explicitly mention when to use it over alternatives (e.g., update_canned_service_tire). It implies usage for removing tire items from canned templates, but lacks explicit guidance on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_appointment_summaryA
Generate an appointment summary for a date range. Counts appointments by confirmation status (Confirmed/Declined/NoResponse). Uses the /appointment/search endpoint, which filters by date server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date in ISO 8601 format (e.g., "2026-04-30") | |
| startDate | Yes | Start date in ISO 8601 format (e.g., "2026-04-01") | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently states that it generates a summary, counts by status, and uses the /appointment/search endpoint with server-side date filtering. It implies a read-only operation with no side effects, which is adequate. It does not explicitly mention that no data is modified, but the language 'generate' and 'counts' strongly suggests that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant words. It front-loads the core purpose, then adds a relevant implementation detail. Every sentence contributes meaningful 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 summary tool, the description covers the essential context: what it does, the status categories, and that filtering is server-side. It does not specify the exact return format (e.g., JSON structure), but that is likely evident from the tool's name and typical usage. The absence of an output schema is not a critical gap given the clear summary nature of 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?
The schema descriptions already cover startDate, endDate, and locationId with clear meanings (ISO 8601, filter by location, default to env var). The description adds minimal extra semantic value beyond noting server-side filtering, which is already implied by the date parameters. Since schema coverage is 100%, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate an appointment summary'), the resource ('appointment summary'), and the specific output ('Counts appointments by confirmation status (Confirmed/Declined/NoResponse)'). This distinguishes it from sibling tools like list_appointments, which would return raw appointment objects, and report_revenue_summary, which focuses on revenue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 implicit usage guidance by indicating that it produces a summary count rather than individual appointments, so an agent would infer to use this when needing aggregated counts by status. It also notes that filtering happens server-side via /appointment/search, which is a useful behavioral hint. However, it does not explicitly name alternative tools or contrast when to use them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_open_estimatesA
List all open (unauthorized) estimates, showing their age in days. Useful for follow-up on stale estimates. Pages the full estimate list each call; check the returned truncated flag if the shop is very large.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses pagination behavior and the returned `truncated` flag, which is important for large result sets. It implies a read-only listing operation but does not explicitly state side effects 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 three sentences, front-loaded with the primary purpose, and contains no redundant or filler content. It efficiently adds usage context and pagination warnings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers the key return concept (estimates with age in days) and the pagination/truncation behavior. It could mention sort order or additional returned fields, but the core information needed for the stated use case 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 only parameter, `locationId`, is fully described in the schema including its default behavior. The tool description adds no additional parameter-specific meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists open (unauthorized) estimates and includes their age in days, making the resource and action unambiguous. It distinguishes estimates from other order- and report-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use case ('follow-up on stale estimates'), giving clear context for when to use the tool. It does not explicitly name alternative report tools or state when not to use it, but the intended scenario is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_revenue_summaryA
Generate a revenue summary for orders INVOICED within a date range (filtered on invoicedDate, not order creation date). Aggregates by status and splits paid vs. unpaid revenue. Pages the full order list each call for a consistent total — check the returned truncated flag if the shop is very large.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date in ISO 8601 format (e.g., "2026-04-30") | |
| startDate | Yes | Start date in ISO 8601 format (e.g., "2026-04-01") | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral transparency. It discloses that the tool pages through the full order list, returns a truncated flag for large shops, and aggregates by status while splitting paid/unpaid revenue. It does not explicitly state that it is read-only, but the 'generate a summary' phrasing implies no side effects. Overall, it provides adequate behavioral insight without exhaustive 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 concise and well-structured. It starts with the primary purpose, then provides relevant details about filtering, aggregation, and pagination in a clear, logical order. No unnecessary words or redundancy are present, making it efficient for an agent 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?
The description gives sufficient context for an agent to use the tool correctly, including the specific date filter, aggregation criteria, and pagination behavior with the truncated flag. It does not describe the exact output schema, but that is acceptable given the absence of an output schema. The description could be slightly more explicit about the response structure, but it is complete enough for typical 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?
The schema descriptions cover all three parameters (startDate, endDate, locationId) at 100% coverage. The tool description adds no additional parameter semantics beyond what is already in the schema. For example, it does not explain that locationId defaults to an environment variable, but that is already in the schema. Therefore, the description provides no extra value for parameter understanding, warranting 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 tool's function: generating a revenue summary for orders invoiced within a date range. It specifies the key filter (invoicedDate) and distinguishes it from order creation date, making the purpose unambiguous. It also differentiates from sibling report tools by focusing on revenue aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 implicit usage guidance by emphasizing the invoicedDate filter, which tells an agent when to use this tool instead of other order-related reports. It also mentions pagination and the truncated flag, which helps in handling large result sets. However, it does not explicitly compare to alternative report tools or state conditions for selection, so a minor gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customersA
Search customers in Shopmonkey by query string. Supports full-body search with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| query | No | Search query to filter customers by name or other fields | |
| locationId | No | Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that it supports pagination, which is useful, but it does not mention that this is a read-only operation, what the return format looks like, or any limitations (e.g., rate limits). For a search tool, the read-only nature is implied but not explicit. The description adds some value but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, and the key feature (full-body search with pagination) is stated 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?
For a search tool with no output schema, the description is fairly complete: it names the resource, method, and pagination support. It does not explicitly state that it returns a list of matching customers, but that is a reasonable inference from 'search customers'. Given the low complexity and full schema coverage, the definition is adequate, though it could mention the return type for absolute 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 description coverage is 100%, so all four parameters (skip, limit, query, locationId) are documented. The description mentions 'query string' and 'pagination', which aligns with the query and skip/limit parameters, but it does not add meaning beyond the schema. Baseline 3 is appropriate since the schema already explains the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (customers) with a method (query string). It mentions 'full-body search' which implies a general search across fields, but does not explicitly differentiate from siblings like search_customers_by_email or search_customers_by_phone. The purpose is clear but sibling distinction is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions full-body search and pagination, giving some context for when to use it. However, it does not explicitly state when to prefer this over the more specific search_customers_by_email or search_customers_by_phone tools. An agent would have to infer that this is the general-purpose search. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customers_by_emailA
Search for a customer in Shopmonkey by email address.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Customer email address to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the full burden. It does not disclose whether the operation is read-only, what data it returns, or any side effects. The word 'Search' suggests a read operation but does not explicitly state it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and resource. There is no unnecessary information 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 search tool with one parameter, the description is sufficient. It does not mention return format or matching behavior, but these are not critical for understanding the tool's purpose. The absence of an output schema does not create significant 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 already describes the 'email' parameter as 'Customer email address to search for', which is clear and covers 100% of the parameter. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'customer', and specifies the search criterion 'by email address'. This distinguishes it from sibling tools like search_customers and search_customers_by_phone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an email address is available, but it does not explicitly differentiate from alternatives like search_customers_by_phone or state when not to use it. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customers_by_phoneA
Search for a customer in Shopmonkey by phone number.
| Name | Required | Description | Default |
|---|---|---|---|
| phoneNumber | Yes | Customer phone number to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure burden. It only states that it searches by phone number, without revealing whether it returns multiple customers, uses exact or partial matching, or any pagination. It adds little beyond what the tool name already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero redundant words. It front-loads the action and method, making it immediately scannable 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 single-parameter search tool, the description is minimally adequate, but it lacks details about return behavior (e.g., multiple matches, ordering) and matching semantics (exact vs. fuzzy). Since there is no output schema, such context 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 description coverage is 100%, so the parameter phoneNumber is already fully documented. The description's mention of 'by phone number' merely restates the schema. There is no added nuance about format, validation, or matching rules, which aligns with the baseline 3 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 a specific action ('Search') on a specific resource ('customer') with a distinct method ('by phone number'). It inherently differentiates from siblings like search_customers_by_email and search_customers, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: if you have a phone number, you use this tool. However, there is no explicit guidance on when to use it versus search_customers_by_email or search_customers, nor any exclusions. It meets the 'implied usage' criterion but lacks explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_partsA
Search the parts catalog in Shopmonkey. Use for finding parts by name, number, or description.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of records to skip for pagination (default: 0) | |
| limit | No | Maximum number of results to return (default: 25) | |
| query | Yes | Search query for parts (name, part number, or description) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. 'Search' implies read-only behavior without side effects, though explicit mention of non-modifying nature is absent.
Agents need to know what a tool does to the 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 conveying purpose and usage with no redundant wording. Front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple search tool. Missing explicit details on pagination or return format, but not critical given the low complexity and absence of 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 covers all 3 parameters with clear descriptions. The description adds no additional semantic value beyond the schema, 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?
Clear verb 'search' with resource 'parts catalog' and specific search criteria (name, number, description). Distinct from sibling tools like list_inventory_parts and get_inventory_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 ('Use for finding parts by name, number, or description'), but does not contrast with listing or getting a single part. Provides adequate context for common search scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_appointmentC
Update or reschedule an existing appointment.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The appointment ID to update | |
| notes | No | Additional notes | |
| title | No | Appointment title or summary | |
| endDate | No | New end date/time (ISO 8601 format) | |
| orderId | No | Work order ID to link to | |
| startDate | No | New start date/time (ISO 8601 format) | |
| vehicleId | No | Vehicle ID for the appointment | |
| customerId | No | Customer ID for the appointment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States mutation intent ('update') but lacks behavioral details: partial vs full replacement semantics, validation rules for parameter combinations (e.g., vehicleId/customerId consistency), idempotency, error handling for invalid IDs, or return value structure.
Agents need to know what a tool does to the 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 efficient and front-loaded, wasting no words. However, for an 8-parameter mutation tool with zero annotations and no output schema, the description is inappropriately brief—undersized for the complexity rather than 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?
For a mutation tool with 8 parameters and no annotations/output schema, the description is insufficient. Lacks: explanation of partial update behavior, linking logic between orderId/vehicleId/customerId, return value documentation, and side effect disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple 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% description coverage, establishing baseline 3. Description adds minimal semantic context: 'reschedule' loosely implies date fields without explicitly mapping to startDate/endDate parameters. Does not explain parameter interactions or why only 'id' is required while other fields are optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs ('update', 'reschedule') and resource ('appointment'). Distinguishes from create_appointment by specifying 'existing' and from get/list tools by specifying mutation. However, does not clarify the relationship between 'update' and 'reschedule' (synonyms or distinct behaviors?) nor distinguish from sibling update tools (update_customer, update_vehicle).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisite by stating 'existing appointment' but provides no explicit guidance on when to use this vs create_appointment, nor how to obtain the required ID (via get_appointment or list_appointments). No alternatives or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_serviceB
Update an existing canned service template by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The canned service ID to update | |
| name | No | Updated name | |
| express | No | Whether this is an express service | |
| lumpSum | No | Whether to display as a lump-sum price | |
| pricing | No | Pricing model: FixedPrice or LineItem | |
| bookable | No | Whether customers can book this service online | |
| description | No | Updated description | |
| recommended | No | Whether to show as recommended | |
| fixedPriceCents | No | Updated fixed price in integer cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and description does not disclose side effects, partial-update behavior, missing-id handling, or return value; only states 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?
Single clear sentence with no filler; action and object 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 9-param mutating tool with no output schema or annotations, description lacks update semantics, error behavior, and return details, so not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 9 parameters with basic meanings; description text adds no detail beyond 'by ID', so at baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Verb 'Update' plus resource 'canned service template' and 'by ID' clearly states action and object; distinguishes from create/delete/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs create/delete/list alternatives, no prerequisites or conditions for updating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_service_feeC
Update a fee line item on a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated fee name | |
| notes | No | Additional notes | |
| itemId | Yes | The fee line item ID to update | |
| quantity | No | Updated quantity | |
| description | No | Updated description | |
| unitCostCents | No | Updated unit cost in integer cents | |
| unitPriceCents | No | Updated unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral transparency. It only states the action without disclosing side effects, permissions, or failure modes. For example, it does not explain what happens if the fee item does not exist or whether the update is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It efficiently communicates the core function without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and no output schema, the description is too sparse to provide adequate context. It does not explain the relationship between required parameters (cannedServiceId, itemId), any prerequisites (e.g., resource must exist), or the expected outcome of the update. This leaves an agent with insufficient information to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 100%, the parameter descriptions are minimal and largely rephrase the parameter names (e.g., 'Updated quantity', 'Updated fee name'). A few descriptions add context (e.g., 'The fee line item ID to update'), but most lack detail about purpose or expected values. This meets the baseline but 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: 'Update a fee line item on a canned service template.' It identifies the specific resource (fee line item) and the context (canned service template), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives like add_canned_service_fee or remove_canned_service_fee. It does not mention conditions, prerequisites, or scenarios where this update is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_service_laborA
Update a labor line item on a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated labor name | |
| note | No | Additional notes | |
| hours | No | Updated labor hours | |
| itemId | Yes | The labor line item ID to update | |
| taxable | No | Whether this labor line is taxable | |
| rateCents | No | Updated billed rate per hour, in integer cents | |
| costRateCents | No | Updated internal cost rate per hour, in integer cents | |
| cannedServiceId | Yes | The canned service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided and the description does not disclose whether unspecified fields are preserved, whether this is a partial or full replacement update, or what the tool returns/does when the item does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple mutation with well-documented parameters, but the description omits expected behavior for unspecified optional fields and return value, which would be useful given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have individual schema descriptions, so the description adds little beyond the schema; it does not clarify relationships like how cannedServiceId and itemId interact beyond the field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Update' and the specific resource 'a labor line item on a canned service template', which distinguishes it from sibling tools like add_canned_service_labor, remove_canned_service_labor, and update_canned_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 implies this is for modifying an existing labor line item, but it does not explicitly state when to use it versus the add or remove labor-line siblings, or mention any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_service_partB
Update a part line item on a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated part name | |
| note | No | Additional notes | |
| notes | No | Additional notes | |
| itemId | Yes | The part line item ID to update | |
| taxable | No | Whether this part line is taxable | |
| quantity | No | Updated quantity | |
| partNumber | No | Vendor part number | |
| cannedServiceId | Yes | The canned service ID | |
| retailCostCents | No | Updated customer price, per unit, in integer cents | |
| wholesaleCostCents | No | Updated vendor cost, per unit, in integer cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral transparency. It only says 'Update', which indicates mutation, but it gives no details about side effects, permissions, idempotency, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the operation and resource. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not explain partial-update semantics, expected return value, or how this tool relates to add/remove operations. While all parameters are described in the schema, the lack of output schema and behavioral context leaves the tool incomplete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description such as 'Updated customer price, per unit, in integer cents'. The tool description itself adds no extra parameter meaning, so 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 action 'Update' and the target resource 'a part line item on a canned service template'. It also distinguishes this tool from sibling tools like add_canned_service_part and remove_canned_service_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Update' implies this tool is for modifying an existing part line item rather than adding or removing one, but the description does not explicitly mention when to choose this tool over its add/remove siblings. Usage guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_service_subcontractC
Update a subcontract line item on a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated subcontract name | |
| notes | No | Additional notes | |
| itemId | Yes | The subcontract line item ID to update | |
| quantity | No | Updated quantity | |
| description | No | Updated description | |
| unitCostCents | No | Updated unit cost in integer cents | |
| unitPriceCents | No | Updated unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose side effects, permissions, idempotency, required identifiers, or consequences of the update. It only states the basic intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly communicates the tool's purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nine parameters and no output schema or annotations, the one-sentence description leaves out important context such as which fields are optional, what the update does to existing values, and what the response 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?
The schema already provides descriptions for all parameters, so the tool description adds no additional meaning. The schema descriptions are minimal but present; the description itself contributes nothing 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 ('Update') and the resource ('a subcontract line item on a canned service template'). It is distinct from add/remove variants by operation type, though it does not explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus add/remove subcontract line items or other canned-service update tools. The verb 'Update' implies modifying an existing item, but that is not stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_canned_service_tireC
Update a tire line item on a canned service template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated tire name | |
| notes | No | Additional notes | |
| itemId | Yes | The tire line item ID to update | |
| quantity | No | Updated quantity | |
| description | No | Updated description | |
| unitCostCents | No | Updated unit cost in integer cents | |
| unitPriceCents | No | Updated unit price in integer cents | |
| cannedServiceId | Yes | The canned service ID | |
| taxableValueType | No | Taxable value type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of explaining behavioral effects. It only states 'update' without detailing whether the operation is a partial update or full replacement, any side effects (e.g., recalculation of totals), idempotency, or error conditions. This leaves significant ambiguity about the tool's runtime 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, concise sentence with the verb and object front-loaded. No unnecessary words or repetition, making it highly efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and omits essential context such as what the tool returns (no output schema), whether it requires existing items to be present, or how it integrates with the parent canned service template. Given the absence of annotations and output schema, the description is not sufficient for an agent to confidently invoke the tool without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have schema descriptions with 100% coverage, so the baseline is 3. The description itself adds no extra semantic nuance beyond what the schema already provides; for instance, 'Updated quantity' is self-explanatory, but there is no additional context about units, validation constraints, or interplay between parameters (e.g., whether unitCostCents and unitPriceCents must be non-negative).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the specific resource ('a tire line item on a canned service template'), making the tool's purpose immediately understandable. It is distinguishable from sibling tools like add_canned_service_tire and remove_canned_service_tire by the verb 'update', though it could be more explicit about what aspects of the tire item are modifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 adding or removing a tire line item, nor does it mention any prerequisites or context. There are no annotations to supplement this lack of direction, leaving the agent to infer usage purely from the 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.
update_customerC
Update an existing customer's information.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The customer ID to update | |
| zip | No | ZIP code | |
| city | No | City | |
| state | No | State | |
| address | No | Street address | |
| lastName | No | Customer last name | |
| firstName | No | Customer first name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any side effects, permissions, or consequences of the update operation. The term 'update' implies modification, but the description does not explicitly state the impact or any associated risks.
Agents need to know what a tool does to the 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 extraneous words or redundant information. It is well-structured and directly 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?
Given the simplicity of the operation, the description is minimal but lacks any context about when to use it, how it relates to other customer tools, or any behavioral details. Without annotations, the description alone is insufficient for a user to fully 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 schema provides descriptions for all 7 parameters (100% coverage), so the baseline is 3. The tool description itself adds no additional semantic meaning beyond the field descriptions already present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (update) and the resource (customer), clearly distinguishing it from create_customer and get_customer. It is unambiguous and concise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like create_customer or search_customers. There is no mention of prerequisites, typical scenarios, or conditions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_orderC
Update fields on an existing work order.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The work order ID to update | |
| name | No | New order title | |
| status | No | New order status | |
| vehicleId | No | New vehicle ID | |
| customerId | No | New customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Update fields', which implies mutation, but does not disclose whether updates are partial or full replacement, whether the operation is idempotent, what permissions are required, or what the response contains (no output schema). This is a critical gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and target. It contains no filler or redundant phrasing, making it appropriately concise for a tool whose schema already covers parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is critically thin. It does not mention whether the operation returns the updated order, how partial updates are handled, or any error or validation behavior. The schema covers parameter names but not the operational context an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter and its purpose. The description adds no additional meaning beyond the schema, so it meets the baseline of 3 but does not enhance understanding of 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 states a specific action ('Update') on a specific resource ('existing work order'), which clearly distinguishes it from create_order and get_order. It does not explicitly name alternatives, but the purpose is unambiguous and directly maps to the tool name and 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?
No guidance is provided on when to use this tool versus create_order, get_order, or update_appointment. The implied use case is modifying an existing order, but there are no explicit conditions, prerequisites, or exclusions, leaving the agent to infer usage from the schema and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vehicleC
Update an existing vehicle's information.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The vehicle ID to update | |
| vin | No | Vehicle Identification Number | |
| make | No | Vehicle make | |
| year | No | Vehicle model year | |
| color | No | Vehicle color | |
| model | No | Vehicle model | |
| mileage | No | Current mileage | |
| customerId | No | Customer ID to associate with the vehicle | |
| licensePlate | No | License plate number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Update' but fails to specify critical mutation semantics: whether this is a partial update (PATCH) or full replacement (PUT), what happens to omitted fields, error behavior when the ID is invalid, or whether the operation is idempotent. This lack of transparency is risky for a mutating 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?
At five words, the description is severely under-specified for a 9-parameter mutation tool lacking an output schema. While it avoids redundancy with the structured fields, it sacrifices necessary context regarding behavioral traits and usage constraints. The brevity here represents under-documentation rather than efficient conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description inadequately prepares the agent for invocation. It omits: error handling details (404 vs 400 scenarios), side effects (cascading updates to related records), return value structure, and partial vs full update semantics. The 100% schema coverage handles inputs, but behavioral completeness is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the structured schema adequately documents all 9 parameters. The description adds minimal semantic value beyond the schema itself, merely implying the 'id' parameter through 'existing vehicle' without elaborating on business rules (e.g., whether changing customerId triggers ownership transfer logic). Baseline 3 is appropriate given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and resource ('vehicle'), clearly indicating this is a mutation operation on existing records (distinguishing it from create_vehicle). However, 'information' is vague regarding scope, and it fails to differentiate from sibling update tools like update_customer or update_order, leaving the agent to infer the resource context solely from the 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 is provided on when to prefer this over alternatives (e.g., whether to use this versus create_vehicle for new entries), nor are prerequisites mentioned (such as requiring the vehicle to exist). The phrase 'existing vehicle' implies usage constraints but does not explicitly state them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookB
Update an existing webhook by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook ID to update | |
| url | No | Updated endpoint URL | |
| name | No | Updated name | |
| secret | No | Updated shared secret | |
| enabled | No | Enable or disable the webhook | |
| version | No | Updated payload version | |
| triggers | No | Updated list of trigger event types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the full behavioral disclosure. It only states that it updates an existing webhook, giving no information about partial vs. full replacement, idempotency, required authentication, error behavior for non-existent IDs, or side effects. This is insufficient for an API mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the core purpose. There is no wasted wording, and the essential information is front-loaded. It is appropriately minimal for a tool whose details are documented in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update operation with 7 parameters and no output schema, the description is too terse. It fails to clarify whether the update is a partial patch or full replacement, which parameters are optional, or what the response contains. The presence of sibling CRUD tools makes this gap more impactful, as agents need to know when and how to update correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have descriptions in the input schema (100% coverage), so the description adds no additional meaning. The baseline is 3 since the schema does the heavy lifting, and no extra context like default values or update semantics is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('webhook'), and the distinguishing qualifier ('existing... by ID'). It effectively differentiates from sibling tools like create_webhook (new) and delete_webhook (removal) without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings. The description implies the webhook must already exist, but does not explicitly mention alternatives or conditions (e.g., 'use create_webhook for new webhooks'). An agent has to infer usage context from the word 'existing' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
59 tool updates
v1.1.1- Added
add_canned_service_fee - Added
add_canned_service_labor - Added
add_canned_service_part - Added
add_canned_service_subcontract - Added
add_canned_service_tire - Added
add_service_to_order - Added
assign_label - Added
assign_technician - Added
create_canned_service - Changed
create_customer2 fields changed- removed
Input schema / properties / emailRemoved value: -{ - "description": "Customer email address", - "type": "string" -} - removed
Input schema / properties / phoneRemoved value: -{ - "description": "Customer phone number", - "type": "string" -}
- Changed
create_order3 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "Order title shown on the work order (e.g. \"Front brake job\")", + "type": "string" +} - changed
Input schema / properties / status / descriptionPrevious value: -"Initial order status (e.g., estimate, work_order)"New value: +"Initial order status" - added
Input schema / properties / status / enumAdded value: +[ + "Estimate", + "RepairOrder", + "Invoice" +]
- Changed
create_payment3 fields changed- removed
Input schema / properties / amountRemoved value: -{ - "description": "Payment amount in dollars", - "type": "number" -} - added
Input schema / properties / amountCentsAdded value: +{ + "description": "Payment amount in integer cents. Example: $150.50 = 15050. NEVER send a decimal value.", + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "orderId", - "amount" -]New value: +[ + "orderId", + "amountCents" +]
- Added
create_webhook - Added
delete_canned_service - Removed
delete_order - Added
delete_webhook - Added
get_label - Added
get_webhook - Changed
list_appointments2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Changed
list_canned_services2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Added
list_customer_deferred_services - Removed
list_customers - Changed
list_inventory_parts2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Changed
list_inventory_tires2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Added
list_labels - Changed
list_labor6 fields changed- removed
Input schema / properties / limitRemoved value: -{ - "description": "Maximum number of results to return (default: 25)", - "type": "number" -} - removed
Input schema / properties / locationIdRemoved value: -{ - "description": "Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set.", - "type": "string" -} - changed
Input schema / properties / orderId / descriptionPrevious value: -"Filter labor entries by work order ID"New value: +"The work order ID the service belongs to" - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / serviceIdAdded value: +{ + "description": "The service ID to list labor line items for", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "orderId", + "serviceId" +]
- Changed
list_locations2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Changed
list_orders4 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +} - changed
Input schema / properties / status / descriptionPrevious value: -"Filter by order status (e.g., estimate, work_order, invoice)"New value: +"Filter by order status" - added
Input schema / properties / status / enumAdded value: +[ + "Estimate", + "RepairOrder", + "Invoice" +]
- Changed
list_payments2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Changed
list_services5 fields changed- removed
Input schema / properties / locationIdRemoved value: -{ - "description": "Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set.", - "type": "string" -} - changed
Input schema / properties / orderId / descriptionPrevious value: -"Filter services by work order ID"New value: +"The work order ID to list services for" - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +} - added
Input schema / requiredAdded value: +[ + "orderId" +]
- Changed
list_timeclock2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Changed
list_users2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Added
list_vehicle_owners - Removed
list_vehicles - Added
list_vehicles_for_customer - Added
list_webhooks - Added
lookup_vehicle_by_plate - Added
lookup_vehicle_by_vin - Added
remove_canned_service_fee - Added
remove_canned_service_labor - Added
remove_canned_service_part - Added
remove_canned_service_subcontract - Added
remove_canned_service_tire - Added
report_appointment_summary - Added
report_open_estimates - Added
report_revenue_summary - Added
search_customers - Added
search_customers_by_email - Added
search_customers_by_phone - Changed
search_parts2 fields changed- removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number for pagination (default: 1)", - "type": "number" -} - added
Input schema / properties / skipAdded value: +{ + "description": "Number of records to skip for pagination (default: 0)", + "type": "number" +}
- Added
update_canned_service - Added
update_canned_service_fee - Added
update_canned_service_labor - Added
update_canned_service_part - Added
update_canned_service_subcontract - Added
update_canned_service_tire - Changed
update_customer2 fields changed- removed
Input schema / properties / emailRemoved value: -{ - "description": "Customer email address", - "type": "string" -} - removed
Input schema / properties / phoneRemoved value: -{ - "description": "Customer phone number", - "type": "string" -}
- Changed
update_order2 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "New order title", + "type": "string" +} - added
Input schema / properties / status / enumAdded value: +[ + "Estimate", + "RepairOrder", + "Invoice" +]
- Added
update_webhook
33 tool updates
v1.0.0- First observed
create_appointment - First observed
create_customer - First observed
create_order - First observed
create_payment - First observed
create_vehicle - First observed
delete_order - First observed
get_appointment - First observed
get_canned_service - First observed
get_customer - First observed
get_inventory_part - First observed
get_order - First observed
get_payment - First observed
get_user - First observed
get_vehicle - First observed
list_appointments - First observed
list_canned_services - First observed
list_customers - First observed
list_inventory_parts - First observed
list_inventory_tires - First observed
list_labor - First observed
list_locations - First observed
list_orders - First observed
list_payments - First observed
list_services - First observed
list_timeclock - First observed
list_users - First observed
list_vehicles - First observed
list_workflow_statuses - First observed
search_parts - First observed
update_appointment - First observed
update_customer - First observed
update_order - First observed
update_vehicle
TDQS
Scored across 69 tools
Most tools have distinct verb-noun names and clear descriptions, but some pairs like list_inventory_parts vs. search_parts and list_appointments vs. report_appointment_summary could cause minor confusion. Overall, an agent can usually tell them apart.
Names consistently follow snake_case verb_noun structures, but there is slight inconsistency among read operations: get, list, search, lookup, and report are all used for similar retrieval purposes. Still, the naming is mostly predictable and readable.
With 69 tools, this is far beyond the typical well-scoped range and falls into the extreme category. The large number of nested canned-service line-item operations contributes to the bulk, making the surface area heavy and difficult to navigate.
The toolset covers the core Shopmonkey entities—customers, vehicles, orders, appointments, payments, inventory, webhooks, reports, labels, and canned services—quite thoroughly. A few main-entity delete operations are absent, but this may reflect domain constraints rather than a gap.
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
Verified, pay-per-use API tools for AI agents through one authenticated connection.
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with 36 specialized tools for complete vehicle dealership management through the StockSpark/Carspark API, including inventory management, vehicle listings, image handling, pricing optimization, and multi-portal publishing.-
- AlicenseCqualityDmaintenanceEnables AI assistants to manage Thinkific sites through the REST Admin API, providing tools for handling courses, students, enrollments, and orders. It features 24 specialized tools and resources with support for dual authentication and automatic rate-limit management.100MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to perform full CRUD operations on Snipe-IT inventory systems, managing assets, users, licenses, and more via 39 tools.4027MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to natively interact with Dolibarr ERP/CRM through its REST API, providing over 30 tools for managing customers, contacts, products, quotes, orders, invoices, stock, projects, contracts, interventions, and PDF generation, while supporting complex workflow orchestration and read-only security modes.MIT