# KH Merch Graph

> Identifies Kingdom Hearts merch from Japanese listing titles: SKU, condition terms, bootleg flags.

- name: io.github.marleyhereicome-cpu/kh-merch-graph
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.marleyhereicome-cpu%2Fkh-merch-graph
- tools: https://api.protogrid.dev/v1/servers/io.github.marleyhereicome-cpu%2Fkh-merch-graph/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "kh-merch-graph": {
      "type": "http",
      "url": "https://mcp.merchgraph.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-96% +updated-22d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,579 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 2,579 tokens to load them all
- tool set hash: b1c4579b820df3f8ffd167aca8163ab9
- tools last changed: 2026-11-12T17:53:26.146Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.marleyhereicome-cpu/kh-merch-graph.svg)](https://protogrid.dev/servers/io.github.marleyhereicome-cpu/kh-merch-graph)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-12 `report_correction` changed (title, annotations)
- 2026-11-12 `estimate_landed_cost` changed (title, annotations)
- 2026-11-12 `discover` changed (title, description, inputSchema, annotations)
  - before: Browse the merchandise catalog of one series (Kingdom Hearts, Demon Slayer and One Piece) by character, budget and purpose. Use it to answer "what merch exists for X?" or "gift ideas under ¥5,000". Example: {ip: "kingdom-hearts", character: "Sora", budget_jpy: 5000, purpose: "display"}. Returns items[] (sku_id, name_en/name_ja, official, original price msrp_jpy plus price_local/currency, price_basis, region, availability_hint, typical_channels, source_url) and total_matches. If a character has no solo merch (e.g. Xigbar), the result also has suggested_character_group and suggested_items for their group (e.g. Organization XIII). Lists catalog entries only; it does not mean anything is for sale right now. Use explain_product with a sku_id for full details.
  - after: Browse the merchandise catalog (Kingdom Hearts, Demon Slayer and One Piece) by series, character, budget and purpose. Use it to answer "what merch exists for X?" or "gift ideas under ¥5,000". Example: {ip: "kingdom-hearts", character: "Sora", budget_jpy: 5000, purpose: "display"}. Omit ip to search every series. Returns items[] (sku_id, name_en/name_ja, official, original price msrp_jpy plus price_local/currency, price_basis, price_note_en for per-draw prices, region, availability_hint, typical_channels, source_url, page_url = the item's page on merchgraph.app) and total_matches. For a series that is not covered, items is empty and supported_series lists the covered ones. If a character has no solo merch (e.g. Xigbar), the result also has suggested_character_group and suggested_items for their group (e.g. Organization XIII). Lists catalog entries only; it does not mean anything is for sale right now. Use explain_product with a sku_id for full details.
- 2026-11-12 `explain_product` changed (title, description, annotations)
  - before: Get the full record for one catalog item (Kingdom Hearts, Demon Slayer and One Piece). Pass a sku_id from discover/resolve_listing (e.g. {sku_id: "ichiban-kuji-kh-2018-a"}), or a free-text query such as {query: "Sora Bring Arts Halloween Town"} to get the best match. Returns names (en/ja), product line (maker, line type, release date), characters, original price (msrp_jpy, price_local, currency, price_basis), acquisition_type (retail, kuji, prize, …), availability (hint + confidence), typical_channels, shipping (whether it is only sold at shops that ship within Japan, so a shipping-forwarding service is needed from abroad; costs are not calculated; for Mercari/Suruga-ya items a note that Mercari's global app may allow direct purchase in some countries), size/weight, re-release dates, official (licensed or fan-made), verified (checked against the source) and source_url.
  - after: Get the full record for one catalog item (Kingdom Hearts, Demon Slayer and One Piece). Pass a sku_id from discover/resolve_listing (e.g. {sku_id: "ichiban-kuji-kh-2018-a"}), or a free-text query such as {query: "Sora Bring Arts Halloween Town"} to get the best match. Returns names (en/ja), product line (maker, line type, release date), characters, original price (msrp_jpy, price_local, currency, price_basis), acquisition_type (retail, kuji, prize, …), availability (hint + confidence), typical_channels, shipping (whether it is only sold at shops that ship within Japan, so a shipping-forwarding service is needed from abroad; costs are not calculated; for Mercari/Suruga-ya items a note that Mercari's global app may allow direct purchase in some countries), size/weight, re-release dates, official (licensed or fan-made), verified (checked against the source), source_url (primary source) and page_url (the item's page on merchgraph.app; cite both).
- 2026-11-12 `resolve_listings_batch` changed (title, annotations)
- 2026-11-12 `resolve_listing` changed (title, description, annotations)
  - before: Identify a Kingdom Hearts, Demon Slayer and One Piece item from a marketplace listing (Mercari, Yahoo! Auctions, Suruga-ya, Mandarake, eBay…). Paste the listing title as-is (Japanese or English), e.g. {title: "一番くじ キングダムハーツ A賞 ソラ フィギュア 箱なし", price_jpy: 4500}. Returns candidates[] (sku_id, name_en, confidence 0-1, why, source_url; several when the title is ambiguous), weak_matches[] when unsure, conditions[] (Japanese condition words such as 未使用/箱なし explained), flags[] (bootleg caution notes, not a verdict), price (original price and listing-to-original ratio when price_jpy is given), shipping (whether a shipping-forwarding service is needed from abroad; set platform for a precise answer; for Mercari/Suruga-ya a note that Mercari's global app may allow direct purchase in some countries), acquisition notes and next_checks_en (what to ask the seller). Listing text is not stored. For many listings at once use resolve_listings_batch.
  - after: Identify a Kingdom Hearts, Demon Slayer and One Piece item from a marketplace listing (Mercari, Yahoo! Auctions, Suruga-ya, Mandarake, eBay…). Paste the listing title as-is (Japanese or English), e.g. {title: "一番くじ キングダムハーツ A賞 ソラ フィギュア 箱なし", price_jpy: 4500}. Returns candidates[] (sku_id, name_en, confidence 0-1, why, source_url, page_url = the item's page on merchgraph.app; several when the title is ambiguous), weak_matches[] when unsure, conditions[] (Japanese condition words such as 未使用/箱なし explained), flags[] (bootleg caution notes, not a verdict), price (original price and listing-to-original ratio when price_jpy is given), shipping (whether a shipping-forwarding service is needed from abroad; set platform for a precise answer; for Mercari/Suruga-ya a note that Mercari's global app may allow direct purchase in some countries), acquisition notes and next_checks_en (what to ask the seller). Listing text is not stored. For many listings at once use resolve_listings_batch.

Full history: https://api.protogrid.dev/v1/servers/io.github.marleyhereicome-cpu%2Fkh-merch-graph/changes

## Remotes

- https://mcp.merchgraph.app/mcp (streamable-http, auth none, reachable true, uptime30d 0.9647059)
- https://kh-merch-graph.fandex.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9529412)

## Packages

_none_

## Tools (6)

- `discover`: Browse the merchandise catalog (Kingdom Hearts, Demon Slayer and One Piece) by series, character, budget and purpose. Use it to answer "what merch exists for X?" or "gift ideas under ¥5,000". Example: {ip: "kingdom-hearts", character: "Sora", budget_jpy: 5000, purpose: "display"}. Omit ip to search every series. Returns items[] (sku_id, name_en/name_ja, official, original price msrp_jpy plus price_local/currency, price_basis, price_note_en for per-draw prices, region, availability_hint, typical_channels, source_url, page_url = the item's page on merchgraph.app) and total_matches. For a series that is not covered, items is empty and supported_series lists the covered ones. If a character has no solo merch (e.g. Xigbar), the result also has suggested_character_group and suggested_items for their group (e.g. Organization XIII). Lists catalog entries only; it does not mean anything is for sale right now. Use explain_product with a sku_id for full details.
- `estimate_landed_cost`: Estimate the total cost of buying an item in Japan and having it forwarded abroad. Example: {price_jpy: 4500, sku_id: "ichiban-kuji-kh-2018-a", dest_country: "US"}. Returns routes[] (forwarding service × shipping method, with fees and total_jpy, cheapest first) and cheapest. Rough figures only: fee and shipping tables currently cover US, GB, DE and FR (other countries return no routes), come from third-party comparison guides (mid-2026) and exclude duties. Not a quote; we are not affiliated with any forwarding service.
- `explain_product`: Get the full record for one catalog item (Kingdom Hearts, Demon Slayer and One Piece). Pass a sku_id from discover/resolve_listing (e.g. {sku_id: "ichiban-kuji-kh-2018-a"}), or a free-text query such as {query: "Sora Bring Arts Halloween Town"} to get the best match. Returns names (en/ja), product line (maker, line type, release date), characters, original price (msrp_jpy, price_local, currency, price_basis), acquisition_type (retail, kuji, prize, …), availability (hint + confidence), typical_channels, shipping (whether it is only sold at shops that ship within Japan, so a shipping-forwarding service is needed from abroad; costs are not calculated; for Mercari/Suruga-ya items a note that Mercari's global app may allow direct purchase in some countries), size/weight, re-release dates, official (licensed or fan-made), verified (checked against the source), source_url (primary source) and page_url (the item's page on merchgraph.app; cite both).
- `report_correction`: Report a mistake or missing item in the catalog (reviewed by hand before anything changes). Example: {sku_id: "ichiban-kuji-kh-2018-a", field: "msrp_jpy", proposed_value: "750", source_url: "https://…"}. Please include a primary source (maker, official shop or reliable press) when you can. Returns {accepted, correction_id}.
- `resolve_listing`: Identify a Kingdom Hearts, Demon Slayer and One Piece item from a marketplace listing (Mercari, Yahoo! Auctions, Suruga-ya, Mandarake, eBay…). Paste the listing title as-is (Japanese or English), e.g. {title: "一番くじ キングダムハーツ A賞 ソラ フィギュア 箱なし", price_jpy: 4500}. Returns candidates[] (sku_id, name_en, confidence 0-1, why, source_url, page_url = the item's page on merchgraph.app; several when the title is ambiguous), weak_matches[] when unsure, conditions[] (Japanese condition words such as 未使用/箱なし explained), flags[] (bootleg caution notes, not a verdict), price (original price and listing-to-original ratio when price_jpy is given), shipping (whether a shipping-forwarding service is needed from abroad; set platform for a precise answer; for Mercari/Suruga-ya a note that Mercari's global app may allow direct purchase in some countries), acquisition notes and next_checks_en (what to ask the seller). Listing text is not stored. For many listings at once use resolve_listings_batch.
- `resolve_listings_batch`: Run resolve_listing on up to 5 listings in one call, e.g. when comparing search results from a marketplace. Example: {listings: [{title: "…", price_jpy: 3000}, {title: "…"}]}. Returns an array in the same order; each element has the same shape as a resolve_listing result (or {error} for that one listing only). For more than 5, split into several calls. For a single listing use resolve_listing.
