Resollo Agent API
Server Details
Resollo marketplace: search, seller lookup, offers, orders, draft listings. All human-approved.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
18 toolsmarketplace.infoGet Resollo marketplace taxonomy and metadataARead-onlyInspect
Returns the static reference data an agent needs to build valid searches and read responses without guessing: the numeric category ids and their keys/English names (use these for search's category filter), the condition codes, the list of supported ISO currency codes and the default (USD), the payment- and shipment-method codes, the available sort options, a few limits (max search page size, max images per products.create), and policy URLs (AI policy, OpenAPI spec). Read-only, no authentication required. Safe to call once and cache for the session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| limits | Yes | |
| categories | Yes | |
| conditions | Yes | |
| currencies | Yes | |
| policy_urls | Yes | |
| sort_options | Yes | |
| payment_methods | Yes | |
| default_currency | Yes | |
| shipment_methods | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces with 'Read-only, no authentication required.' It adds valuable context beyond annotations: the data is 'static', callable once and cacheable for the session, and includes policy URLs. This goes beyond what the annotations alone 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 information-dense but well-organized: it opens with the tool's purpose, then presents a logical list of returned data categories, and closes with usage guidance. Every clause contributes actionable information; despite length, 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?
With an empty input schema and an output schema available, the description covers everything an agent needs: what kind of data is returned, how it should be used, its read-only and auth-free nature, and a caching strategy. Nothing essential 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 tool has zero parameters and the input schema is empty, so there is no parameter semantics to clarify. The rubric baseline for 0 parameters is 4; the description adds no parameter-specific meaning, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Returns'), a clear resource ('static reference data'), and a precise purpose ('build valid searches and read responses without guessing'). It enumerates the exact contents, making the tool's role unmistakable among operation-focused siblings like products.create and offers.make.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to call the tool ('once and cache for the session') and why ('an agent needs to build valid searches and read responses'). It explicitly ties outputs to downstream usage, e.g., 'use these for search's category filter', giving clear guidance absent any alternative metadata tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offers.listList the authenticated user's own Resollo offersARead-onlyInspect
Returns the caller's most recent Make-an-Offer / bargaining offers. Pass role: 'buyer' for offers you sent, or role: 'seller' for offers received on your own listings. Optionally filter to a single state (pending / accepted / rejected / countered / buyer_accepted / expired). Each entry has the product, the offered price, the seller's counter price if any, and timestamps. Read-only, no side effects. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Whose side to list from: 'buyer' returns offers you sent, 'seller' returns offers received on your listings. | |
| limit | No | Maximum number of most-recent offers to return (1-50, default 20). | |
| state | No | Optional filter to a single offer state. When omitted, offers in every state are returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| offers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description repeats the readOnlyHint annotation by stating 'Read-only, no side effects,' and adds an auth requirement ('Authorization: Bearer <agent api key>') that the schema and annotations do not provide. It also discloses the returned entry fields and most-recent ordering, which is useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose, parameter guidance, return contents, and side-effect/auth note each earn their place. Important usage information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering read-only behavior, the description covers everything an agent needs: role requirement, optional filters, output shape, ordering, auth, and side-effect safety. No critical operational gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description restates the role and state semantics and clarifies default behavior, but adds little beyond the schema's own 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 opens with a specific verb and resource: 'Returns the caller's most recent Make-an-Offer / bargaining offers,' and clarifies it concerns the caller's own offers. The title and description together distinguish this read operation from sibling mutation tools like offers.make and offers.respond.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 gives explicit invocation guidance: pass role 'buyer' for sent offers or 'seller' for received offers, and optionally filter by state. It does not name alternatives or state when not to use this tool, but the read-vs-mutate distinction across sibling names is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offers.makeMake an offer (bargain) on a Resollo productAInspect
Submits a price offer (Make an Offer / bargaining) on a fixed-price Resollo listing, on behalf of the authenticated buyer. Only works on fixed-price listings where the seller has offers enabled and a fully active Stripe Connect account -- never on auctions. A product can only have one active offer at a time; if it's currently locked by someone else's in-flight offer, or isn't otherwise eligible, this returns product_not_eligible. This does NOT move any money -- it only creates a PENDING offer the seller must respond to (see offers.respond). Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The uuid of the fixed-price listing to bid on. | |
| currency_code | No | ISO 4217 code for offered_price. Defaults to the product's own listing currency if omitted. | |
| offered_price | Yes | The price the buyer offers, in `currency_code` (or the listing's own currency if that is omitted). |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| offer_id | Yes | |
| created_at | Yes | |
| product_id | Yes | |
| offered_price | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (only three boolean hints), so the description carries the burden and delivers substantially: it discloses that no money moves, that only a PENDING offer is created, that only one active offer can exist per product, that in-flight locks cause product_not_eligible, and the required Authorization header. This is exactly the behavioral context an agent needs beyond 'make an offer'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each earning its place: purpose, eligibility/exclusions, concurrency/error behavior, and side-effect clarity with auth requirement. The core verb is front-loaded and there is zero 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?
For a tool with complex eligibility rules and side effects, everything needed to call it correctly is present: type of listing it applies to, seller prerequisites, exclusion cases, error behavior, pending-only semantics, the follow-up tool, and authentication. An output schema exists, so explaining return values is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that offered_price is a non-binding offer amount, but it doesn't add parameter-specific meaning beyond the schema — the behavioral clarification that no money moves is really transparency, not parameter semantics. The schema already explains product_id, currency_code defaulting, and the exclusiveMinimum bound.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Submits a price offer'), a precise resource ('fixed-price Resollo listing'), and actor ('authenticated buyer'). The 'never on auctions' exclusion and the distinction from the seller-side offers.respond make it unmistakable which action this performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when it applies (fixed-price listings with offers enabled and a fully active Stripe Connect account) and when it does not ('never on auctions', locked/not-eligible returns product_not_eligible). Points to the follow-up alternative offers.respond, giving an agent clear routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offers.respondRespond to a Resollo offerAInspect
Responds to a pending Make an Offer / bargaining offer. If the caller is the SELLER of the offer, action must be 'accept', 'reject', or 'counter' (counter_price required for 'counter') and the offer must currently be pending. If the caller is the BUYER, action must be 'accept_counter' and the offer must currently be countered. Accepting an offer or a counter-offer immediately creates a confirmed order at the agreed price -- it does NOT charge any payment method, the buyer still completes payment themselves afterwards through the normal flow, exactly like after orders.place. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Seller actions on a pending offer: accept | reject | counter (counter_price required). Buyer action on a countered offer: accept_counter. | |
| offer_id | Yes | The uuid of the offer to respond to. | |
| counter_price | No | The seller's counter-offer price. Required when action is `counter`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| offer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that accepting immediately creates a confirmed order, does not charge any payment method, and that the buyer later pays through the normal flow. It also requires an Authorization header. These behavioral details meaningfully inform the agent about side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries essential information: core purpose, role/action rules, side effects, and authentication. It is front-loaded with the main purpose and then details conditions without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has role-dependent state transitions and side effects, and the description covers all critical aspects: valid actions per role, required offer state, counter_price condition, the confirmed-order consequence, payment behavior, and auth requirements. Given the output schema exists, return-value documentation is not the description's responsibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds role-based meaning by mapping actions to seller versus buyer, and explicitly notes that counter requires counter_price. This supplements the schema's field-level descriptions with usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool responds to a pending Make an Offer / bargaining offer, with specific actions (accept, reject, counter, accept_counter). It differentiates the resource (offers) from sibling tools like orders.place or orders.reject by focusing on offer response semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context on when to use it: the offer must be pending or countered depending on caller role, and the valid actions are role-dependent. It does not explicitly name alternatives or say when not to use it, but the role/state conditions are clear enough to guide correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.checkoutLinkGet a Stripe checkout link for a dispatched Resollo orderAInspect
Creates and returns a Stripe-hosted checkout URL for a DISPATCHED, not-yet-paid order, on behalf of the BUYER -- exactly what the 'Pay with Stripe' button on the Resollo order page does. This tool NEVER charges any payment method and NEVER completes a payment itself -- it only produces a link. The human buyer must open that URL themselves and complete payment on Stripe's own hosted page. Never tell the user their order is 'paid' after calling this tool -- give them the link and tell them they still need to complete payment there. Fails with not_ready_for_payment if the seller hasn't dispatched the order yet, or already_paid if it's already been paid. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The uuid of the dispatched, not-yet-paid order. |
Output Schema
| Name | Required | Description |
|---|---|---|
| order_id | Yes | |
| checkout_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses crucial behavioral traits: it never charges a payment method, only produces a link, and requires the human buyer to complete payment on Stripe's hosted page. It also provides an explicit guardrail about never telling the user the order is 'paid' after calling, and states the required Authorization header. These details add significant context beyond the simple 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?
Every sentence in the description carries essential information: the core action, the non-charging behavior, the buyer obligation, the post-call communication rule, the failure modes, and the auth requirement. The main action is front-loaded, and the structure flows logically from what it does to how to handle the result, with no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a payment-link tool with one parameter. It covers what the tool does, the preconditions, the failure reasons, the auth requirements, and the important caveat about not claiming payment completion. The output schema exists but is not shown, so the description's mention of returning a Stripe-hosted URL sufficiently communicates the return value.
Complex tools with many parameters or behaviors need more documentation. 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 orderId parameter is already documented as 'the uuid of the dispatched, not-yet-paid order.' The description reinforces these preconditions and adds context by explaining the buyer-centric purpose, which helps the agent understand the state requirements for the parameter beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Creates and returns a Stripe-hosted checkout URL' for a 'DISPATCHED, not-yet-paid order'. It clearly scopes the action and differentiates it from payment execution by emphasizing it never charges or completes payment, making it distinct from other order/payment related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly specifies when to use the tool: for dispatched, not-yet-paid orders on behalf of the buyer. It also defines when not to use it by documenting failure modes: not_ready_for_payment if not yet dispatched, and already_paid if already paid. This gives clear when/when-not conditions, even if it doesn't name an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.listList the authenticated user's own Resollo ordersARead-onlyInspect
Returns the caller's most recent orders. Pass role: 'buyer' for orders you placed, or role: 'seller' for orders on your own listings. Each entry has the same decoded status booleans as orders.status (reserved / dispatched / paid / received / rejected / closed), plus the product name, item count, total price (converted to the requested currency, default USD), the other party's name, and a link to the order page. Read-only, no side effects. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Whose side to list from: 'buyer' returns orders you placed, 'seller' returns orders on your listings. | |
| limit | No | Maximum number of most-recent orders to return (1-50, default 20). | |
| currency | No | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only, and the description reinforces this with 'Read-only, no side effects.' It adds meaningful behavioral context beyond the annotations: the required Authorization header, currency conversion behavior, and the decoded status booleans. This goes beyond what annotations alone 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 front-loaded with the core action and then efficiently covers role selection, output fields, side effects, and auth. It is slightly dense due to the enumerated output fields, but every sentence adds useful operational detail and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, output schema, and read-only annotations, the description covers everything an agent needs to invoke the tool correctly: authentication, role semantics, sorting, output contents, and the key side effect declaration. No critical operational 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?
Schema coverage is 100%, so the baseline is 3; the schema already explains role, limit, and currency. The description adds extra meaning by tying currency to the output ('total price (converted to the requested currency, default USD)') and by framing role as buyer versus seller perspectives, which is not fully captured by the parameter names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Returns the caller's most recent orders.' It clearly distinguishes the buyer and seller perspectives, and it references orders.status as a related sibling, so an agent understands this is the list-all-orders view rather than a single-order status 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 gives clear contextual guidance by explaining exactly when to pass role 'buyer' versus 'seller' and notes the authentication requirement. It does not explicitly name alternatives such as orders.status for single-order checks, so it misses the 'when not to use' guidance needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.placeReserve a Resollo productADestructiveInspect
Creates a RESERVATION for the given product -- it does NOT complete a purchase and does NOT charge any payment method. After calling this tool, a human (the buyer) MUST log in to Resollo and complete payment manually through the normal checkout flow (Stripe-hosted checkout page, or cash-payment confirmation). Never tell the user their order is 'placed' or 'paid' after calling this tool -- tell them the item is reserved and they need to complete payment themselves at resollo.com to finalize it. Only fixed-price listings can be reserved this way (not auctions). Requires an 'Authorization: Bearer ' header -- generate a key from the Resollo profile page. The buyer must have explicitly approved this specific order before you call this tool (confirm must be true).
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional note to the seller, attached to the order chat. | |
| confirm | Yes | Human-confirmation gate. Must be true, and only set it after the user has explicitly approved this specific order having seen the payment-safety text. An agent must never set this on its own initiative. | |
| currency | No | Informational only, used solely to detect a currency mismatch worth surfacing to the buyer (payment_safety.currency_mismatch). Does NOT change what gets charged -- the order is always recorded and settled in the listing's own native currency regardless of this value. | |
| quantity | No | Units to reserve (1-20, default 1). | |
| product_id | Yes | The uuid of the fixed-price listing to reserve. | |
| address_key | No | Key of one of the buyer's own saved addresses (never a free-text address). Required unless shipment_method is `personal`; defaults to the buyer's active address when omitted. | |
| payment_method | Yes | How buyer and seller will settle payment off-platform. Must be one the seller accepts (see get_product.seller.accepted_payment_methods). | |
| shipment_method | Yes | How the item will be handed over. Must be one the seller accepts (see get_product.seller.accepted_shipment_methods). |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| product | Yes | |
| order_id | Yes | |
| quantity | Yes | |
| created_at | Yes | |
| total_price | Yes | |
| payment_method | Yes | |
| payment_safety | Yes | |
| shipment_method | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining the reservation semantics: no payment is charged, the buyer must complete payment through Resollo's checkout flow, and the agent must never tell the user the order is placed or paid. It also discloses auth requirements and the mandatory confirm gate. These behavioral details are not derivable from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: it clarifies what the tool does, what it does not do, what the user must do afterward, what the agent must not say, constraints on listing type, required authentication, and the confirmation gate. The most important distinction (reservation vs purchase) is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description fully covers the operational context: post-call buyer steps, auth requirements, safety guardrails, listing-type restrictions, and confirmation obligations. With an output schema present, the description does not need to explain return values, and nothing essential to calling this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some workflow-level context around confirm and product eligibility, but most parameter meaning is already thoroughly documented in the schema, such as confirm being a human-gate boolean, payment_method being off-platform settlement, and currency being informational only. The description does not materially enrich the individual parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Creates a RESERVATION for the given product.' It immediately distinguishes this from a purchase by stating it does NOT complete a purchase or charge a payment method, and it scopes the tool to fixed-price listings only, excluding auctions. This clearly separates orders.place from purchase/checkout 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 gives clear context for when to use the tool: to reserve a fixed-price product, with the buyer required to finalize payment manually afterward. It also states an important exclusion ('not auctions') and caller requirements such as the Authorization header and explicit buyer approval. It does not explicitly name alternative tools like orders.checkoutLink or offers.make, so it stops short of fully routing between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.rejectReject a reserved Resollo orderADestructiveInspect
Rejects an order on behalf of the SELLER -- only allowed while the order is still RESERVED, i.e. before the seller has dispatched it or the buyer has paid. Returns order_not_reserved once the order has moved past that point (use the normal Resollo order page for anything after dispatch). This does NOT move any money -- no payment has happened yet at the RESERVED stage. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The uuid of the RESERVED order to reject. |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses that no money moves, that a specific error (order_not_reserved) is returned once the order has progressed, and that an Authorization header is required. These behavioral details meaningfully exceed 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?
Four purposeful sentences, each earning its place: the action and constraint, the error condition, the money clarification, and the auth requirement. The key constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive action, the description covers timing, failure mode, side effects (no money movement), auth, and what to do after the reserved window. The output schema covers any return details, so nothing critical 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 already fully describes orderId as 'The uuid of the RESERVED order to reject,' giving 100% schema description coverage. The tool description adds no extra parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rejects'), the resource ('an order'), and the actor ('on behalf of the SELLER'). It also pins down the exact state condition ('only allowed while the order is still RESERVED'), which clearly distinguishes this from sibling tools like orders.place or orders.status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly defines when the tool is allowed (while RESERVED, before dispatch/payment) and what happens past that point. It also directs the agent to the normal Resollo order page for anything after dispatch, providing a clear fallback alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.statusGet the status of a Resollo orderARead-onlyInspect
Returns the current status of one order: whether it's reserved, dispatched, paid, received, rejected, or closed (decoded booleans, not a raw state number), carrier/tracking info if dispatched, and the total price. The caller must be either the order's buyer or its seller -- returns forbidden otherwise. Read-only, no side effects. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The order's uuid. | |
| currency | No | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | Yes | |
| closed | Yes | |
| carrier | Yes | |
| order_id | Yes | |
| received | Yes | |
| rejected | Yes | |
| reserved | Yes | |
| created_at | Yes | |
| dispatched | Yes | |
| total_price | Yes | |
| completed_at | Yes | |
| tracking_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing the authentication header requirement, the forbidden response for non-buyer/seller callers, and the decoded-boolean representation instead of a raw state number. This gives the agent actionable expectations about behavior and failure modes.
Agents need to know what a tool does to the world before calling 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 and every sentence earns its place: return payload, authorization constraint, and read-only guarantee. Information is front-loaded with the primary purpose before the access caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with a fully documented input schema and an output schema present, the description covers the key behavioral constraints: auth, role-based access, read-only semantics, and what data is returned. Nothing essential is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both orderId and currency. The description adds little beyond the schema except noting currency semantics are shared with search_products, which is a minor cross-reference; this meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Returns' and clearly identifies the resource: the current status of one Resollo order. It enumerates the statuses (reserved, dispatched, paid, received, rejected, closed), notes decoded booleans rather than a raw number, and mentions carrier/tracking and total price, which fully disambiguates it from the 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 provides clear usage context by stating the caller must be the buyer or seller and that authorization is required, plus it explicitly notes read-only behavior. It does not compare with sibling tools, but no other sibling directly overlaps with order-status retrieval, so the absence of exclusions is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products.createCreate a Resollo product listing from photosAInspect
Creates a new Resollo product listing FROM PHOTOS ONLY -- Resollo's own built-in AI (the same pipeline the web listing form's 'AI autofill' button uses) analyzes the images and generates the title, description, category, condition, and a suggested price; this tool never accepts or generates listing content on its own. The listing is created INACTIVE and NOT publicly visible -- it does NOT go live automatically. The seller MUST review and activate it themselves on their existing Resollo product management page (the activation_url returned by this tool) before it becomes visible or goes through moderation. Never tell the user the listing is 'live' or 'published' after calling this tool -- tell them a draft was created from their photos and they need to review and activate it themselves at resollo.com. Images must be actual photo files the caller has access to (e.g. local files) -- never fetch or invent an image from a URL. Requires an 'Authorization: Bearer ' header -- generate a key from the Resollo profile page; the resulting listing is attributed to that key's user.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional override for the AI-generated title. | |
| unit | No | Unit of sale (default "piece"). | piece |
| price | No | Optional fixed price override. When omitted, Resollo's AI price-suggestion sets it. | |
| images | Yes | 1-5 real photo files of the item. Resollo's own AI generates the listing content from these. | |
| quantity | No | Units available (default 1). | |
| condition | No | Optional override for the AI-chosen condition code (see getMarketplaceInfo.conditions). | |
| guarantee | No | Optional warranty / guarantee text. | |
| category_id | No | Optional override for the AI-chosen category id (see getMarketplaceInfo.categories). | |
| description | No | Optional override for the AI-generated description. | |
| offers_enabled | No | Whether buyers may send Make-an-Offer bids on the listing. | |
| is_business_listing | No | Whether this is a business (vs. private) listing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| suggested | Yes | |
| product_id | Yes | |
| activation_url | Yes | |
| quota_remaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are neutral (readOnlyHint=false, openWorldHint=false, destructiveHint=false), so the description carries the burden and delivers richly: listing is created INACTIVE and not publicly visible, the seller must manually review/activate via activation_url, content is AI-generated server-side, the listing is attributed to the API key's user, and post-call agent messaging is prescribed (never say 'live' or 'published'). This far exceeds what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (~230 words) but every sentence earns its place for a side-effecting tool: activation flow, auth requirement, image constraints, and post-call user messaging are all load-bearing. There is some redundancy (the photos-only concept is stated three times), and the 'web listing form AI autofill' comparison is nice-to-have rather than essential, so it is not a zero-waste 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 11-parameter, side-effecting creation tool with an output schema, the description is complete: it covers post-conditions (inactive draft), the manual activation step, the activation_url return value, auth key sourcing and attribution, image sourcing constraints, and the exact messaging the agent must give the user. Nothing an agent needs to call this correctly and handle the aftermath is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter already has a meaningful description, including that images must be base64 bytes and never URLs, and that name/price/condition/category_id/description are AI overrides. The description reinforces the photos-only constraint and tie to the 'AI autofill' pipeline, but adds little parameter-specific 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 leads with a specific verb, resource, and the defining mechanism: 'Creates a new Resollo product listing FROM PHOTOS ONLY'. It precisely distinguishes itself from the read/search siblings (products.get, products.search) by anchoring on photo-driven AI generation, and the title reinforces the same scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use context (you have photo files of an item) and explicit exclusions: never accept direct listing content, never fetch or invent an image from a URL. However, it never names a sibling alternative or explicitly states when to choose another tool (e.g., products.search for retrieval), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products.getGet Resollo product detailsARead-onlyInspect
Fetch the full details of one specific Resollo product listing by its ID, including its Semantic Profile (suitable_for, not_ideal_for, target_audience, key_strengths, evokes, is_similar_to -- useful for judging fit against a buyer's stated needs), attributes, all image URLs, shipment prices, and the seller's accepted payment/shipment methods. Returns not_found for products that don't exist, are sold, expired, or moderation-hidden. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. | |
| productId | Yes | The product listing's uuid. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| name | Yes | |
| unit | Yes | |
| price | Yes | |
| seller | Yes | |
| category | Yes | |
| condition | Yes | |
| guarantee | Yes | |
| image_url | Yes | |
| min_price | Yes | |
| attributes | Yes | |
| created_at | Yes | |
| image_urls | Yes | |
| description | Yes | |
| listing_type | Yes | |
| offers_enabled | Yes | |
| auction_ends_at | Yes | |
| converted_price | Yes | |
| shipment_prices | Yes | |
| semantic_profile | Yes | |
| quantity_available | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses no-authentication-requirement, and the not_found cases (nonexistent, sold, expired, moderation-hidden) go well beyond the readOnlyHint annotation. These are the behavioral nuances an agent needs to interpret responses correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, front-loading the core action and resource. The parenthetical definition of the Semantic Profile is a bit verbose, yet it directly aids tool selection by telling the agent why that data matters for buyer fit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, full parameter schema coverage, and readOnly annotations, the description supplies the remaining essential context: no authentication, not_found semantics, and the key returned areas. Nothing critical to correctly invoking or interpreting this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both productId and currency are already fully documented in the schema. The description adds no parameter-level meaning beyond the schema, which aligns with 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 uses a specific verb ('Fetch') and resource ('product listing by ID'), and enumerates the returned fields, making it unmistakably distinct from the sibling search tool products.search. It also highlights the Semantic Profile as a key differentiator for buyer-fit evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the tool for retrieving a single product's full details by ID and notes not_found behavior. It does not explicitly name alternatives or state when not to use it, but the context strongly implies it for exact product lookups rather than discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products.searchSearch Resollo productsARead-onlyInspect
Search active, publicly available product listings on the Resollo marketplace. Use this to browse or filter by keyword, category, price range, currency, or seller location. Returns only currently active, purchasable listings (never sold, expired, or moderation-hidden ones). For full details on one specific product you already have the ID for (including its Semantic Profile fields -- suitable_for, not_ideal_for, target_audience, key_strengths, evokes, is_similar_to -- which this search tool does NOT return), call products.get instead. Results are paginated via next_cursor; pass it back as the cursor argument to fetch the next page. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search across the listing's canonical name and description. | |
| sort | No | Result ordering. Never influenced by paid placement. | newest |
| limit | No | Maximum number of results to return per page (1-50, default 20). | |
| cursor | No | Opaque pagination cursor from a previous response's next_cursor. | |
| category | No | Numeric top-level category id (see getMarketplaceInfo.categories). Subcategory ids are accepted but rolled up to their top-level parent in the response. | |
| currency | No | ISO 4217 code used for price filtering and each result's converted_price. Defaults to USD. Must be one of getMarketplaceInfo.currencies. | |
| location | No | Comma-separated seller-location filters. Each entry is a 2-letter ISO country code ("HU") or a "COUNTRY:REGION" pair ("HU:BU"). Reflects the seller's profile location, not a per-listing field. | |
| price_max | No | Maximum price in the resolved `currency`. | |
| price_min | No | Minimum price in the resolved `currency` (converted price, not the seller's native currency). | |
| seller_id | No | Restrict results to one seller's listings. The uuid is the seller.id from any search or getProduct result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| products | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that results are limited to active, purchasable listings (excluding sold, expired, or moderation-hidden), pagination behavior via next_cursor, no authentication required, and that sort order is never influenced by paid placement. These are meaningful behavioral traits not present in 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?
Four sentences cover purpose, use cases, the key sibling relationship, pagination, and authentication. Information is front-loaded, and every sentence adds either essential scope or behavioral guidance; there is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema available and readOnlyHint=true, the description fully situates the tool: what it filters, what it excludes, pagination mechanics, auth expectations, and where to go for deeper per-product data. Nothing needed for correct invocation 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 100% description coverage for all 10 optional parameters, including defaults, formats, and constraints. The tool description adds only general filter categories already reflected in the schema, so it does not substantially elevate parameter understanding beyond 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 opens with a specific verb and resource: 'Search active, publicly available product listings on the Resollo marketplace.' It clearly defines the scope ('browse or filter by keyword, category, price range, currency, or seller location') and explicitly contrasts with products.get, so an agent can distinguish it from the sibling tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use instructions ('Use this to browse or filter...') and a direct when-not-to-use rule: 'For full details on one specific product you already have the ID for... call products.get instead.' It also names what this tool does NOT return, which prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
questions.askAsk a question about a Resollo productAInspect
Submits a public question about a product listing on behalf of the authenticated caller -- exactly the same product_questions record the web 'Ask a question' form creates. The seller can answer it on the Resollo web UI (with their own AI-drafted-answer assistant); this tool does not draft or send an answer. Question text is capped at 500 characters. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The public question text (1-500 characters). | |
| product_id | Yes | The uuid of the product to ask about. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| answer | Yes | |
| message | Yes | |
| created_at | Yes | |
| product_id | Yes | |
| answered_at | Yes | |
| questioner_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the side effect: a product_questions record identical to the web form is created on behalf of the authenticated caller. It also adds the required Authorization Bearer header and clarifies the tool's boundary—no drafting or sending an answer—which are meaningful behavioral facts not visible in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what the tool does, what it does not do, and the auth requirement. The main action is front-loaded and there is 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?
For a two-parameter mutation with an output schema and clear annotations, the description covers the essential context: auth header, side effect, public nature, and tool boundaries. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both product_id and question already have detailed descriptions, including the 500-character cap and UUID format. The description repeats the 500-character cap but adds no new parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the verb ('Submits'), the resource ('public question about a product listing'), and the actor ('authenticated caller'), and ties it to the same record the web form creates. This clearly distinguishes it from siblings like questions.list, which is a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes this tool is for asking, not answering: the seller answers on the Resollo web UI and this tool does not draft or send an answer. It does not explicitly name a sibling for the read workflow, but the context is clear enough that an agent knows when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
questions.listGet a Resollo product's questions and answersARead-onlyInspect
Returns every question asked about a product listing, including the seller's answer where one exists (answer/answered_at are null for unanswered questions). Useful to check what past buyers already asked before asking a new one, or before advising a buyer on a purchase decision. Read-only, no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product listing's uuid. |
Output Schema
| Name | Required | Description |
|---|---|---|
| questions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds 'no authentication required' plus a meaningful behavioral detail: answer/answered_at are null for unanswered questions. This goes beyond the annotation and helps the agent interpret results, though it does not discuss pagination or potential 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?
Three concise sentences with no filler: behavior is front-loaded, then edge cases, then usage scenarios, then auth note. Every sentence contributes distinct 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 single-parameter, read-only listing tool with an output schema available, this description is complete: it tells the agent what it returns, what nulls mean, when to use it, and that no authentication is needed. 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?
There is only one parameter and schema description coverage is 100%, with productId already described as 'The product listing's uuid.' The description adds no further parameter meaning beyond using the phrase 'product listing', so it does not exceed the schema 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 states a specific action ('Returns every question asked about a product listing') on a clear resource (product Q&A), including the key detail that seller answers are included where they exist. It distinguishes itself from siblings like questions.ask by framing this as retrieving past buyer questions, and from reviews.list by focusing on Q&A rather than reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: check what past buyers asked before asking a new question, or before advising a buyer. This effectively routes an agent to this tool versus asking a new question, though it does not name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reviews.listGet a Resollo product's reviewsARead-onlyInspect
Returns the reviews left for a product by past buyers (rating, message, date), plus the product's average rating and review count. Every review is tied to a real, verified order line -- only actual buyers can leave one. Useful to judge product/seller quality before advising a buyer on a purchase decision. Read-only, no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product listing's uuid. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reviews | Yes | |
| avg_rating | Yes | |
| review_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds meaningful behavioral context: 'Read-only, no authentication required' clarifies access requirements, and 'Every review is tied to a real, verified order line -- only actual buyers can leave one' discloses data provenance and trust guarantees. These are valuable traits not present in the annotations or schema and they do not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of three compact sentences, each earning its place: the return payload, the verification/trust characteristic, and the intended use case with auth status. The core purpose is front-loaded, with no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 existing output schema, this description is complete: it states what is returned, provides trust/verification context, names the decision scenario, and clarifies authentication. There are no missing critical details that would prevent an agent from invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter productId is fully covered by the input schema with type, format, pattern, and description 'The product listing's uuid.' Since schema coverage is 100%, the description does not need to add parameter detail, and it does not. Baseline 3 applies when the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: it returns reviews left for a product by past buyers, and explicitly enumerates the contents (rating, message, date) as well as the aggregate average rating and review count. This clearly distinguishes reviews.list from sibling tools like questions.list or products.search by naming the exact domain object and data being retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a clear usage context: 'Useful to judge product/seller quality before advising a buyer on a purchase decision.' This tells the agent when to call the tool, but it does not explicitly contrast it with alternatives or state when not to use it, so it falls short of the explicit exclusion/alternative guidance level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sellers.getGet a Resollo seller's public profileARead-onlyInspect
Returns a seller's public profile -- the same information the web /user/ profile page shows: display name, avatar URL, about text, identity-verification badge, location (country/region/city), when they joined, accepted payment/shipment methods, whether they have a fully active Stripe Connect account, their number of currently active listings, completed-sale count, follower count, and their positive-feedback rating (0-5, null if they have no feedback yet). Useful for judging seller reputation before advising a buyer, or to get the shop_url for browsing everything they sell (pass the same seller id as search's seller_id filter). Read-only, no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| sellerId | Yes | The seller's uuid -- the seller.id from any search or getProduct result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| city | Yes | |
| name | Yes | |
| about | Yes | |
| rating | Yes | |
| shop_url | Yes | |
| avatar_url | Yes | |
| sold_count | Yes | |
| is_verified | Yes | |
| profile_url | Yes | |
| region_code | Yes | |
| country_code | Yes | |
| member_since | Yes | |
| feedback_count | Yes | |
| follower_count | Yes | |
| active_listing_count | Yes | |
| stripe_connect_active | Yes | |
| accepted_payment_methods | Yes | |
| accepted_shipment_methods | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description explicitly states 'Read-only, no authentication required' and details exactly what data is returned, including edge cases like null feedback rating. It also explains how the seller id relates to search, adding practical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then provides a dense, useful enumeration of return fields and use cases. Every sentence adds meaningful information for tool selection or invocation, with 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 a single well-documented parameter, an output schema present, and annotations covering read-only behavior, the description fully covers what an agent needs: purpose, return contents, use cases, authentication requirements, and parameter sourcing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents sellerId and where it comes from (search or getProduct result). The description adds further value by noting the same seller id can be passed as search's seller_id filter and by tying the parameter to the shop_url use case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Returns a seller's public profile') and enumerates the exact fields returned, making the tool's purpose unmistakable. It does not explicitly distinguish itself from sibling tools like sellers.status, but the public-profile framing and field list make the boundary reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 use cases: judging seller reputation before advising a buyer and obtaining shop_url for browsing a seller's items. It does not explicitly state when not to use this tool or name alternatives, but the context is concrete 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.
sellers.listingsList the authenticated seller's own listings (any state)ARead-onlyInspect
Returns the caller's own product listings in EVERY state -- active, inactive, pending moderation, rejected, and closed -- not just the publicly visible ones (soft-deleted listings are excluded). Use this to find a draft created earlier with products.create (those sit in state 'inactive' until the seller activates them) when you no longer have its product_id, or to review what the seller currently has listed. Each entry includes the listing's state, price, quantity, and an edit_url (the seller's product page where an inactive draft is reviewed and activated). Optionally filter to a single state. Read-only, no side effects. Requires an 'Authorization: Bearer ' header.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of most-recent listings to return (1-100, default 50). | |
| state | No | Optional filter to a single listing state. 'inactive' is where products.create drafts sit until the seller activates them. When omitted, listings in every state are returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| listings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable behavioral context: no side effects, required Authorization header, soft-deleted exclusion, inclusion of edit_url, and the fact that inactive drafts can be activated via that URL. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence contributes: scope, use cases, output fields, optional filtering, read-only behavior, and auth requirement are all covered in a dense but easily parseable paragraph. The core definition is front-loaded, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotation, the existing output schema, and only two optional parameters, the description is complete. It covers authentication, exclusions, state semantics, and the practical recovery scenario for lost product IDs, so an agent has everything needed to invoke and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both limit and state. The description reinforces that state is optional and that 'inactive' corresponds to products.create drafts, but it does not add meaningful parameter detail beyond the schema, matching the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns'), a specific resource (the caller's own listings), and an explicit scope ('EVERY state' including inactive, pending moderation, rejected, closed), while also noting what is excluded (soft-deleted listings). This clearly distinguishes it from public listing search and from products.get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit use cases: finding a draft created via products.create when the product_id is unknown, and reviewing what the seller currently has listed. It does not explicitly name alternative tools or exclusion conditions, but the intended contexts are clear enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sellers.statusGet the authenticated seller's current listing statusARead-onlyInspect
Returns the authenticated user's current listing capabilities: whether they can create a new listing right now (subscription plan limit), whether they have a payment/shipment method configured (both required before products.create will succeed), the max images and price their plan allows, and their remaining AI credit balance (products.create consumes 2 credits per call). Call this BEFORE asking the user for photos or calling products.create, so you can tell the user upfront if something would block listing creation, instead of finding out only after a failed attempt. Read-only, no side effects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| max_price | Yes | |
| max_images | Yes | |
| max_products | Yes | |
| has_payment_method | Yes | |
| can_create_auctions | Yes | |
| can_create_products | Yes | |
| has_shipment_method | Yes | |
| ai_credits_remaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only, no side effects.' It adds non-obvious behavioral context beyond annotations: products.create consumes 2 credits per call, payment/shipment configuration is a prerequisite, and the tool reveals plan-based limits. This gives an agent useful operational expectations without contradicting 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 dense but every sentence earns its place: the first states the core purpose and specifics, the second provides actionable sequencing and dependency information, and the final sentence confirms safety. It is front-loaded with the result and then explains why and when to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no parameters and an output schema exists, the description covers all the essential context an agent needs: what the tool reports, why it matters, when to call it, and that it is safe. It even ties the result to downstream behavior with products.create, making the tool's role in the workflow fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and the description correctly focuses on what the response contains rather than input semantics. It names the key result fields—listing capabilities, payment/shipment setup, max images/price, AI credit balance—which adds meaning beyond the empty schema. The baseline of 4 for a parameterless tool is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns the authenticated user's current listing capabilities.' It enumerates exactly what is included—creation eligibility, payment/shipment configuration, plan limits, and AI credit balance—so an agent can distinguish this from generic seller info tools like sellers.get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit timing guidance: 'Call this BEFORE asking the user for photos or calling products.create.' It explains why the preflight matters by noting that payment/shipment methods are required for products.create to succeed. It does not explicitly contrast sellers.status with alternatives like sellers.get or products.get, so it stops short of full 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
- Added
offers.list - Added
orders.list - Added
sellers.listings
30 tool updates
- Removed
askProductQuestion - Removed
createProduct - Removed
getCheckoutLink - Removed
getMarketplaceInfo - Removed
getOrderStatus - Removed
getProduct - Removed
getProductQuestions - Removed
getProductReviews - Removed
getSeller - Removed
getSellerStatus - Removed
makeOffer - Added
marketplace.info - Added
offers.make - Added
offers.respond - Added
orders.checkoutLink - Added
orders.place - Added
orders.reject - Added
orders.status - Removed
placeOrder - Added
products.create - Added
products.get - Added
products.search - Added
questions.ask - Added
questions.list - Removed
rejectOrder - Removed
respondToOffer - Added
reviews.list - Removed
searchProducts - Added
sellers.get - Added
sellers.status
15 tool updates
- Changed
askProductQuestion3 fields changed- added
Input schema / properties / product_id / descriptionAdded value: +"The uuid of the product to ask about." - added
Input schema / properties / question / descriptionAdded value: +"The public question text (1-500 characters)." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "answer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "answered_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "number" + }, + "message": { + "type": "string" + }, + "product_id": { + "type": "string" + }, + "questioner_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "product_id", + "message", + "answer", + "created_at", + "answered_at" + ], + "type": "object" +}
- Changed
createProduct14 fields changed- added
Input schema / properties / category_id / descriptionAdded value: +"Optional override for the AI-chosen category id (see getMarketplaceInfo.categories)." - added
Input schema / properties / condition / descriptionAdded value: +"Optional override for the AI-chosen condition code (see getMarketplaceInfo.conditions)." - added
Input schema / properties / description / descriptionAdded value: +"Optional override for the AI-generated description." - added
Input schema / properties / guarantee / descriptionAdded value: +"Optional warranty / guarantee text." - added
Input schema / properties / images / descriptionAdded value: +"1-5 real photo files of the item. Resollo's own AI generates the listing content from these." - added
Input schema / properties / images / items / properties / data / descriptionAdded value: +"Base64-encoded image bytes (never a URL)." - added
Input schema / properties / images / items / properties / mime_type / descriptionAdded value: +"Declared image type. Only a hint -- the decoded bytes are re-validated server-side." - added
Input schema / properties / is_business_listing / descriptionAdded value: +"Whether this is a business (vs. private) listing." - added
Input schema / properties / name / descriptionAdded value: +"Optional override for the AI-generated title." - added
Input schema / properties / offers_enabled / descriptionAdded value: +"Whether buyers may send Make-an-Offer bids on the listing." - added
Input schema / properties / price / descriptionAdded value: +"Optional fixed price override. When omitted, Resollo's AI price-suggestion sets it." - added
Input schema / properties / quantity / descriptionAdded value: +"Units available (default 1)." - added
Input schema / properties / unit / descriptionAdded value: +"Unit of sale (default \"piece\")." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "activation_url": { + "type": "string" + }, + "product_id": { + "type": "string" + }, + "quota_remaining": { + "additionalProperties": false, + "properties": { + "autofill": { + "type": "number" + }, + "price_suggestion": { + "type": "number" + } + }, + "required": [ + "autofill", + "price_suggestion" + ], + "type": "object" + }, + "state": { + "const": "inactive", + "type": "string" + }, + "suggested": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "category": { + "additionalProperties": false, + "properties": { + "id": { + "type": "number" + }, + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + } + }, + "required": [ + "id", + "key", + "name_en" + ], + "type": "object" + }, + "condition": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "required": [ + "value", + "key", + "name_en" + ], + "type": "object" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "reasoning": { + "type": "string" + } + }, + "required": [ + "amount", + "currency", + "min", + "max", + "reasoning" + ], + "type": "object" + }, + "semantic_profile": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "shipment_prices": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "international": { + "type": "string" + }, + "local": { + "type": "string" + } + }, + "required": [ + "local", + "international" + ], + "type": "object" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + }, + "required": [ + "name", + "description", + "category", + "condition", + "attributes", + "semantic_profile", + "shipment_prices", + "price" + ], + "type": "object" + } + }, + "required": [ + "product_id", + "state", + "suggested", + "activation_url", + "quota_remaining" + ], + "type": "object" +}
- Changed
getCheckoutLink2 fields changed- added
Input schema / properties / orderId / descriptionAdded value: +"The uuid of the dispatched, not-yet-paid order." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "checkout_url": { + "type": "string" + }, + "order_id": { + "type": "string" + } + }, + "required": [ + "order_id", + "checkout_url" + ], + "type": "object" +}
- Added
getMarketplaceInfo - Changed
getOrderStatus3 fields changed- added
Input schema / properties / currency / descriptionAdded value: +"ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products." - added
Input schema / properties / orderId / descriptionAdded value: +"The order's uuid." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "carrier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "closed": { + "type": "boolean" + }, + "completed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dispatched": { + "type": "boolean" + }, + "order_id": { + "type": "string" + }, + "paid": { + "type": "boolean" + }, + "received": { + "type": "boolean" + }, + "rejected": { + "type": "boolean" + }, + "reserved": { + "type": "boolean" + }, + "total_price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + "tracking_number": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "order_id", + "reserved", + "dispatched", + "paid", + "received", + "rejected", + "closed", + "carrier", + "tracking_number", + "total_price", + "created_at", + "completed_at" + ], + "type": "object" +}
- Changed
getProduct3 fields changed- added
Input schema / properties / currency / descriptionAdded value: +"ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products." - added
Input schema / properties / productId / descriptionAdded value: +"The product listing's uuid." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "attributes": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "auction_ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "category": { + "additionalProperties": false, + "properties": { + "id": { + "type": "number" + }, + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + } + }, + "required": [ + "id", + "key", + "name_en" + ], + "type": "object" + }, + "condition": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "required": [ + "value", + "key", + "name_en" + ], + "type": "object" + }, + "converted_price": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": "string" + }, + "guarantee": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "image_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "image_urls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "listing_type": { + "enum": [ + "fixed_price", + "auction" + ], + "type": "string" + }, + "min_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "offers_enabled": { + "type": "boolean" + }, + "price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + "quantity_available": { + "type": "number" + }, + "seller": { + "additionalProperties": false, + "properties": { + "accepted_payment_methods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "accepted_shipment_methods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "alias": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "avatar_url": { + "type": "string" + }, + "city": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "is_verified": { + "type": "boolean" + }, + "region_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stripe_connect_active": { + "type": "boolean" + } + }, + "required": [ + "id", + "alias", + "is_verified", + "country_code", + "region_code", + "avatar_url", + "city", + "stripe_connect_active", + "accepted_payment_methods", + "accepted_shipment_methods" + ], + "type": "object" + }, + "semantic_profile": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "shipment_prices": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "category", + "condition", + "price", + "converted_price", + "listing_type", + "auction_ends_at", + "quantity_available", + "image_url", + "seller", + "url", + "created_at", + "unit", + "guarantee", + "min_price", + "offers_enabled", + "attributes", + "semantic_profile", + "image_urls", + "shipment_prices" + ], + "type": "object" +}
- Changed
getProductQuestions2 fields changed- added
Input schema / properties / productId / descriptionAdded value: +"The product listing's uuid." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "questions": { + "items": { + "additionalProperties": false, + "properties": { + "answer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "answered_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "number" + }, + "message": { + "type": "string" + }, + "product_id": { + "type": "string" + }, + "questioner_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "product_id", + "message", + "answer", + "created_at", + "answered_at" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "questions" + ], + "type": "object" +}
- Changed
getProductReviews2 fields changed- added
Input schema / properties / productId / descriptionAdded value: +"The product listing's uuid." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "avg_rating": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "review_count": { + "type": "number" + }, + "reviews": { + "items": { + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "id": { + "type": "number" + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rating": { + "type": "number" + }, + "reviewer_name": { + "type": "string" + } + }, + "required": [ + "id", + "rating", + "message", + "reviewer_name", + "created_at" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "reviews", + "avg_rating", + "review_count" + ], + "type": "object" +}
- Added
getSeller - Changed
getSellerStatus1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "ai_credits_remaining": { + "type": "number" + }, + "can_create_auctions": { + "type": "boolean" + }, + "can_create_products": { + "type": "boolean" + }, + "has_payment_method": { + "type": "boolean" + }, + "has_shipment_method": { + "type": "boolean" + }, + "max_images": { + "type": "number" + }, + "max_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "max_products": { + "type": "number" + } + }, + "required": [ + "can_create_products", + "max_products", + "can_create_auctions", + "has_payment_method", + "has_shipment_method", + "max_images", + "max_price", + "ai_credits_remaining" + ], + "type": "object" +}
- Changed
makeOffer4 fields changed- changed
Input schema / properties / currency_code / descriptionPrevious value: -"Defaults to the product's own listing currency if omitted."New value: +"ISO 4217 code for offered_price. Defaults to the product's own listing currency if omitted." - added
Input schema / properties / offered_price / descriptionAdded value: +"The price the buyer offers, in `currency_code` (or the listing's own currency if that is omitted)." - added
Input schema / properties / product_id / descriptionAdded value: +"The uuid of the fixed-price listing to bid on." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "offer_id": { + "type": "string" + }, + "offered_price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + "product_id": { + "type": "string" + }, + "state": { + "const": "pending", + "type": "string" + } + }, + "required": [ + "offer_id", + "product_id", + "state", + "offered_price", + "created_at" + ], + "type": "object" +}
- Changed
placeOrder8 fields changed- added
Input schema / properties / address_key / descriptionAdded value: +"Key of one of the buyer's own saved addresses (never a free-text address). Required unless shipment_method is `personal`; defaults to the buyer's active address when omitted." - added
Input schema / properties / comment / descriptionAdded value: +"Optional note to the seller, attached to the order chat." - added
Input schema / properties / confirm / descriptionAdded value: +"Human-confirmation gate. Must be true, and only set it after the user has explicitly approved this specific order having seen the payment-safety text. An agent must never set this on its own initiative." - added
Input schema / properties / payment_method / descriptionAdded value: +"How buyer and seller will settle payment off-platform. Must be one the seller accepts (see get_product.seller.accepted_payment_methods)." - added
Input schema / properties / product_id / descriptionAdded value: +"The uuid of the fixed-price listing to reserve." - added
Input schema / properties / quantity / descriptionAdded value: +"Units to reserve (1-20, default 1)." - added
Input schema / properties / shipment_method / descriptionAdded value: +"How the item will be handed over. Must be one the seller accepts (see get_product.seller.accepted_shipment_methods)." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_method": { + "enum": [ + "cash", + "card", + "bank", + "paypal", + "stripe" + ], + "type": "string" + }, + "payment_safety": { + "additionalProperties": false, + "properties": { + "currency_mismatch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dispute_fallback": { + "type": "string" + }, + "generic": { + "type": "string" + }, + "item_not_as_described": { + "type": "string" + }, + "method": { + "type": "string" + } + }, + "required": [ + "generic", + "method", + "currency_mismatch", + "item_not_as_described", + "dispute_fallback" + ], + "type": "object" + }, + "product": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "url" + ], + "type": "object" + }, + "quantity": { + "type": "number" + }, + "shipment_method": { + "enum": [ + "personal", + "courier", + "postal", + "locker" + ], + "type": "string" + }, + "state": { + "const": "reserved", + "type": "string" + }, + "total_price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + } + }, + "required": [ + "order_id", + "state", + "product", + "quantity", + "total_price", + "payment_method", + "shipment_method", + "payment_safety", + "created_at" + ], + "type": "object" +}
- Changed
rejectOrder2 fields changed- added
Input schema / properties / orderId / descriptionAdded value: +"The uuid of the RESERVED order to reject." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "order_id": { + "type": "string" + }, + "state": { + "const": "rejected", + "type": "string" + } + }, + "required": [ + "order_id", + "state" + ], + "type": "object" +}
- Changed
respondToOffer4 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Seller actions on a pending offer: accept | reject | counter (counter_price required). Buyer action on a countered offer: accept_counter." - added
Input schema / properties / counter_price / descriptionAdded value: +"The seller's counter-offer price. Required when action is `counter`." - added
Input schema / properties / offer_id / descriptionAdded value: +"The uuid of the offer to respond to." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "offer_id": { + "type": "string" + }, + "state": { + "enum": [ + "accepted", + "rejected", + "countered", + "buyer_accepted" + ], + "type": "string" + } + }, + "required": [ + "offer_id", + "state" + ], + "type": "object" +}
- Changed
searchProducts11 fields changed- added
Input schema / properties / category / descriptionAdded value: +"Numeric top-level category id (see getMarketplaceInfo.categories). Subcategory ids are accepted but rolled up to their top-level parent in the response." - added
Input schema / properties / currency / descriptionAdded value: +"ISO 4217 code used for price filtering and each result's converted_price. Defaults to USD. Must be one of getMarketplaceInfo.currencies." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque pagination cursor from a previous response's next_cursor." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results to return per page (1-50, default 20)." - added
Input schema / properties / location / descriptionAdded value: +"Comma-separated seller-location filters. Each entry is a 2-letter ISO country code (\"HU\") or a \"COUNTRY:REGION\" pair (\"HU:BU\"). Reflects the seller's profile location, not a per-listing field." - added
Input schema / properties / price_max / descriptionAdded value: +"Maximum price in the resolved `currency`." - added
Input schema / properties / price_min / descriptionAdded value: +"Minimum price in the resolved `currency` (converted price, not the seller's native currency)." - added
Input schema / properties / q / descriptionAdded value: +"Free-text search across the listing's canonical name and description." - added
Input schema / properties / seller_idAdded value: +{ + "description": "Restrict results to one seller's listings. The uuid is the seller.id from any search or getProduct result.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +} - added
Input schema / properties / sort / descriptionAdded value: +"Result ordering. Never influenced by paid placement." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_cursor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "products": { + "items": { + "additionalProperties": false, + "properties": { + "auction_ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "category": { + "additionalProperties": false, + "properties": { + "id": { + "type": "number" + }, + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + } + }, + "required": [ + "id", + "key", + "name_en" + ], + "type": "object" + }, + "condition": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "name_en": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "required": [ + "value", + "key", + "name_en" + ], + "type": "object" + }, + "converted_price": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "listing_type": { + "enum": [ + "fixed_price", + "auction" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "price": { + "additionalProperties": false, + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + }, + "quantity_available": { + "type": "number" + }, + "seller": { + "additionalProperties": false, + "properties": { + "alias": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "is_verified": { + "type": "boolean" + }, + "region_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "alias", + "is_verified", + "country_code", + "region_code" + ], + "type": "object" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "category", + "condition", + "price", + "converted_price", + "listing_type", + "auction_ends_at", + "quantity_available", + "image_url", + "seller", + "url", + "created_at" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "products", + "next_cursor", + "count" + ], + "type": "object" +}
8 tool updates
- Added
askProductQuestion - Added
getCheckoutLink - Added
getOrderStatus - Added
getProductQuestions - Added
getProductReviews - Added
makeOffer - Added
rejectOrder - Added
respondToOffer
1 tool update
- Changed
placeOrder1 field changed- added
Input schema / properties / currency / descriptionAdded value: +"Informational only, used solely to detect a currency mismatch worth surfacing to the buyer (payment_safety.currency_mismatch). Does NOT change what gets charged -- the order is always recorded and settled in the listing's own native currency regardless of this value."
2 tool updates
- Added
createProduct - Added
getSellerStatus
3 tool updates
- First observed
getProduct - First observed
placeOrder - First observed
searchProducts
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Federated listings from personal humanMCP servers. Search offers, trades by humans.
Search and browse global classifieds across 80 markets. No auth required for read-only access.
Read-only product discovery, merchant trust, shipping and returns for SVV-Schatzoekers.
GDPR-clean marketplace listings and prices from 18 European countries. No seller personal data.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceFederated marketplace that indexes listings from personal humanMCP servers, enabling search across offers, trades, and services without requiring accounts.-
- AlicenseAqualityBmaintenanceEnables AI agents to search, inspect, and purchase physical goods on an escrow-secured marketplace, including listing search, agent reputation checks, and offer creation.583MIT
- AlicenseAqualityAmaintenanceAgent-to-agent commerce over Bitcoin Lightning: buy, sell, list, and discover files, data, APIs, and compute on a public marketplace (or privately by offer id). Non-custodial, buyers pay sellers wallet-to-wallet and a verified payment preimage unlocks the result.627686MIT No Attribution
- AlicenseAqualityCmaintenanceEnables read-only search and retrieval of the public Reknihy.cz book catalog, including filtering, sorting, ISBN lookup, category browsing, and access to product details such as price, availability, and images.4ISC
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool is cleanly grouped by resource (marketplace, offers, orders, products, questions, reviews, sellers) and within a group every action is distinct. There is no real overlap between e.g. orders.place, orders.checkoutLink, and orders.status, or between offers.make and offers.respond.
Tool names follow a predictable resource.action pattern with lowercase verb-like second segments (offers.list, products.create, questions.ask). Minor deviations exist: orders.checkoutLink uses camelCase and sellers.listings is a noun rather than a verb, but the overall convention remains easy to infer.
18 tools sits in the 16-25 borderline-heavy range. The marketplace scope is broad enough that most tools feel justified, but the count is slightly above the ideal well-scoped band and could be seen as heavy for a single API server.
The server covers core marketplace browsing, product draft creation, order placement, offers, questions, and reviews well. However, there are notable lifecycle gaps: products can be created but not updated/deleted/activated via API, orders have no dispatch/confirm/receive actions, and offers have no cancel action, with several operations pushed to the web UI.