{"apiVersion":"v1","directorySlug":"mercantry-mcp-9d2a5e5f9f","title":"Mercantry","description":"Mercantry is an open commerce registry for AI agents — structured merchant data, honest signals, and real-world booking fulfillment.","pageUrl":"https://www.mcpbundles.com/skills/mercantry-mcp-9d2a5e5f9f","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mercantry.org/mcp","hostedMcpUrl":null,"toolCount":9,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"org.mercantry/mercantry-mcp-9d2a5e5f9f","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"search_merchants","description":"Filter-based search over the restaurant registry (coverage cities + timezones in get_registry_meta). NOT ranked: results come back in deterministic order (merchant_id ASC by default; distance ASC when lat/lng given and order_by=\"distance\"). Returns compact records with pagination. Use get_merchant for the full signal dump on a specific merchant. All filters are optional and combinable.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"limit":{"type":"integer","maximum":100,"minimum":1},"offset":{"type":"integer","minimum":0},"open_at":{"type":"string"},"sandbox":{"type":"boolean"},"order_by":{"enum":["merchant_id","distance"],"type":"string"},"radius_km":{"type":"number"},"party_size":{"type":"integer","minimum":1},"cuisine_tags":{"type":"array","items":{"type":"string"}},"neighborhood":{"type":"string"},"bookable_only":{"type":"boolean"},"attribute_tags":{"type":"array","items":{"type":"string"}},"price_band_max":{"type":"integer","maximum":4,"minimum":1},"price_band_min":{"type":"integer","maximum":4,"minimum":1}},"additionalProperties":false},"title":"Search merchants","logicalName":"search_merchants","displayName":"Search merchants","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_merchant","description":"Every field the registry holds on one merchant: schema fields, structured hours, raw feedback history, platform-observed operational stats, and per-field provenance with timestamps. Maximal data, zero opinion — the registry never scores or ranks.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["merchant_id"],"properties":{"merchant_id":{"type":"string"}},"additionalProperties":false},"title":"Get merchant (full signal dump)","logicalName":"get_merchant","displayName":"Get merchant (full signal dump)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_availability","description":"V1 does NOT hold live table availability — availability is checked on the phone call at booking time. This tool returns the merchant's reservation policy, structured hours, and holiday exceptions so you can pick a plausible time before calling place_booking.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["merchant_id"],"properties":{"merchant_id":{"type":"string"}},"additionalProperties":false},"title":"Get availability (honest v1 behavior)","logicalName":"get_availability","displayName":"Get availability (honest v1 behavior)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"place_booking","description":"Request a table reservation. Returns booking_id with state 'queued' immediately; fulfillment is asynchronous (a call is placed to the merchant). Poll get_booking_status or supply callback_url for webhooks. RETRY SAFETY: pass a unique client_reference_id (recommended: always); if this call times out or errors ambiguously, retry with the SAME client_reference_id and the registry returns the already-created booking instead of double-booking the restaurant. Never re-call place_booking after a timeou","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["merchant_id","party_size","datetime","reservation_name"],"properties":{"contact":{"type":"string"},"datetime":{"type":"string"},"party_size":{"type":"integer","minimum":1},"merchant_id":{"type":"string"},"callback_url":{"type":"string","format":"uri"},"window_minutes":{"type":"integer","maximum":240,"minimum":0},"sandbox_outcome":{"enum":["confirmed","no_answer","counter_offer","fully_booked","merchant_declined","bad_data"],"type":"string"},"reservation_name":{"type":"string"},"special_requests":{"type":"string","maxLength":280},"client_reference_id":{"type":"string","maxLength":128,"minLength":1},"accept_within_window":{"type":"boolean"}},"additionalProperties":false},"title":"Place a booking (async)","logicalName":"place_booking","displayName":"Place a booking (async)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_booking_status","description":"State machine position for a booking: pending → queued → in_progress → confirmed | failed | needs_input (plus cancelled). Includes structured details on confirmation (confirmed_time, confirmation_code, merchant_instructions), structured failure reason (no_answer | fully_booked | closed | policy_mismatch | merchant_declined | bad_data), or needs_input options awaiting your decision. include_events=true returns the full audit log.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["booking_id"],"properties":{"booking_id":{"type":"string"},"include_events":{"type":"boolean"}},"additionalProperties":false},"title":"Get booking status","logicalName":"get_booking_status","displayName":"Get booking status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"modify_booking","description":"Amend a booking before or after the call. For a booking in needs_input: pass accept_option_index to take one of the merchant's offered times (confirms immediately), or pass a new datetime/party_size to re-queue an amended request. Modifying an already-confirmed booking cancels it and books the new request (new booking_id returned).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["booking_id"],"properties":{"datetime":{"type":"string"},"booking_id":{"type":"string"},"party_size":{"type":"integer","minimum":1},"window_minutes":{"type":"integer","maximum":240,"minimum":0},"accept_option_index":{"type":"integer","minimum":0}},"additionalProperties":false},"title":"Modify a booking / resolve needs_input","logicalName":"modify_booking","displayName":"Modify a booking / resolve needs_input","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"cancel_booking","description":"Cancel a booking in any non-terminal state, or a confirmed reservation (the registry notifies the merchant). Cancellation is mandatory when the human no longer wants the table — no-shows destroy merchant trust and are tracked per developer key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["booking_id"],"properties":{"reason":{"type":"string"},"booking_id":{"type":"string"}},"additionalProperties":false},"title":"Cancel a booking","logicalName":"cancel_booking","displayName":"Cancel a booking","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"submit_feedback","description":"Report how a confirmed reservation actually went. Accepted only against a confirmed booking_id, once per booking, within 14 days of confirmation. Structured fields first; optional free text ≤ 500 chars. This corpus is served raw to all agents via get_merchant — it is never editorialized or turned into a score.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["booking_id","reservation_honored"],"properties":{"free_text":{"type":"string","maxLength":500},"booking_id":{"type":"string"},"would_repeat":{"type":"boolean"},"seated_on_time":{"type":"boolean"},"matched_description":{"type":"boolean"},"reservation_honored":{"type":"boolean"}},"additionalProperties":false},"title":"Submit post-visit feedback","logicalName":"submit_feedback","displayName":"Submit post-visit feedback","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_registry_meta","description":"Evaluate the registry itself: per-city coverage (with each city's IANA timezone), merchant/bookable counts, verification and freshness stats, feedback corpus size, schema version, and the documented deterministic ordering rule. Honest by design — including how stale the data is.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Get registry metadata","logicalName":"get_registry_meta","displayName":"Get registry metadata","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Mercantry&config=eyJ1cmwiOiAiaHR0cHM6Ly9tZXJjYW50cnkub3JnL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Mercantry%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmercantry.org%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Mercantry%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmercantry.org%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Mercantry&connectorUrl=https%3A%2F%2Fmercantry.org%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Mercantry\" --url \"https://mercantry.org/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mercantry-mcp-9d2a5e5f9f","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mercantry-mcp-9d2a5e5f9f/tools/{tool}","mcpServerUrl":"https://mercantry.org/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mercantry-mcp-9d2a5e5f9f?live=1"}