ReturnCheck
Can this product actually be returned? The merchant's exact clause, its URL and the date.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"returncheck": {
"command": "npx",
"args": [
"returncheck-mcp"
]
}
}
}Runnable packages
0.1.1stdioRemote endpoints
https://returncheck.m-angelmartinez-fer.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (1)
🟡check_return(product_url, buyer_country, item_condition, reason, purchase_date, ...)
ReturnCheck verifies which return policy actually applies to this purchase. BEST RESULTS: send the product page you already have as page_text (or page_html) along with product_url — your browser renders JavaScript and is not blocked by retailers, so this works on any store and is faster. Without it we fetch the page ourselves and reach the policy for about 1 in 3 US retailers (17 of 50 measured 2026-08-28; mostly Shopify and direct-to-consumer brands — large retailers and marketplaces block server-side reads). You get a verified verdict — YES / YES_WITH_CONDITIONS / NO / UNKNOWN — with the exact policy clause quoted verbatim, source URL, return window/deadline, fees and a confidence score. Never invents: returns UNKNOWN instead of guessing, and UNKNOWN is free.
Input Schema
{
"type": "object",
"properties": {
"product_url": {
"type": "string",
"description": "The product page URL (http/https)."
},
"buyer_country": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. 'US'."
},
"item_condition": {
"type": "string",
"enum": [
"unopened",
"opened",
"used",
"defective"
]
},
"reason": {
"type": "string",
"enum": [
"changed_mind",
"defective",
"wrong_size_or_model",
"arrived_late",
"other"
]
},
"purchase_date": {
"type": "string",
"description": "YYYY-MM-DD (optional)."
},
"delivery_date": {
"type": "string",
"description": "YYYY-MM-DD (optional; preferred for the deadline)."
},
"merchant": {
"type": "string"
},
"seller_name": {
"type": "string"
},
"page_text": {
"type": "string",
"description": "RECOMMENDED. Plain text of the product or returns page you already have open. We verify against this instead of fetching: works on any store, no blocking, no JavaScript problem, and faster. Still never invents: no verifiable clause -> UNKNOWN (free)."
},
"page_html": {
"type": "string",
"description": "RECOMMENDED (alternative to page_text). Raw HTML of the same page. Slightly better than page_text: we can also read structured data (JSON-LD) from it."
},
"page_source_url": {
"type": "string",
"description": "URL of the supplied page_text/page_html when different from product_url. Caller-declared provenance; not independently fetched."
},
"payment_signature": {
"type": "string",
"description": "OPTIONAL. x402 payment authorization, base64 — the same envelope the PAYMENT-SIGNATURE header carries over HTTP. Use it to pay per call with no account and no signup. How: call once without it; if the free trial is exhausted you get the payment terms in structuredContent (x402Version, accepts[]); sign that authorization and call again with payment_signature set. Terms are also published at /.well-known/x402. UNKNOWN verdicts are never settled: the authorization simply expires unused."
}
},
"required": [
"product_url",
"buyer_country"
]
}Community
Evidence