ForthClear Liquidation Marketplace
Server Details
Search surplus and overstock inventory, request bulk quotes, and check out.
- Status
- Healthy
- Uptime
- 99.7% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
TDQS
Scored across 17 tools
Most tools target a clear role+resource+action (bulk_mark_shipped vs open_dispute vs respond_to_quote), and descriptions explicitly disambiguate the tricky pairs (quick_buy vs request_quote, search_inventory vs search_inventory_semantic). Minor confusion remains between the buyer-facing get_quote_status and seller-facing get_quote_requests, and the bulk_/singular variants require reading descriptions to separate.
All names are snake_case with a predictable verb_noun shape (bulk_mark_shipped, get_order_status, request_quote, open_dispute). Deviations are mild: 'quick_buy' uses an adjective modifier and 'seller_inbox_summarise' inverts to noun_verb, but neither breaks readability.
17 tools is slightly heavy but justified for a two-sided marketplace covering seller (listing, bulk shipping, quotes, inbox) and buyer (search, purchase, quote tracking, disputes) flows. Each tool maps to a distinct workflow step rather than redundant surface.
Buyer and seller lifecycles are largely covered: search, quote/purchase, order status, dispute, listing creation, bulk price/MOQ updates, bulk shipping, subscriptions. Gaps exist around single-listing update/delete and seller-side order cancellation/listing management, but core workflows are not dead-ended.
Available Tools
17 toolsbulk_export_ordersExport orders as CSVARead-onlyInspect
Export the calling seller's orders as CSV (Order ID, Product, Buyer, Quantity, Total, Status, Date). Thin adapter over POST /api/seller/orders/bulk-export — orders not owned by the caller are silently skipped. Returns the CSV body as a string plus the suggested filename.
| Name | Required | Description | Default |
|---|---|---|---|
| order_ids | Yes | Order ids belonging to the calling seller (max 200/request). Orders owned by anyone else are skipped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/title annotations, the description discloses two important behaviors: orders not owned by the caller are silently skipped, and the return value is the CSV body plus a suggested filename. This tells the agent exactly what to expect despite the lack of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry all essential information: output format, column list, endpoint nature, scoping behavior, and return shape. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, full schema coverage, and read-only annotations, the description provides everything needed to invoke the tool correctly. The explicit return format compensates for the missing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including ownership and max 200 per request, so the schema already documents the only parameter. The description repeats the ownership constraint but adds no new parameter-level detail; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Export the calling seller's orders as CSV', and clarifies the exact columns. This distinguishes it from sibling tools, none of which perform bulk order export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: it is for exporting order data as CSV and is scoped to the seller's own orders. It does not explicitly name alternatives or exclusion conditions, but the sibling list contains no comparable export tool, so the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_mark_shippedBulk mark orders shippedAIdempotentInspect
Mark up to 200 of the calling seller's orders as shipped, optionally writing a shared tracking number / URL / carrier to every order. Thin adapter over POST /api/seller/orders/bulk-mark-shipped — same per-order ownership filter, idempotent re-runs, auto-detected carrier when only a tracking number is supplied. Returns per-order success/failure buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| order_ids | Yes | Order ids belonging to the calling seller (max 200/request). Orders owned by anyone else are skipped. | |
| carrier_name | No | Carrier for the shipment. Omit to infer it from tracking_number. | |
| tracking_url | No | Tracking URL written to every listed order. | |
| tracking_number | No | Tracking number written to every listed order. Supplying this without carrier_name auto-detects the carrier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behaviors: idempotent re-runs, per-order ownership filtering, auto-detection of carrier when only a tracking number is supplied, shared tracking values written to every order, and per-order success/failure buckets in the response. This adds substantial context beyond the idempotentHint and destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load the primary action, then add endpoint mapping, behavioral guarantees, and return format. Every sentence earns its place and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For this complexity level, the description is complete: it states the batch limit, ownership constraint, optional tracking behaviors, idempotency, and the response summary. Since there is no output schema, the explicit mention of 'per-order success/failure buckets' gives the agent enough expectation of the return shape 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?
The schema already covers all parameter descriptions at 100%, giving a baseline of 3. The description adds value by explaining the shared behavior of the optional tracking fields and the auto-detection relationship between carrier_name and tracking_number, which is not fully explicit in the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Mark up to 200 of the calling seller's orders as shipped', which clearly distinguishes this bulk order action from sibling tools like bulk_export_orders and bulk_update_listings. It also specifies key constraints such as ownership, batch size, and optional tracking fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: marking the caller's orders as shipped in bulk, with re-runs being idempotent and ownership enforced. It does not explicitly name alternatives or state when not to use the tool, but no sibling tool competes for the same action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_listingsBulk update listing prices or MOQADestructiveInspect
Bulk update prices or minimum order quantities across up to 200 of the calling seller's product listings. Thin adapter over POST /api/products/bulk-update-price and /bulk-update-moq — same seller-ownership filter and per-product validation. Choose mode='price_set' (value=USD), 'price_percent_increase' / 'price_percent_decrease' (value=percent), or 'moq_set' (value=integer units).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | What to change and how: price_set writes an absolute USD price, price_percent_increase / price_percent_decrease adjust the current price by a percentage, moq_set writes a minimum order quantity. | |
| value | Yes | USD price for price_set, percent (0-1000) for percent modes, integer units (1-999999) for moq_set. | |
| product_ids | Yes | ForthClear product ids to update (max 200/request). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuine value beyond annotations: the 200-per-request limit, the seller-ownership filter, per-product validation, and the fact that it is a thin adapter over two specific endpoints, which tells the agent the behavior mirrors those APIs. It does not disclose partial-failure semantics or what happens when some products fail validation, a gap for a destructive bulk 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?
Roughly 60 words across three sentences, with the core purpose front-loaded in sentence one, mechanics in sentence two, and mode selection guidance in sentence three. Every sentence earns its place; no filler or repetition of the title. Minor deduction only because the adapter/endpoint detail in sentence two is somewhat implementation-specific, though still useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk mutation with no output schema, the definition covers invocation well (what, scope, cap, modes, validation) but omits the response shape and partial-failure behavior — an agent cannot know whether a bulk call is all-or-nothing or per-item, nor what the return payload reports. These are material gaps given destructiveHint=true and the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — mode, value, and product_ids all carry descriptive text including the mode/value pairing and bounds. The description's third sentence reinforces the mode-to-value mapping ('price_set (value=USD)', 'moq_set (value=integer units)') but adds nothing the schema does not already state. Baseline 3 is appropriate since the schema carries the load and the description only confirms 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 first sentence names a specific verb ('Bulk update'), a concrete resource ('product listings'), and exact fields (prices or minimum order quantities), plus the 200-listing ceiling and owner scope ('calling seller's'). It is immediately distinguishable from every sibling: none of bulk_export_orders, bulk_mark_shipped, or create_listing cover price/MOQ mass 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?
Clear context is established: the operation applies only to the calling seller's own listings, caps at 200 per request, and reuses the same ownership filter and per-product validation as the underlying endpoints. The mode descriptions effectively tell the agent when each call form is appropriate. It stops short of explicitly naming alternatives or stating when not to use this tool, so no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_listingCreate a listingBInspect
Create a new product listing (seller tool)
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | Seller's own stock-keeping unit, shown to buyers and used for reconciliation. | |
| name | Yes | Listing title shown to buyers and matched by catalogue search. | |
| category | Yes | Catalogue category. One of: electronics, apparel, home_goods, beauty, sports, kitchenware, office_supplies, toys, food_beverage, tools, other. | |
| quantity | Yes | Units available in this lot. | |
| condition | Yes | Standard liquidation condition grade (Task #72) | |
| description | No | Listing body copy: condition detail, packaging, lot composition. Buyers filter on its presence and agents summarise it. | |
| price_per_unit | Yes | Price in cents | |
| original_retail_price | No | Original retail price in cents |
Output Schema
| Name | Required | Description |
|---|---|---|
| listing | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond what annotations already provide: no explanation of side effects, listing visibility, duplicate/SKU behavior, auth requirements, or validation outcomes. It does not contradict the annotations, but it does not meaningfully increase 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 one concise, front-loaded sentence with no filler or repeated examples. It is short but appropriately structured for a tool whose detailed requirements live 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?
The schema, output schema, and annotations make the tool callable, but the description omits usage context, behavioral expectations, and relationships to sibling tools. It is minimally viable but not genuinely complete for an agent facing a variety of seller tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description itself mentions no parameters, but the baseline of 3 applies because the structured schema carries the semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Create') and the resource ('new product listing'), and adds seller context. It distinguishes creation from sibling update tools, though it largely restates the title with only a little extra scope information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about when to use this tool versus bulk_update_listings or other seller tools, and no mention of prerequisites or alternatives. The word 'new' hints at create-vs-update, but that is minimal and not helpful enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusGet order statusARead-onlyInspect
Status, tracking and inspection deadline for an order owned by the authenticated buyer (X-MCP-API-Key of the order's buyer, or a buyer X-Agent-Token).
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | ForthClear order id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: access is scoped to the authenticated buyer via X-MCP-API-Key or a buyer X-Agent-Token, implying authorization/ownership checks that an agent must satisfy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the resource and the returned fields, with the auth caveat in a trailing parenthetical. It is efficient, though the dense credential phrasing slightly taxes readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter tool with no output schema, the definition covers purpose, returned fields, and the authorization model. It does not describe error cases (e.g., order not owned by the caller), which would be the only meaningful remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single order_id parameter, so the schema already carries the parameter documentation. The description only implies that order_id must belong to the authenticated buyer; it adds no format, range, or lookup detail, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (get order status) and even enumerates the returned facets (status, tracking, inspection deadline), which clarifies scope beyond the bare title. It does not explicitly differentiate from the nearest sibling get_quote_status, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_quote_status or the bulk order tools. The only conditional content is about authentication, not about choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricing_recommendationGet pricing recommendationARead-onlyInspect
Get AI-powered pricing recommendation for inventory (seller tool)
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Catalogue category. One of: electronics, apparel, home_goods, beauty, sports, kitchenware, office_supplies, toys, food_beverage, tools, other. | |
| quantity | No | Lot size being priced; recommendations scale with volume. | |
| condition | Yes | Standard liquidation condition grade (Task #72) | |
| original_retail | Yes | Original retail price in cents |
Output Schema
| Name | Required | Description |
|---|---|---|
| tips | Yes | |
| factors | Yes | |
| price_range | Yes | |
| recommended_price | Yes | |
| discount_from_retail | Yes | Percent below original retail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and non-destructive, so the description does not need to repeat that. It adds that the output is an AI-powered recommendation rather than a guaranteed market price, but it does not discuss response behavior, edge cases, or any additional 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?
One sentence with no filler; the core action and domain are front-loaded. Every phrase ('AI-powered,' 'pricing recommendation,' 'inventory,' 'seller tool') adds useful targeting 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, read-only recommendation tool with full parameter documentation and an output schema, the description is largely sufficient. The only meaningful gap is the absence of explicit usage conditions, but an agent can still identify the tool and invoke it correctly from the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds no extra meaning about category, condition, quantity, or original_retail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb 'Get' with the resource 'pricing recommendation,' scoped to inventory and seller use. This clearly distinguishes the tool from siblings such as search_inventory or get_product_details, which cover different operations and resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context ('for inventory' and 'seller tool') but no explicit when-to-use or when-not-to-use guidance, and it names no alternative tools. The appropriate usage is implied rather than stated: call this when a seller needs an AI-powered pricing recommendation for inventory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_detailsGet product detailsBRead-onlyInspect
Get detailed information about a specific product
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID (format: product_123) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| price | Yes | Unit price in minor units of currency. |
| seller | No | |
| category | Yes | |
| currency | No | |
| condition | No | |
| description | No | |
| next_action | No | |
| quote_required | Yes | |
| original_retail | No | |
| instant_checkout | No | |
| payment_readiness | No | |
| quantity_available | Yes | |
| quote_quantity_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds no behavioral context such as required permissions, rate limits, or the nature of the returned details. It does not contradict the annotations, but it provides no additional transparency beyond what structured fields already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero filler. It front-loads the action and resource, making it immediately clear what the tool does. There is no 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?
For a simple read-only tool with one well-documented parameter and an existing output schema, the description is adequate. It states the purpose clearly, the parameter is fully defined in the schema, and return values are presumably covered by the output schema. However, it could be slightly more explicit about the scope of 'detailed information' (e.g., which fields are included), though that is likely captured in the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage because product_id is described as 'Product ID (format: product_123)'. The tool description does not add any extra meaning or context about the parameter, so it remains at 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 a specific verb (Get) and resource (product details), and narrows scope to 'a specific product' which implies retrieval by ID. This distinguishes it from sibling tools like search_inventory (which lists products) or get_pricing_recommendation (focused on pricing). However, it does not explicitly name alternatives, so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings. It does not mention search_inventory for finding products or get_pricing_recommendation for pricing, nor does it state any exclusions or conditions. An agent is left to infer usage purely from the name and description, which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quote_requestsGet incoming quote requestsARead-onlyInspect
Get pending quote requests for seller's products (seller tool)
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which of the calling seller's quote requests to return: pending (awaiting a reply), responded, or all. | pending |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| quotes | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations by clarifying that results are scoped to the calling seller's products and that the default view is pending requests.
Agents need to know what a tool does to the world before calling 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. The key scoping information ('seller's products', 'seller tool') is included without repeating the schema's 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 one-parameter read-only tool with an output schema and annotations covering safety, the description is nearly complete. It falls slightly short of 5 because it does not acknowledge the responded/all statuses or clarify the relationship to the closely related quote-request tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the status parameter has a clear description, enum values, and a default. The description adds no parameter-level meaning beyond what the schema already provides, 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 identifies a specific verb and resource ('Get ... quote requests') and narrows scope to the seller's own products, which separates it from request_quote and respond_to_quote. It is slightly less than 5 because it says 'pending' as if that were the entire purpose, while the schema shows status can return responded or all requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context by marking this as a seller tool for incoming requests, so an agent can infer it is for viewing rather than creating or replying. However, it never explicitly states when to prefer this over respond_to_quote, request_quote, or seller_inbox_summarise, nor does it name those alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quote_statusGet quote statusARead-onlyInspect
Read back a quote you filed: status (pending, responded, accepted, rejected, completed), the seller's price and shipping once they reply, and what to do next. Pass the status_token request_quote returned; a buyer X-Agent-Token or account key can read its own quotes without one.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | Quote id from request_quote | |
| status_token | No | status_token from the request_quote response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior context: the field-level content of the response (status enum, price, shipping after seller reply) and the two authentication paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences with no filler; the read purpose and payload lead. 'And what to do next' is slightly vague but does not waste much space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so by listing status values and reply fields. Auth requirements are also covered, leaving little an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the schema already documents both params. The description still adds meaning by noting status_token originates from request_quote's response and that it can be omitted when using a buyer token — explaining when the optional param is actually needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read back a quote you filed') and enumerates exactly what comes back: status values, seller price/shipping, next steps. It is clearly distinguishable from siblings like request_quote, respond_to_quote, and get_quote_requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete auth guidance: pass the status_token returned by request_quote, or use a buyer X-Agent-Token/account key to read your own quotes without one. It does not explicitly contrast with sibling tools, but the retrieval context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_disputeOpen a disputeAInspect
Open a dispute on a delivered order awaiting the buyer's confirmation. Moves the order to 'issue_reported', records the issue and notifies admins. Requires the order's buyer (X-MCP-API-Key or buyer X-Agent-Token).
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Dispute reason | |
| order_id | Yes | ForthClear order id | |
| photo_urls | No | Optional evidence URLs | |
| description | Yes | Free-text description of the issue | |
| requested_action | No | Resolution the buyer is requesting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, idempotent=false, destructive=false), the description discloses concrete side effects: a state transition to 'issue_reported', recording of the issue, and admin notification. It could still say what happens on duplicate calls or failed orders, but it adds real behavioral context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the state effects, then the auth requirement — every sentence carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining the outcome (status change, admin notification) and the auth model, which is nearly everything an agent needs. Minor omissions remain, such as error/repeat-call behavior and return payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, including the two enums. The description adds no parameter-level detail (e.g. whether photo_urls is required for certain reasons), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource ('Open a dispute'), the triggering precondition ('on a delivered order awaiting the buyer's confirmation'), and the resulting state change ('Moves the order to issue_reported'), which is enough to distinguish it from every sibling tool listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly specifies the context in which the tool applies (a delivered order still awaiting buyer confirmation) plus the required authorization identity, so an agent knows when it can be called. It does not name alternatives or exclusions, but no sibling overlaps this function, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_buyQuick buyAInspect
One-step purchase for products with instant checkout enabled (seller opt-in) and orders under bulk threshold. For products without instant checkout or larger orders, use request_quote instead.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Number of units to purchase | |
| buyer_name | No | Buyer's full name | |
| product_id | Yes | Product ID (format: product_123) | |
| buyer_email | Yes | Buyer's email address | |
| buyer_company | No | Buyer's company name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the purchase is one-step and depends on seller opt-in, but it does not disclose side effects like immediate charge, order confirmation, or whether the purchase is irreversible. Annotations only indicate non-read-only and non-idempotent, so more behavioral context would help.
Agents need to know what a tool does to the 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 redundancy; the primary use case is front-loaded and the alternative is given in the second sentence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers eligibility and alternatives well, but with no output schema, it does not tell the agent what to expect after a purchase (order ID, confirmation, or error behavior). This is the main missing piece for a side-effecting transaction tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description itself adds no parameter-level meaning, which is acceptable at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('One-step purchase'), a clear resource (products with instant checkout enabled and under bulk threshold), and contrasts with request_quote. This distinguishes it from siblings without requiring schema access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the conditions for quick_buy (instant checkout enabled and under bulk threshold) and the fallback to request_quote for products without instant checkout or larger orders. This is direct when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_quoteRequest a bulk quoteAInspect
Request a bulk quote for a product (buyer tool). Works without credentials: buyer_email is required and is where the seller replies. Anonymous quotes are limited to 5 per hour per IP; a buyer X-Agent-Token binds the quote to the buyer's account instead.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Additional message to seller | |
| quantity | Yes | Number of units to quote | |
| buyer_name | No | Buyer's full name | |
| product_id | Yes | Product ID (format: product_123) | |
| buyer_email | Yes | Buyer's email address (required) | |
| target_price | No | Target price per unit in cents (optional) | |
| buyer_company | No | Buyer's company name |
Output Schema
| Name | Required | Description |
|---|---|---|
| quote | Yes | |
| message | Yes | |
| success | Yes | |
| status_token | No | Pass to get_quote_status to read this quote back. Keep it: an anonymous caller has no other way in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations supplied, the description still adds real value beyond them by disclosing a hard rate limit (5 anonymous quotes per hour per IP) and the credential model for binding a quote to an account. The mutation character is already covered by readOnlyHint=false and idempotentHint=false, so the remaining gap is only the practical consequence of duplicate submissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler. The core action is front-loaded, followed by the required credential field, then the rate limit and token alternative — each sentence carries distinct, load-bearing 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 7-parameter mutation with full schema descriptions and an output schema, the description covers the gaps structured data can't: auth modes, required reply email, and rate limiting. An agent has everything needed to invoke it correctly without a return-value spec.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining buyer_email's role (required, and the channel the seller replies to) and how X-Agent-Token changes its meaning. That added semantics is genuinely beyond the schema's terse field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource ("Request a bulk quote for a product") and scopes it with "(buyer tool)," which separates it from seller-side siblings like respond_to_quote and get_quote_requests. It does not name the alternative tools an agent might reach for, so the differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the two operating modes and when each applies: anonymous use (no credentials, buyer_email mandatory as the reply channel) versus an X-Agent-Token that binds the quote to a buyer account. What's missing is routing guidance against siblings such as get_quote_status or quick_buy, so it gives context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_to_quoteRespond to a quote requestBInspect
Respond to a buyer's quote request (seller tool)
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | accept the buyer's terms as asked, counter with a different price (requires counter_price), or decline the request. | |
| message | No | Optional note sent to the buyer alongside the decision. | |
| counter_price | No | Counter offer price in cents (for counter action) | |
| quote_request_id | Yes | Id of the quote request to answer, as returned by get_quote_requests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is mutating but not destructive, non-idempotent, and not read-only. The description adds almost nothing about consequences: accepting, countering, or declining presumably changes the quote request state and notifies the buyer, but this is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence expresses the core action and audience with zero filler. The parenthetical '(seller tool)' is efficient and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no mention of prerequisites, action-specific validation, or what happens after the response is submitted. Given this tool changes state across three distinct actions, the description alone leaves too much for the agent to infer from schema and sibling names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the action enum, counter_price requirement, and quote_request_id origin. The description adds only seller/buyer framing, not additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Respond to a buyer's quote request'. Adding '(seller tool)' distinguishes it from the buyer-side sibling request_quote, though it does not explicitly name that sibling. The purpose is clear enough for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The seller-tool label implies this is for sellers responding to quote requests, but there is no explicit when-to-use guidance, no mention of get_quote_requests as a prerequisite, and no contrast with request_quote. Usage context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_inventorySearch inventoryBRead-onlyInspect
Search available liquidation inventory with filters
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum listings to return (default 20, max 100). | |
| query | No | Search query | |
| category | No | Product category | |
| condition | No | Standard liquidation condition grade (Task #72) | |
| max_price | No | Maximum price in cents |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Catalogue matches before the limit is applied. |
| message | Yes | |
| products | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the notion of 'available' inventory but doesn't disclose return behavior, sorting, or that all parameters are optional filters. With annotation coverage, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core action, and contains no filler. 'with filters' is slightly generic but doesn't waste words; it could have been more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a fully described schema and an output schema, and annotations cover safety, so the gaps are mostly around usage guidance and sibling differentiation. An agent can reasonably infer how to call it, but not when to prefer it over related read tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; each parameter already has a description including default/max for limit and the enum for condition. The description's generic 'with filters' adds no parameter-specific meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('available liquidation inventory'), and mentions filters. It doesn't explicitly differentiate from sibling read tools like get_product_details, but the verb 'search' implies a list/scoped query rather than a single-item lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs alternatives, or when to use a sibling like get_product_details for individual item lookups. The description is a bare directive with no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_inventory_semanticSemantic inventory searchARead-onlyInspect
Semantic catalog search: ranks listings by similarity to a natural-language description (e.g. 'something like AirPods but cheaper'). Returns the search_inventory product shape plus a similarity score in [0, 1]. No credentials needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of ranked results to return | |
| query | Yes | Natural-language description of what the buyer wants | |
| category | No | Restrict candidates to a single category | |
| condition | No | Restrict candidates to one condition grade | |
| max_price | No | Maximum price per unit in cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false. The description adds real context beyond them: the return shape ('search_inventory product shape plus a similarity score in [0, 1]') and an auth note ('No credentials needed'). It does not cover ranking order or pagination behavior, but the added return/auth detail clears the lowered bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, return shape second, auth third. The example query earns its place by illustrating the natural-language input. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return shape and similarity score, and it flags the auth requirement. What remains thin is the relationship to the sibling search_inventory and ranking/pagination behavior, but for a read-only search tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters including the enum-constrained condition are documented in the schema itself. The description only illustrates the query parameter through an example and adds no syntax, filtering, or limit semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Semantic catalog search') and the ranking mechanism ('ranks listings by similarity to a natural-language description'), with a concrete example query. It implies but never names its obvious sibling search_inventory, so the agent must infer the split between semantic and keyword search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'natural-language description' and the example 'something like AirPods but cheaper' implicitly signal when semantic search is preferred over exact-match search, but there is no explicit when-to-use/when-not or named alternative among the many siblings (search_inventory in particular). Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_inbox_summariseSummarise seller inboxARead-onlyInspect
Read-only digest of the calling seller's inbox: pending quote requests, orders at risk of missing their ship-by deadline, and orders with reported issues. Useful for a daily standup or cron-driven agent that decides which bulk action to run next.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to surface in each bucket. | |
| window_hours | No | Look-ahead window for ship-by-date risk detection (default 24h). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds behavioral context by specifying the three buckets of information and reaffirms 'Read-only digest', which is consistent. It doesn't introduce new security or mutation concerns, and the added detail about content goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the digest contents and followed by a concrete use case. Every word earns its place—no redundancy, filler, or restating of the title. It is highly compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description adequately explains what the digest includes and when to use it. It does not detail the output format (e.g., counts vs. items), but given the tool's summarize nature and the presence of sibling tools for granular details, this is acceptable. The safety profile is covered by annotations, so the description is complete enough for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the two parameters (limit and window_hours) with descriptions, including defaults and bounds. The tool description does not add extra parameter semantics beyond restating the input's purpose. Since schema coverage is high, the baseline of 3 applies; no additional value 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 uses a specific verb ('summarise') and resource ('seller's inbox') and enumerates concrete content categories: pending quote requests, at-risk orders, and reported issues. This clearly distinguishes it from sibling tools like get_quote_requests or bulk_mark_shipped, which focus on single actions or data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the intended context: 'Useful for a daily standup or cron-driven agent that decides which bulk action to run next.' This clarifies when to use it, aligning with the decision-making workflow. It does not explicitly mention when not to use it or name alternatives, but the use case is clear and enough 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.
subscribe_to_querySubscribe to a saved searchAInspect
Save a search for the calling agent principal. New matching listings are sent to each channel: webhook (HMAC-signed POST), email, or a pollable resource at /api/mcp/resources/subscriptions/{id}. Requires credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Marketplace filter object (category, minPrice, maxPrice, minQuantity, search, sellerCountry, condition, moqRange, bulkDealsOnly). | |
| channels | Yes | Where to send new matches: 1-5 of webhook (public https URL), email, or mcp_resource (poll). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false. The description goes beyond them by disclosing the webhook delivery is an HMAC-signed POST, that polling is available via a concrete resource path, and that credentials are required. It omits quota/duplicate-subscription behavior, which a mutating, non-idempotent tool would benefit from.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences; the core action is front-loaded and the delivery mechanics follow. The trailing 'Requires credentials.' is short and earns its place as an operational caveat, though the sentence structure could be marginally tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, nested query/channels objects, and a non-idempotent mutating operation, the description covers what is needed to call it correctly: what gets saved, where matches go, and that auth is needed. Missing details on duplicate-subscription handling and limits are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the query filter object and the channels array are already well documented in the schema, including the 1-5 constraint and channel types. The description restates the channel options and adds no format or syntax detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Save a search') scoped to the calling agent principal, and clarifies that new matches are pushed to channels. It does not explicitly name a sibling like search_inventory to distinguish persistence from one-shot search, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied: this is the tool for persisting a search and receiving ongoing notifications. However, there is no explicit when-to-use vs when-not guidance (e.g., use search_inventory for immediate results instead of subscribing) and no prerequisites beyond 'requires credentials'.
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.
6 tool updates
- Added
get_order_status - Added
get_quote_status - Added
open_dispute - Changed
request_quote1 field changed- added
Output schema / properties / status_tokenAdded value: +{ + "description": "Pass to get_quote_status to read this quote back. Keep it: an anonymous caller has no other way in.", + "type": "string" +}
- Added
search_inventory_semantic - Added
subscribe_to_query
1 tool update
- Changed
get_product_details6 fields changed- added
Output schema / properties / currencyAdded value: +{ + "type": "string" +} - added
Output schema / properties / instant_checkoutAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / next_actionAdded value: +{ + "type": "string" +} - added
Output schema / properties / payment_readinessAdded value: +{ + "type": "string" +} - changed
Output schema / properties / price / descriptionPrevious value: -"Unit price in cents."New value: +"Unit price in minor units of currency." - added
Output schema / properties / quote_quantity_thresholdAdded value: +{ + "type": "integer" +}
2 tool updates
- Changed
create_listing1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "listing": { + "properties": { + "category": { + "type": "string" + }, + "condition": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "original_retail": { + "type": [ + "integer", + "null" + ] + }, + "price": { + "description": "Unit price in cents.", + "type": "integer" + }, + "quantity": { + "type": "integer" + }, + "sku": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": "string" + }, + "view_url": { + "description": "Buyer-facing listing page.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "category", + "quantity", + "price", + "status", + "view_url" + ], + "type": "object" + }, + "message": { + "type": "string" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "success", + "message", + "listing" + ], + "type": "object" +}
- Changed
request_quote1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "message": { + "type": "string" + }, + "quote": { + "properties": { + "expected_response": { + "description": "Human-readable SLA, e.g. \"24-48 hours\".", + "type": "string" + }, + "id": { + "type": "integer" + }, + "product_id": { + "type": "string" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "seller_company": { + "type": "string" + }, + "status": { + "type": "string" + }, + "target_price": { + "description": "Buyer target per unit, as supplied.", + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id", + "product_id", + "product_name", + "quantity", + "status", + "expected_response" + ], + "type": "object" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "success", + "message", + "quote" + ], + "type": "object" +}
10 tool updates
- Changed
bulk_export_orders1 field changed- added
Input schema / properties / order_ids / descriptionAdded value: +"Order ids belonging to the calling seller (max 200/request). Orders owned by anyone else are skipped."
- Changed
bulk_mark_shipped4 fields changed- added
Input schema / properties / carrier_name / descriptionAdded value: +"Carrier for the shipment. Omit to infer it from tracking_number." - added
Input schema / properties / order_ids / descriptionAdded value: +"Order ids belonging to the calling seller (max 200/request). Orders owned by anyone else are skipped." - added
Input schema / properties / tracking_number / descriptionAdded value: +"Tracking number written to every listed order. Supplying this without carrier_name auto-detects the carrier." - added
Input schema / properties / tracking_url / descriptionAdded value: +"Tracking URL written to every listed order."
- Changed
bulk_update_listings1 field changed- added
Input schema / properties / mode / descriptionAdded value: +"What to change and how: price_set writes an absolute USD price, price_percent_increase / price_percent_decrease adjust the current price by a percentage, moq_set writes a minimum order quantity."
- Changed
create_listing6 fields changed- added
Input schema / properties / category / descriptionAdded value: +"Catalogue category. One of: electronics, apparel, home_goods, beauty, sports, kitchenware, office_supplies, toys, food_beverage, tools, other." - added
Input schema / properties / category / enumAdded value: +[ + "electronics", + "apparel", + "home_goods", + "beauty", + "sports", + "kitchenware", + "office_supplies", + "toys", + "food_beverage", + "tools", + "other" +] - added
Input schema / properties / description / descriptionAdded value: +"Listing body copy: condition detail, packaging, lot composition. Buyers filter on its presence and agents summarise it." - added
Input schema / properties / name / descriptionAdded value: +"Listing title shown to buyers and matched by catalogue search." - added
Input schema / properties / quantity / descriptionAdded value: +"Units available in this lot." - added
Input schema / properties / sku / descriptionAdded value: +"Seller's own stock-keeping unit, shown to buyers and used for reconciliation."
- Changed
get_pricing_recommendation4 fields changed- added
Input schema / properties / category / descriptionAdded value: +"Catalogue category. One of: electronics, apparel, home_goods, beauty, sports, kitchenware, office_supplies, toys, food_beverage, tools, other." - added
Input schema / properties / category / enumAdded value: +[ + "electronics", + "apparel", + "home_goods", + "beauty", + "sports", + "kitchenware", + "office_supplies", + "toys", + "food_beverage", + "tools", + "other" +] - added
Input schema / properties / quantity / descriptionAdded value: +"Lot size being priced; recommendations scale with volume." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "discount_from_retail": { + "description": "Percent below original retail.", + "type": "number" + }, + "factors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "price_range": { + "properties": { + "high": { + "type": "number" + }, + "low": { + "type": "number" + } + }, + "required": [ + "low", + "high" + ], + "type": "object" + }, + "recommended_price": { + "type": "number" + }, + "tips": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "recommended_price", + "price_range", + "discount_from_retail", + "factors", + "tips" + ], + "type": "object" +}
- Changed
get_product_details1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "category": { + "type": "string" + }, + "condition": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "original_retail": { + "type": [ + "integer", + "null" + ] + }, + "price": { + "description": "Unit price in cents.", + "type": "integer" + }, + "quantity_available": { + "type": "integer" + }, + "quote_required": { + "type": "boolean" + }, + "seller": { + "properties": { + "company": { + "type": "string" + }, + "verified": { + "description": "True once the seller has a Stripe account.", + "type": "boolean" + } + }, + "required": [ + "company", + "verified" + ], + "type": "object" + } + }, + "required": [ + "id", + "name", + "category", + "quantity_available", + "price", + "quote_required" + ], + "type": "object" +}
- Changed
get_quote_requests2 fields changed- added
Input schema / properties / status / descriptionAdded value: +"Which of the calling seller's quote requests to return: pending (awaiting a reply), responded, or all." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "message": { + "type": "string" + }, + "quotes": { + "items": { + "properties": { + "buyer_company": { + "type": "string" + }, + "created_at": { + "description": "ISO-8601 timestamp.", + "type": "string" + }, + "id": { + "type": "integer" + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "product_id": { + "type": "string" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "status": { + "type": "string" + }, + "target_price": { + "description": "Buyer target in cents.", + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "product_id", + "quantity", + "status", + "created_at" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "quotes", + "total", + "message" + ], + "type": "object" +}
- Changed
quick_buy1 field changed- removed
Input schema / properties / shipping_countryRemoved value: -{ - "description": "Two-letter country code (e.g., US, GB)", - "type": "string" -}
- Changed
respond_to_quote3 fields changed- added
Input schema / properties / action / descriptionAdded value: +"accept the buyer's terms as asked, counter with a different price (requires counter_price), or decline the request." - added
Input schema / properties / message / descriptionAdded value: +"Optional note sent to the buyer alongside the decision." - added
Input schema / properties / quote_request_id / descriptionAdded value: +"Id of the quote request to answer, as returned by get_quote_requests."
- Changed
search_inventory3 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum listings to return (default 20, max 100)." - removed
Input schema / properties / min_discountRemoved value: -{ - "maximum": 100, - "minimum": 0, - "type": "integer" -} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "message": { + "type": "string" + }, + "products": { + "items": { + "properties": { + "category": { + "type": "string" + }, + "condition": { + "type": [ + "string", + "null" + ] + }, + "discount_percent": { + "description": "Null when the listing has no original retail price on file.", + "type": [ + "integer", + "null" + ] + }, + "id": { + "description": "Opaque listing id, `product_<n>`.", + "type": "string" + }, + "name": { + "type": "string" + }, + "price": { + "description": "Unit price in cents.", + "type": "integer" + }, + "quantity": { + "type": "integer" + } + }, + "required": [ + "id", + "name", + "category", + "quantity", + "price" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Catalogue matches before the limit is applied.", + "type": "integer" + } + }, + "required": [ + "products", + "total", + "message" + ], + "type": "object" +}
12 tool updates
- First observed
bulk_export_orders - First observed
bulk_mark_shipped - First observed
bulk_update_listings - First observed
create_listing - First observed
get_pricing_recommendation - First observed
get_product_details - First observed
get_quote_requests - First observed
quick_buy - First observed
request_quote - First observed
respond_to_quote - First observed
search_inventory - First observed
seller_inbox_summarise
Related MCP Connectors
Get wholesale quotes and order industrial, MRO, and operational supplies from a US B2B distributor.
Get wholesale quotes and order industrial, MRO, and operational supplies from a US B2B distributor.
Find products by description or Bill of Materials, over 100k+ suppliers and products
Search products, manage a customer cart, and request current checkout quotes.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to search millions of electronic components and ICs, retrieve specifications, compare alternates, and submit turnkey BOM procurement requests.4MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse product catalogs, search products with filters, and initiate checkouts, generating order summaries and checkout URLs.-
- AlicenseBqualityCmaintenanceEnables agents to search and validate electronic parts from the DigiKey catalog, compare alternatives, and prepare or update private MyLists with current pricing, stock, MOQ, and packaging details for human-reviewed checkout.11MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables searching for electronic components through the Nexar Supply API, providing detailed part information including manufacturer, pricing, specifications, and datasheets.-
Glama MCP Gateway
Add one secure layer between your agents and this server.