canonical: https://jentic.com/apis/openshopgraph.com/openshopgraph

# OpenShopGraph MCP Server

The OpenShopGraph API looks up online shops and returns what each shop states about its own returns, shipping, payment methods, and buyer protection, with every fact dated and attributed to where it was read. A search tool identifies a shop from a name, domain, pasted URL, misspelling, or a question such as 'does bergzeit ship to austria', in English or German, and the profile lookup returns its canonical domain, country, and categories. Policy lookups report fields such as returns_days and free-shipping thresholds, and a coupon tool lists currently usable discount codes with their verification status and an explicit count of what was withheld and why. Read tools are keyless within fair use, and the data is licensed CC-BY-4.0.

## For AI agents

Identify online shops from a name, URL, or question, and read their stated return, shipping, payment, and buyer-protection policies plus verified discount codes, each fact dated and sourced.

## Scope

Does not quote shipping prices, place orders, or compare product prices. Use for identifying online shops and reading their stated policies and discount codes only.

## Capabilities

- Identify an online shop from a name, domain, pasted URL, misspelling, or a question in English or German
- Read a shop's stated return window in returns_days, free return label, tracking, payment methods, and buyer-protection seal, each with checked_at and source
- Check a shop's stated shipping destinations, delivery time, and free-shipping threshold, with a ships_to verdict for a country
- List currently usable discount codes for a shop with verification status and a count of codes withheld as expired or rejected
- Browse shops by category slug, using the category list with per-category shop counts
- Get typeahead shop and category suggestions for a query prefix

## Use cases

### Shopping assistant answering policy questions

An AI shopping agent working through Jentic gets a question like 'can I return shoes at this shop', calls find_shop with the user's wording to identify the domain, then calls get_shop_policies for that shop_domain. Each policy fact comes back with collected, a value, checked_at, and a source of policy_page or llm_gap_resolution, so the agent can tell the user what the shop itself states and whether it was read from the shop or derived by a model.

Example prompt: Call POST `/tool/find_shop` with query 'rücksendung otto', then POST `/tool/get_shop_policies` with the returned shop_domain and report returns_days with its checked_at date and source

### Shipping eligibility check before checkout

Before suggesting a shop, an agent checks whether it ships to the buyer. POST `/tool/get_shipping_policy` with a shop_domain and an ISO 3166-1 country returns the stated destinations, delivery time, free-shipping threshold, and a ships_to verdict, where unknown is a real answer meaning the shop's statement does not settle it. It carries no carrier or shipping price, because OpenShopGraph does not hold that data.

Example prompt: Call POST `/tool/get_shipping_policy` with shop_domain bergzeit.de and country AT, and return the ships_to verdict and stated delivery time

### Verified discount codes

POST `/tool/list_coupons` returns discount codes that are currently usable, with verification status. Codes are withheld when expired, when a real checkout test proved they do not work, or when a display policy suppresses them, and the response reports total_count and how many were withheld so nothing is dropped silently.

Example prompt: Call POST `/tool/list_coupons` with shop_domain otto.de and limit 10, and return the usable codes with their verification status and the withheld count

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/tool/find_shop` | Identify a shop from a name, URL, or question |
| POST | `/tool/get_shop` | Get a shop's public profile |
| POST | `/tool/get_shop_policies` | Read a shop's stated policies |
| POST | `/tool/get_shipping_policy` | Read a shop's stated shipping |
| POST | `/tool/list_coupons` | List usable discount codes |
| POST | `/tool/list_categories` | List category slugs with counts |
| GET | `/suggest` | Typeahead shop and category suggestions |

## Key resources

- **Shops** — Public shop profiles with name, canonical domain, country, category, and a count of sourced policy facts
- **Shop policies** — Stated return, tracking, payment, buyer-protection, and shipping facts, each with checked_at and source
- **Coupons** — Currently usable discount codes with verification status and withheld counts
- **Categories** — Flat list of category slugs observed in the data, with shop counts

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 55 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 60 / 100
  - AI-Readiness & Agent Experience: 32 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 63 / 100
- **View full report:** https://jentic.com/apis/openshopgraph.com/openshopgraph/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring OpenShopGraph by hand means mapping the request bodies of its tool endpoints, handling the optional x-api-token header, and interpreting collected:false gaps. Through Jentic you install once, import OpenShopGraph from the API Directory, add your token once if you have one, and your agent calls it.
- **Permission scoping:** Rules bound OpenShopGraph by operation: the shop_domain travels in the request body, so a rule decides which tools your agent may call, not which shop it asks about. You choose the operations it may call, so resolve_checkout_url and the coupon tool are not included unless you add them.
- **Credential handling:** If you use an OpenShopGraph token, it is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'check a shop's return policy' or 'find discount codes for a shop', and Jentic returns the matching OpenShopGraph operation with its input schema, including shop_domain and country, so the agent calls it directly.

## Related APIs

- **BuiltWith Domain API** — Technology and profile data for a website domain
- **Awin API** — Affiliate network programmes, transactions, and promotions
- **Shopify REST Admin API** — Admin control over a single Shopify store's products and orders

## FAQ

### What authentication does the OpenShopGraph API use?

Per its OpenAPI spec, the tool endpoints accept an optional API key in the x-api-token header: each tool operation, such as POST `/tool/find_shop`, lists both no authentication and the token as valid, and read tools are keyless within fair use. GET /suggest, the health, readiness, and version probes, and the protocol endpoint need no key at all. If you have a token, Jentic stores it in your own instance and attaches it at call time.

### Can the OpenShopGraph API tell me a shop's shipping price?

No. get_shipping_policy and get_shop_policies return what the shop states: destinations, delivery time, free-shipping threshold, return window, and payment methods. They carry no carrier and no shipping price, because OpenShopGraph does not hold that data. When nothing has been collected for a shop, the reply says so with collected set to false.

### What are the rate limits for the OpenShopGraph API?

The OpenAPI spec does not state numeric limits; it says read tools are keyless within fair use. See https://openshopgraph.com/en/terms/ for the current terms.

### Is there an OpenShopGraph MCP server?

Yes - OpenShopGraph serves the same tools over the MCP protocol at POST /mcp. You can also connect it directly through Jentic: your agent gets the full 12-endpoint REST surface without loading another server's tool definitions into its context, any token is injected at call time by your self-hosted instance, and your rules decide which operations the agent may call.

### How do I look up a shop's return policy through Jentic?

Search Jentic for 'look up a shop's return policy', load POST `/tool/find_shop` to identify the shop from the user's wording, then POST `/tool/get_shop_policies` with the returned shop_domain. Read returns_days and its source from the response. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the OpenShopGraph API?

Yes. For a policy assistant, write a rule that allows POST `/tool/find_shop` and POST `/tool/get_shop_policies` only, and the agent can identify shops and read their stated policies but cannot resolve checkout URLs or list coupons. Every call it makes is logged.
