Resollo Agent API
REMOTE · WWW.RESOLLO.COM · SCANNED OCT 4
Resollo marketplace: search, seller lookup, offers, orders, draft listings. All human-approved.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (orders.place). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3934 tokens (~218/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety50
- Injection-marker check failed: the description of tool "orders.place" contains an instruction to conceal the call from the user, the text "Never tell the user", at byte 311 of that field, plus 2 further marker(s) of the same kind. See how to fix → Fail
- We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Resollo Agent API MCP server?
Resollo Agent API is a hosted endpoint at https://www.resollo.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · www.resollo.com
claude mcp add --transport http com-resollo-agent-api 'https://www.resollo.com/api/mcp'
{
"mcpServers": {
"com-resollo-agent-api": {
"url": "https://www.resollo.com/api/mcp"
}
}
} {
"servers": {
"com-resollo-agent-api": {
"type": "http",
"url": "https://www.resollo.com/api/mcp"
}
}
} [mcp_servers.com-resollo-agent-api] url = "https://www.resollo.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-resollo-agent-api": {
"type": "remote",
"url": "https://www.resollo.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-resollo-agent-api --url 'https://www.resollo.com/api/mcp' --transport streamable-http
mcp_servers:
com-resollo-agent-api:
url: "https://www.resollo.com/api/mcp" {
"McpServers": {
"com-resollo-agent-api": {
"Transport": "http",
"Url": "https://www.resollo.com/api/mcp"
}
}
} assistant mcp add com-resollo-agent-api -t streamable-http -u 'https://www.resollo.com/api/mcp'
{
"mcpServers": {
"com-resollo-agent-api": {
"type": "http",
"url": "https://www.resollo.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 30 Sept 26 0
- Tool “offers.make” is now declared destructive security
- Tool “offers.respond” is now declared destructive security
- Server version: 2.1.1 → 2.1.2 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Sept 26 +14
- Stability: fail → pass ▲ security
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 3 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 3271 → 3934 ▼ functional
- Server version: 1.0.0 → 2.1.1 functional
- New tool “offers.list” functional
- New tool “orders.list” functional
- New tool “sellers.listings” functional
- 27 Aug 26 0
- Stability: 0.10 → fail ▼ security
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “askProductQuestion” was removed ▼ security
- Tool “createProduct” was removed ▼ security
- Tool “getCheckoutLink” was removed ▼ security
- Tool “getMarketplaceInfo” was removed ▼ security
- Tool “getOrderStatus” was removed ▼ security
- Tool “getProduct” was removed ▼ security
- Tool “getProductQuestions” was removed ▼ security
- Tool “getProductReviews” was removed ▼ security
- Tool “getSeller” was removed ▼ security
- Tool “getSellerStatus” was removed ▼ security
- Tool “makeOffer” was removed ▼ security
- Tool “placeOrder” was removed ▼ security
- Tool “rejectOrder” was removed ▼ security
- Tool “respondToOffer” was removed ▼ security
- Tool “searchProducts” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- New tool “orders.place”, which the server declares destructive security
- New tool “orders.reject”, which the server declares destructive security
- Schema quality: 173 → 218 ▼ functional
- Tool coverage: 5% → 100% ▲ functional
- Tool “askProductQuestion” now declares an output schema ▲ functional
- Tool “createProduct” now declares an output schema ▲ functional
- Tool “getCheckoutLink” now declares an output schema ▲ functional
- Tool “getOrderStatus” now declares an output schema ▲ functional
- Tool “getProduct” now declares an output schema ▲ functional
- Tool “getProductQuestions” now declares an output schema ▲ functional
- Tool “getProductReviews” now declares an output schema ▲ functional
- Tool “getSellerStatus” now declares an output schema ▲ functional
- Tool “makeOffer” now declares an output schema ▲ functional
- Tool “placeOrder” now declares an output schema ▲ functional
- Tool “rejectOrder” now declares an output schema ▲ functional
- Tool “respondToOffer” now declares an output schema ▲ functional
- Tool “searchProducts” now declares an output schema ▲ functional
- First check of Tool coverage: 100 functional
- Schema quality: good → excellent functional
- New tool “marketplace.info” functional
- New tool “offers.make” functional
- New tool “offers.respond” functional
- New tool “orders.checkoutLink” functional
- New tool “orders.status” functional
- New tool “products.create” functional
- New tool “products.get” functional
- New tool “products.search” functional
- New tool “questions.ask” functional
- New tool “questions.list” functional
- New tool “reviews.list” functional
- New tool “sellers.get” functional
- New tool “sellers.status” functional
- New tool “getMarketplaceInfo” functional
- New tool “getSeller” functional
- “searchProducts” added an optional parameter “seller_id” cosmetic
- “askProductQuestion” reworded the description of “product_id” cosmetic
- “askProductQuestion” reworded the description of “question” cosmetic
- “createProduct” reworded the description of “category_id” cosmetic
- “createProduct” reworded the description of “condition” cosmetic
- “createProduct” reworded the description of “description” cosmetic
- “createProduct” reworded the description of “guarantee” cosmetic
- “createProduct” reworded the description of “images” cosmetic
- “createProduct” reworded the description of “is_business_listing” cosmetic
- “createProduct” reworded the description of “name” cosmetic
- “createProduct” reworded the description of “offers_enabled” cosmetic
- “createProduct” reworded the description of “price” cosmetic
- “createProduct” reworded the description of “quantity” cosmetic
- “createProduct” reworded the description of “unit” cosmetic
- “getCheckoutLink” reworded the description of “orderId” cosmetic
- “getOrderStatus” reworded the description of “currency” cosmetic
- “getOrderStatus” reworded the description of “orderId” cosmetic
- “getProduct” reworded the description of “currency” cosmetic
- “getProduct” reworded the description of “productId” cosmetic
- “getProductQuestions” reworded the description of “productId” cosmetic
- “getProductReviews” reworded the description of “productId” cosmetic
- “makeOffer” reworded the description of “currency_code” cosmetic
- “makeOffer” reworded the description of “offered_price” cosmetic
- “makeOffer” reworded the description of “product_id” cosmetic
- “placeOrder” reworded the description of “address_key” cosmetic
- “placeOrder” reworded the description of “comment” cosmetic
- “placeOrder” reworded the description of “confirm” cosmetic
- “placeOrder” reworded the description of “payment_method” cosmetic
- “placeOrder” reworded the description of “product_id” cosmetic
- “placeOrder” reworded the description of “quantity” cosmetic
- “placeOrder” reworded the description of “shipment_method” cosmetic
- “rejectOrder” reworded the description of “orderId” cosmetic
- “respondToOffer” reworded the description of “action” cosmetic
- “respondToOffer” reworded the description of “counter_price” cosmetic
- “respondToOffer” reworded the description of “offer_id” cosmetic
- “searchProducts” reworded the description of “category” cosmetic
- “searchProducts” reworded the description of “currency” cosmetic
- “searchProducts” reworded the description of “cursor” cosmetic
- “searchProducts” reworded the description of “limit” cosmetic
- “searchProducts” reworded the description of “location” cosmetic
- “searchProducts” reworded the description of “price_max” cosmetic
- “searchProducts” reworded the description of “price_min” cosmetic
- “searchProducts” reworded the description of “q” cosmetic
- “searchProducts” reworded the description of “sort” cosmetic
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “rejectOrder”, which the server declares destructive security
- Schema quality: 233 → 173 ▲ functional
- New tool “askProductQuestion” functional
- New tool “getCheckoutLink” functional
- New tool “getOrderStatus” functional
- New tool “getProductQuestions” functional
- New tool “getProductReviews” functional
- New tool “makeOffer” functional
- New tool “respondToOffer” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 7 Oct 2026 · Probed https://www.resollo.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.resollo.com | CN=YR2,O=Let's Encrypt,C=US | 22 Aug 2026 | 20 Nov 2026 | RSA 2048 | SHA256-RSA | 5bf61f9aba468cec58542d2eae5de573706 |
| SANs: *.resollo.com, resollo.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of www.resollo.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| resollo.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://bzrcdn.openai.com 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://*.supabase.co https://*.googleusercontent.com; font-src 'self' data:; worker-src blob: 'self'; frame-src 'self'; connect-src 'self' https://*.supabase.co wss://*.supabase.co https://*.openai.com; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(self), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://www.resollo.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://www.resollo.com/api/mcp | HTTPS enforced | 308 | https://www.resollo.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
marketplace.info Get Resollo marketplace taxonomy and metadata ~118
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | – |
| conditions | array | yes | – |
| currencies | array | yes | – |
| default_currency | string | yes | – |
| limits | object | yes | – |
| payment_methods | array | yes | – |
| policy_urls | object | yes | – |
| shipment_methods | array | yes | – |
| sort_options | array | yes | – |
No examples provided.
offers.list List the authenticated user's own Resollo offers ~191
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of most-recent offers to return (1-50, default 20). |
| role | string | yes | Whose side to list from: 'buyer' returns offers you sent, 'seller' returns offers received on your listings. |
| state | string | – | Optional filter to a single offer state. When omitted, offers in every state are returned. |
| Name | Type | Req | Description |
|---|---|---|---|
| offers | array | yes | – |
No examples provided.
offers.make Make an offer (bargain) on a Resollo product ~207
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| currency_code | string | – | ISO 4217 code for offered_price. Defaults to the product's own listing currency if omitted. |
| offered_price | number | yes | The price the buyer offers, in `currency_code` (or the listing's own currency if that is omitted). |
| product_id | string | yes | The uuid of the fixed-price listing to bid on. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | yes | – |
| offer_id | string | yes | – |
| offered_price | object | yes | – |
| product_id | string | yes | – |
| state | string | yes | – |
No examples provided.
offers.respond Respond to a Resollo offer ~215
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Seller actions on a pending offer: accept | reject | counter (counter_price required). Buyer action on a countered offer: accept_counter. |
| counter_price | number | – | The seller's counter-offer price. Required when action is `counter`. |
| offer_id | string | yes | The uuid of the offer to respond to. |
| Name | Type | Req | Description |
|---|---|---|---|
| offer_id | string | yes | – |
| state | string | yes | – |
No examples provided.
orders.checkoutLink Get a Stripe checkout link for a dispatched Resollo order ~180
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| orderId | string | yes | The uuid of the dispatched, not-yet-paid order. |
| Name | Type | Req | Description |
|---|---|---|---|
| checkout_url | string | yes | – |
| order_id | string | yes | – |
No examples provided.
orders.list List the authenticated user's own Resollo orders ~203
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. |
| limit | integer | – | Maximum number of most-recent orders to return (1-50, default 20). |
| role | string | yes | Whose side to list from: 'buyer' returns orders you placed, 'seller' returns orders on your listings. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | – | yes | – |
| orders | array | yes | – |
No examples provided.
orders.place Reserve a Resollo product ~433
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 <agent api key>' 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 | Type | Req | Description |
|---|---|---|---|
| address_key | string | – | 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. |
| comment | string | – | Optional note to the seller, attached to the order chat. |
| confirm | boolean | 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 initiati… |
| currency | string | – | 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 se… |
| payment_method | string | yes | How buyer and seller will settle payment off-platform. Must be one the seller accepts (see get_product.seller.accepted_payment_methods). |
| product_id | string | yes | The uuid of the fixed-price listing to reserve. |
| quantity | integer | – | Units to reserve (1-20, default 1). |
| shipment_method | string | yes | How the item will be handed over. Must be one the seller accepts (see get_product.seller.accepted_shipment_methods). |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | yes | – |
| order_id | string | yes | – |
| payment_method | string | yes | – |
| payment_safety | object | yes | – |
| product | object | yes | – |
| quantity | number | yes | – |
| shipment_method | string | yes | – |
| state | string | yes | – |
| total_price | object | yes | – |
No examples provided.
orders.reject Reject a reserved Resollo order ~115
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| orderId | string | yes | The uuid of the RESERVED order to reject. |
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | – |
| state | string | yes | – |
No examples provided.
orders.status Get the status of a Resollo order ~132
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. |
| orderId | string | yes | The order's uuid. |
| Name | Type | Req | Description |
|---|---|---|---|
| carrier | – | yes | – |
| closed | boolean | yes | – |
| completed_at | – | yes | – |
| created_at | – | yes | – |
| dispatched | boolean | yes | – |
| order_id | string | yes | – |
| paid | boolean | yes | – |
| received | boolean | yes | – |
| rejected | boolean | yes | – |
| reserved | boolean | yes | – |
| total_price | object | yes | – |
| tracking_number | – | yes | – |
No examples provided.
products.create Create a Resollo product listing from photos ~438
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 <agent api key>' header -- generate a key from the Resollo profile page; the resulting listing is attributed to that key's user.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | – | Optional override for the AI-chosen category id (see getMarketplaceInfo.categories). |
| condition | integer | – | Optional override for the AI-chosen condition code (see getMarketplaceInfo.conditions). |
| description | string | – | Optional override for the AI-generated description. |
| guarantee | string | – | Optional warranty / guarantee text. |
| images | array | yes | 1-5 real photo files of the item. Resollo's own AI generates the listing content from these. |
| is_business_listing | boolean | – | Whether this is a business (vs. private) listing. |
| name | string | – | Optional override for the AI-generated title. |
| offers_enabled | boolean | – | Whether buyers may send Make-an-Offer bids on the listing. |
| price | number | – | Optional fixed price override. When omitted, Resollo's AI price-suggestion sets it. |
| quantity | integer | – | Units available (default 1). |
| unit | string | – | Unit of sale (default "piece"). |
| Name | Type | Req | Description |
|---|---|---|---|
| activation_url | string | yes | – |
| product_id | string | yes | – |
| quota_remaining | object | yes | – |
| state | string | yes | – |
| suggested | object | yes | – |
No examples provided.
products.get Get Resollo product details ~145
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 | Type | Req | Description |
|---|---|---|---|
| currency | string | – | ISO 4217 code for the returned price fields. Defaults to USD. Same semantics as in search_products. |
| productId | string | yes | The product listing's uuid. |
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | – | yes | – |
| auction_ends_at | – | yes | – |
| category | object | yes | – |
| condition | object | yes | – |
| converted_price | – | yes | – |
| created_at | – | yes | – |
| description | string | yes | – |
| guarantee | – | yes | – |
| id | string | yes | – |
| image_url | – | yes | – |
| image_urls | array | yes | – |
| listing_type | string | yes | – |
| min_price | – | yes | – |
| name | string | yes | – |
| offers_enabled | boolean | yes | – |
| price | object | yes | – |
| quantity_available | number | yes | – |
| seller | object | yes | – |
| semantic_profile | – | yes | – |
| shipment_prices | – | yes | – |
| unit | – | yes | – |
| url | string | yes | – |
No examples provided.
products.search Search Resollo products ~414
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 | Type | Req | Description |
|---|---|---|---|
| category | integer | – | Numeric top-level category id (see getMarketplaceInfo.categories). Subcategory ids are accepted but rolled up to their top-level parent in the response. |
| currency | string | – | ISO 4217 code used for price filtering and each result's converted_price. Defaults to USD. Must be one of getMarketplaceInfo.currencies. |
| cursor | string | – | Opaque pagination cursor from a previous response's next_cursor. |
| limit | integer | – | Maximum number of results to return per page (1-50, default 20). |
| location | string | – | 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 | number | – | Maximum price in the resolved `currency`. |
| price_min | number | – | Minimum price in the resolved `currency` (converted price, not the seller's native currency). |
| q | string | – | Free-text search across the listing's canonical name and description. |
| seller_id | string | – | Restrict results to one seller's listings. The uuid is the seller.id from any search or getProduct result. |
| sort | string | – | Result ordering. Never influenced by paid placement. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | – | yes | – |
| next_cursor | – | yes | – |
| products | array | yes | – |
No examples provided.
questions.ask Ask a question about a Resollo product ~126
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | The uuid of the product to ask about. |
| question | string | yes | The public question text (1-500 characters). |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | – | yes | – |
| answered_at | – | yes | – |
| created_at | string | yes | – |
| id | number | yes | – |
| message | string | yes | – |
| product_id | string | yes | – |
| questioner_name | – | – | – |
No examples provided.
questions.list Get a Resollo product's questions and answers ~80
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 | Type | Req | Description |
|---|---|---|---|
| productId | string | yes | The product listing's uuid. |
| Name | Type | Req | Description |
|---|---|---|---|
| questions | array | yes | – |
No examples provided.
reviews.list Get a Resollo product's reviews ~90
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 | Type | Req | Description |
|---|---|---|---|
| productId | string | yes | The product listing's uuid. |
| Name | Type | Req | Description |
|---|---|---|---|
| avg_rating | – | yes | – |
| review_count | number | yes | – |
| reviews | array | yes | – |
No examples provided.
sellers.get Get a Resollo seller's public profile ~167
Returns a seller's public profile -- the same information the web /user/<id> 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 | Type | Req | Description |
|---|---|---|---|
| sellerId | string | yes | The seller's uuid -- the seller.id from any search or getProduct result. |
| Name | Type | Req | Description |
|---|---|---|---|
| about | – | yes | – |
| accepted_payment_methods | array | yes | – |
| accepted_shipment_methods | array | yes | – |
| active_listing_count | number | yes | – |
| avatar_url | string | yes | – |
| city | – | yes | – |
| country_code | – | yes | – |
| feedback_count | number | yes | – |
| follower_count | number | yes | – |
| id | string | yes | – |
| is_verified | boolean | yes | – |
| member_since | – | yes | – |
| name | string | yes | – |
| profile_url | string | yes | – |
| rating | – | yes | – |
| region_code | – | yes | – |
| shop_url | string | yes | – |
| sold_count | number | yes | – |
| stripe_connect_active | boolean | yes | – |
No examples provided.
sellers.listings List the authenticated seller's own listings (any state) ~213
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 <agent api key>' header.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of most-recent listings to return (1-100, default 50). |
| state | string | – | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | yes | – |
| listings | array | yes | – |
No examples provided.
sellers.status Get the authenticated seller's current listing status ~117
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_credits_remaining | number | yes | – |
| can_create_auctions | boolean | yes | – |
| can_create_products | boolean | yes | – |
| has_payment_method | boolean | yes | – |
| has_shipment_method | boolean | yes | – |
| max_images | number | yes | – |
| max_price | – | yes | – |
| max_products | number | yes | – |
No examples provided.
What is the Resollo Agent API MCP server?
Resollo Agent API is an MCP server listed in the public MCP registry as com.resollo/agent-api. Resollo marketplace: search, seller lookup, offers, orders, draft listings. All human-approved. This page covers its hosted endpoint (https://www.resollo.com/api/mcp).
Is the Resollo Agent API MCP server safe to use?
Resollo Agent API scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Resollo Agent API MCP server expose?
Resollo Agent API exposes 18 tools: products.search, products.get, orders.place, products.create, sellers.status, and 13 more. Their descriptions and schemas cost roughly 3,584 tokens of context every time the server is loaded.
Does the Resollo Agent API MCP server require authentication?
No. We connected to Resollo Agent API without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Resollo Agent API MCP server still maintained?
Resollo Agent API is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.