OpenShopGraph
REMOTE · API.OPENSHOPGRAPH.COM
Open, verified shop database for AI agents: products, offers, price comparison, trust and coupons.
Available components
Last scanned (6 hours ago)
Scores higher than 70% of remote servers
Reachable. Last reached 24 Oct 2026.
Category E-commerce
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 Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- 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 Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2044 tokens (~340/item across 6 items; 6 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 Management55
- Stability check failed: schema churn in the 30 days we've observed: 3 tool removals, 0 breaking changes, 1 auth/transport breaks, 1 additions. See how to fix → Fail
Tool Coverage74
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 23% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 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
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.
- 24 Oct 26 −5
- A breaking change shipped without a version bump: still 0.1.1 ▼ security
- Tool “get_trust” was removed ▼ security
- Tool “report_code” was removed ▼ security
- Tool “report_issue” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “find_shop” rewrote its description, which is the text the model reads security
- Tool “get_shipping_policy” rewrote its description, which is the text the model reads security
- Tool “get_shop” rewrote its description, which is the text the model reads security
- Tool “get_shop_policies” rewrote its description, which is the text the model reads security
- Tool “list_categories” rewrote its description, which is the text the model reads security
- Tool “list_coupons” rewrote its description, which is the text the model reads security
- Schema quality: 2922 → 2044 ▲ functional
- Schema quality: good → excellent functional
- Tool “find_shop” changed its title: Find shop cosmetic
- Tool “get_shipping_policy” changed its title: Get shipping policy cosmetic
- Tool “get_shop” changed its title: Get shop facts cosmetic
- Tool “get_shop_policies” changed its title: Get shop policies cosmetic
- Tool “list_categories” changed its title: List categories cosmetic
- Tool “list_coupons” changed its title: List coupons cosmetic
- 22 Oct 26 0
- Tool “get_shop” rewrote its description, which is the text the model reads security
- 19 Oct 26 −5
- Stability: pass → fail ▼ security
- Authorization: fail → partial ▲ security
- Tool “get_shipping_policy” rewrote its description, which is the text the model reads security
- Schema quality: 2511 → 2885 ▼ functional
- New tool “get_shop_policies” functional
- 18 Oct 26 0
- Tool “find_shop” rewrote its description, which is the text the model reads security
- 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
- 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
- 14 Sept 26 0
- Tool “list_coupons” rewrote its description, which is the text the model reads security
- 13 Sept 26 0
- HTTPS: unverified → pass ▲ security
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 24 Oct 2026 · Probed https://api.openshopgraph.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=openshopgraph.com | CN=WE1,O=Google Trust Services,C=US | 4 Oct 2026 | 2 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | e0b28bb7be43fa90e895c3ece98a65d |
| SANs: openshopgraph.com, *.openshopgraph.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.openshopgraph.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| openshopgraph.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=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | no-referrer |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.openshopgraph.com/mcp | Verified | 200 | |
| http (plaintext) | http://api.openshopgraph.com/mcp | HTTPS enforced | 301 | https://api.openshopgraph.com/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 →
find_shop Find shop ~445
Search merchants/shops by free-text query (name or domain fragment), optionally filtered by country (ISO 3166-1 alpha-2, e.g. "DE") and/or by an exact category slug. Returns the public shop view only; shops still under internal review are not returned. `results` carries at most `limit` entries (default 50, max 100); `total_count` is the full match count before that cap and `truncated` is true when more results exist beyond the page (`offset`, default 0, selects the page). Multi-word queries are matched conjunctively: every word must be evidenced on a shop (name, domain or category). `ignored_terms` lists the words that matched nothing anywhere in the corpus and were therefore dropped to avoid an empty answer; a non-empty `ignored_terms` means the results answer a narrower question than the one asked. `match_quality` states how well the query was evidenced: "full" (every word found as a name/domain/category fragment; this is evidence of a fragment, not of relevance, and results are not ranked), "partial" (some words are in `ignored_terms`; the results answer a narrower question), "none" (no match). For "partial" and "none", `suggestions` carries hints instead of a guess: `categories` (known category slugs; German words like "schuhe" are mapped) and `shops` (domains within typo distance, e.g. "bergzeitt" -> bergzeit.de); both are empty for "full". `category_truncated` is true when category resolution hit its internal cap and the match set is a subset. `category` accepts only a slug from the shop category taxonomy; an unrecognized slug is rejected with an error and does not yield a silent empty `results`. `category` is additive to `query` (AND, not OR); `query: ""` browses a category without a name/domain filter.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| country | string | – | – |
| limit | number | – | – |
| offset | number | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
get_shipping_policy Get shipping policy ~246
What a shop STATES about its own shipping: which destinations it names, the delivery time it claims, and any free-shipping threshold, plus the date that statement was last checked and where it was read (policy_page or structured_data). This is a shop-level statement, NOT an offer and NOT a quote: it carries no carrier and no shipping price, because OpenShopGraph does not hold that data. The optional country (ISO 3166-1 alpha-2, e.g. "DE") adds a ships_to verdict derived from the stated destination list; "unknown" is a real answer there and means the statement does not settle it. When nothing has been collected for a shop, the reply says so explicitly (collected:false): a gap in the data, not a statement that the shop does not ship. The checked-at date marks how current the merchant's claim is.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | – |
| shop_domain | string | yes | Shop domain, e.g. "otto.de". An internal OpenShopGraph shop id is accepted here as well. The older field name `shop_id_or_domain` still works on every tool and means exactly the same thing. |
No output schema declared.
No examples provided.
get_shop Get shop facts ~156
Fetch a single merchant/shop by id or domain (public view). Answers "shop not found" for shops still under internal review, identical to a genuinely unknown domain, so reviewers cannot be distinguished from typos. The offers array is present for schema stability and is empty for shops without ingested merchant offers. `fields_belegt` ("n/m") counts how many of the shop's policy facts carry a checked, sourced value, out of the m policy facts tracked per shop.
| Name | Type | Req | Description |
|---|---|---|---|
| shop_domain | string | yes | Shop domain, e.g. "otto.de". An internal OpenShopGraph shop id is accepted here as well. The older field name `shop_id_or_domain` still works on every tool and means exactly the same thing. |
No output schema declared.
No examples provided.
get_shop_policies Get shop policies ~344
What a shop STATES about its own policies, each fact with the date it was last checked and where it was read: return window in days (returns_days), free return label, tracking offered, payment methods, buyer-protection seal, plus the shipping statement (destinations, stated delivery time, free-shipping threshold). Answers questions such as "how long can I return something at this shop?". These are shop-level statements, NOT offers and NOT quotes: no carrier, no shipping price. Every fact in `policies` is an object with `collected`: when true it carries value, checked_at and source (policy_page = read from the shop, llm_gap_resolution = model-derived, not read from the shop); when false it carries a reason and means OpenShopGraph holds no checked value, a gap in the data and NOT a statement that the shop has no such policy. A fact whose value and check date are stored but whose source is unknown is also reported as collected:false (reason no_source): a value without a source is not shown. The optional country (ISO 3166-1 alpha-2, e.g. "DE") adds a ships_to verdict derived from the stated destination list; "unknown" is a real answer there. `checked_at` is the date a figure was last checked and marks how current a stated claim is.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | – |
| shop_domain | string | yes | Shop domain, e.g. "otto.de". An internal OpenShopGraph shop id is accepted here as well. The older field name `shop_id_or_domain` still works on every tool and means exactly the same thing. |
No output schema declared.
No examples provided.
list_categories List categories ~134
Enumerate the shop category taxonomy: every category slug currently carried by at least one public shop, together with how many public shops carry it. The taxonomy is flat (no parent/child hierarchy, e.g. "fashion" and "womens-clothing" are siblings, not nested) and its slugs come from observed data, not from a fixed enum, so the set of slugs is known only from this response. The `category` filter of the shop search accepts only slugs from this response. A shop can carry more than one category, so the counts can add up to more than the number of shops.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_coupons List coupons ~607
List currently USABLE discount codes/coupons, optionally filtered by shop_domain (e.g. "otto.de"). A code is withheld from `results` when it is EXPIRED (valid_until has passed), when a real checkout test PROVED it does not work (verification_status "verified_rejected"), or when a display policy suppresses it on this channel/country. Nothing is withheld silently: `total_count` is the REAL number of codes the query found before any of that (for the collection list the full count over everything, not just the window), `examined` is how many codes this request looked at, and `withheld` breaks the difference down by reason ({expired, verified_rejected, reserved_test_domain, policy}); examined minus results.length equals the sum of `withheld`, and `note` states the same balance in one sentence. WITHOUT shop_domain the answer is one window of at most `limit` codes (default 100, max 100) starting at `offset` (default 0), ordered by a stable id: `truncated` is true when more codes lie beyond it and `next_offset` is the offset of the next page (null on the last page), so `truncated: false` marks the last page. limit/offset are rejected together with shop_domain, which already returns every code of that shop. An empty `results` is explained by `total_count` and `note`, which tell "this shop has no codes at all" apart from "it has codes and every one of them is proven dead". An UNKNOWN or internal-review shop_domain is a different answer again: it is an error ("shop not found"), not an empty list; and a backend failure is reported as a failure, not as an empty list. Each result carries validUntil: an ISO timestamp when the code has a stated expiry, or null when it is open-ended; null means unlimited, NOT unknown-and-expired, and a stated expiry can pass after the response was produced. Each result ALSO carries verificationStatus, the verdict of a real checkout test against this exact code: "verified_applied" means the code worked in an actual checkout attempt (the response car…
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | – |
| offset | number | – | – |
| shop_domain | string | – | – |
No output schema declared.
No examples provided.
How do I install the OpenShopGraph MCP server?
OpenShopGraph is a hosted endpoint at https://api.openshopgraph.com/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 · api.openshopgraph.com
claude mcp add --transport http com-openshopgraph-mcp 'https://api.openshopgraph.com/mcp'
What is the OpenShopGraph MCP server?
OpenShopGraph is an MCP server listed in the public MCP registry as com.openshopgraph/mcp. Open, verified shop database for AI agents: products, offers, price comparison, trust and coupons. This page covers its hosted endpoint (https://api.openshopgraph.com/mcp).
Is the OpenShopGraph MCP server safe to use?
OpenShopGraph scores 76 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 OpenShopGraph MCP server expose?
OpenShopGraph exposes 6 tools: find_shop, list_categories, get_shop, list_coupons, get_shop_policies, get_shipping_policy. Their descriptions and schemas cost roughly 1,932 tokens of context every time the server is loaded.
Does the OpenShopGraph MCP server require authentication?
No. We connected to OpenShopGraph without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the OpenShopGraph MCP server still maintained?
OpenShopGraph is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.