Escrova MCP
An official MCP server provided by Escrova that allows AI agents to search for products across multiple marketplaces (Amazon, eBay, Walmart, etc.), browse categories, view live prices, and read fees and terms. It is read-only and does not support purchasing, bidding, or selling.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.escrova.io/api/mcpWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to escrova.io ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for products across connected marketplaces
- Browse product categories and department directories
- Compare live prices and landed costs
- Read current fees and legal terms
Source and maintenance
Protocol and capabilities
- Server
- escrova 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
search_products — Search the connected marketplaces
Search products across the marketplaces Escrova can actually buy from today. Six sources are searchable: amazon, ebay, walmart, bestbuy, homedepot, wayfair, or "all". GET /api/products/search. No wallet and no signature. Send q, cat, or both; page and every selected filter are preserved together. A brands[].engineParam returned by get_category goes into engineParam here and is sent as the typed eBay aspect filter, while Google refinements use shoprs. The REST pagination and degraded-source metadata are returned unchanged. A search is one guess at what somebody meant and it spends a paid provider call; when you know roughly what department a thing is in, list_categories and get_category narrow further for less.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"maxLength": 300,
"description": "What to search for. Optional when cat is supplied."
},
"cat": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Department slug, category id, or <id>-<slug> returned by get_category."
},
"page": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"sort": {
"enum": [
"price_asc",
"price_desc"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1
},
"shoprs": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "A Google filter option whose engineParamType is shoprs."
},
"source": {
"enum": [
"amazon",
"ebay",
"walmart",
"bestbuy",
"homedepot",
"wayfair",
"all"
],
"type": "string"
},
"maxPrice": {
"type": "number",
"minimum": 0
},
"minPrice": {
"type": "number",
"minimum": 0
},
"minRating": {
"type": "number",
"maximum": 5,
"minimum": 0
},
"engineParam": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "A brands[].engineParam from get_category; sent only as ebayAspectFilter."
},
"freeShipping": {
"type": "boolean"
},
"ebayCategoryId": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"ebayAspectFilter": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"ebayConditionIds": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_fees — What Escrova charges
The current fee schedule and delivery rates, so a total can be explained before anyone pays it. GET /api/config/fees. No wallet and no signature.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_prices — Live coin prices
Current USD prices of the coins shown on Escrova. GET /api/prices. No wallet and no signature. Checkout on this deployment takes USDC only.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_terms — The terms to accept, with their version and hash
Returns the current Terms of Service and Privacy Policy version and document hash. These are the exact values accept_terms will record; they are read server-side and never taken from your request. GET /api/agent/legal/terms. No wallet and no signature.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_categories — The sixteen department doors
Start a shopping task here instead of guessing search words. Returns the sixteen departments, each with the slug get_category takes and a picture. A keyword search is one guess at what somebody meant; a department is the shop's own shelf, and get_category on one hands you the brands, the filters and a page of listings in a single call. GET /api/agent/browse/categories. No wallet and no signature. Served from cache; a department whose picture has gone cold costs one call against the catalogue quota this site shares with its shoppers.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_category — Read one shelf: children, brands, filters and a deals rail
Narrow towards a purchase without inventing keywords. One call returns children[] and childrenDeep[] with estimated counts, brands[] each with an engineParam you can pass straight back to search_products.engineParam, the shop's own facets[], aspectTiles[], siblings[], related[] and a deals[] rail. GET /api/agent/browse/tree/<slug>, or GET /api/agent/browse/tree/<slug>/<nodeId> for any category under a department. No wallet and no signature. contentAt is when those deal prices were read: send it as a candidate's priceAt to compare_landed_cost, which is the shortlist this call is meant to fill. Counts are estimates and countScope says so. A shelf already read answers from cache; a cold one costs one call against the catalogue quota shared with shoppers, so read the shelf you want rather than walking the tree.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The `slug` field of a department from list_categories."
},
"nodeId": {
"type": "string",
"description": "A category id under that department, from children[].id or childrenDeep[].id. Omit for the department itself."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_directory — The whole shop in one payload
Every department, the groups under it and the links under those, for picking a shelf in one read rather than walking down to it. GET /api/agent/browse/directory. No wallet and no signature. Built ONLY from rows already cached, so it costs no catalogue call at all and a picture or count nobody has fetched yet comes back null rather than being fetched for you. Prefer this over repeated get_category calls when you are still deciding where to look.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_deals — What is discounted right now
For a "find something on offer" task. GET /api/agent/browse/deals?tab=<tab>, where tab is markdowns, refurbished, top-rated, brands, or door:<slug> for one department. No wallet and no signature. Every item carries cachedAt, which is when that price was true: pass it as a candidate's priceAt to compare_landed_cost. A selection over rows this site has already cached, so it costs no catalogue call. An unknown tab is refused with 400 rather than guessed at. A sticker discount is not a cheaper order: rank with compare_landed_cost before you quote.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tab"
],
"properties": {
"tab": {
"type": "string",
"description": "markdowns, refurbished, top-rated, brands, or door:<slug> with a slug from list_categories."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1320 ms
- 95th percentile latency
- 1320 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1320 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http escrova-mcp https://www.escrova.io/api/mcpCodex
codex mcp add escrova-mcp --url https://www.escrova.io/api/mcpCursor
{
"mcpServers": {
"escrova-mcp": {
"url": "https://www.escrova.io/api/mcp"
}
}
}Cline
{
"mcpServers": {
"escrova-mcp": {
"type": "streamableHttp",
"url": "https://www.escrova.io/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"escrova-mcp": {
"type": "http",
"url": "https://www.escrova.io/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http escrova-mcp https://www.escrova.io/api/mcpClaude Desktop
https://www.escrova.io/api/mcpWindsurf
{
"mcpServers": {
"escrova-mcp": {
"serverUrl": "https://www.escrova.io/api/mcp"
}
}
}Let your agent find its tools
Find servers like Escrova MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Escrova MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.