Skip to main content
Glama
marleyhereicome-cpu

Merchgraph (Kingdom Hearts)

KH Merch Graph

An MCP (Model Context Protocol) server that turns a Japanese secondhand-listing title for Kingdom Hearts merchandise (Mercari, Yahoo! Auctions, Suruga-ya, Mandarake, …) into: the likely official SKU, what the condition wording actually means, bootleg-caution flags, a price-to-MSRP ratio, and a landed-cost estimate to your country. Point any MCP-capable AI agent at it and hand it listing text — it does the rest.

Try it in your browser (no AI agent needed): https://merchgraph.app

Why this is different

  1. Verified catalog, not scraped or guessed. Every SKU in the catalog was checked by a human against a primary source (an official product page, a maker's press release, etc.) — the source URL is attached to every entry and returned with every match, so you can check it yourself. Nothing is inferred by an LLM inside the server.

  2. No confident guess, no candidate. When the match confidence is low, this server does not present a guess as an answer. Low-confidence matches are returned separately as weak_matches, never mixed into candidates — an empty candidates array means "probably not in the catalog," not "best effort."

  3. Bring Your Own Listing. This server never crawls or scrapes marketplaces itself, and never stores the listing text or URL you send it. You already have the listing open; you paste the text, it interprets it.

Related MCP server: Marketplace Search MCP

Supported IP

Kingdom Hearts only, for now. The catalog is hand-verified one SKU at a time, so it grows slowly on purpose. If you ask about another franchise, the server won't fabricate an answer — it notes the request (see Data sourcing & privacy) to help decide what to add next. Use report_correction or open a GitHub issue if you want to nominate a franchise or a specific missing SKU.

Usage examples

These are things you'd say to your AI agent once it's connected to this server (see Connect).

1. "Is this listing worth it?"

"I found this on Mercari for ¥8,000: 一番くじ KINGDOM HEARTS -25th Anniversary- A賞 ソラ スタチュー 開封済み. What is it, and is that a fair price?"

The agent calls resolve_listing and gets back the matched SKU, the MSRP, the price ratio, the meaning of 「開封済み」("opened"), and a link to the primary source for that SKU.

2. "What Sora merch exists under ¥5,000?"

"Show me Kingdom Hearts Sora items under ¥5,000 that I could display."

The agent calls discover({ ip: "kingdom-hearts", character: "Sora", budget_jpy: 5000, purpose: "display" }) and gets a list of catalog SKUs matching those filters (this does not mean any of them are currently for sale anywhere — it's a catalog browse, not a marketplace search).

3. "What would it cost me, landed, in the US?"

"That listing is ¥8,000 plus it weighs about 400g. What's the total cost shipped to the US?"

The agent calls estimate_landed_cost({ price_jpy: 8000, weight_g: 400, dest_country: "US" }) and gets per-route estimates (proxy fee + shipping) with the cheapest option highlighted, plus when the rate table was last checked.

Connect

  • MCP endpoint (Streamable HTTP, JSON-RPC 2.0, no auth): https://mcp.merchgraph.app/mcp (the older https://kh-merch-graph.fandex.workers.dev/mcp keeps working)

  • Health check: .../health

  • For AI agents that discover servers by URL: .../llms.txt (plain-language entry point) and .../openapi.json (schema reference — the real transport is MCP's own tools/list/tools/call, this is a documentation aid for OpenAPI-only tooling)

Claude Desktop / Claude.ai

Add it as a custom connector using the MCP endpoint URL above. No API key or auth is required.

Any other MCP client

Point it at the /mcp endpoint with the Streamable HTTP transport. tools/list returns the live, authoritative schema for all five tools below.

Tools

Tool

What it does

resolve_listing

Listing title/description → SKU candidates, condition terms, bootleg-caution flags, price ratio

resolve_listings_batch

Same as resolve_listing for several listings in one call (up to 5 per call by default, set by MAX_BATCH_LISTINGS in wrangler.toml); results in input order

explain_product

sku_id or free-text query → full detail on one SKU (line, character, dimensions, rerelease history, source)

discover

Browse the catalog by IP/character/budget/purpose

estimate_landed_cost

Listing price + weight/SKU + destination country → landed-cost estimate by route

report_correction

Report a catalog error, or propose a new SKU, with a primary source

Full input/output shapes: docs/SPEC.md.

Data sourcing & privacy

  • Every catalog row requires a source_url to a primary source; unverified rows are marked verified=false rather than silently trusted.

  • This server does not scrape, browse, or log in to any marketplace. It only reads the text an agent sends it, for the duration of a single request.

  • Usage logs on the public deployment contain only: tool name, matched SKU IDs, price, destination country, and timestamp. The listing title, description, and any URL you pass are never logged or stored.

  • When resolve_listing finds no candidate, or discover is asked about an IP not yet in the catalog, the server logs a small, non-identifying signal (a handful of recognized keywords, or the requested IP name only — never the raw listing text) so maintainers know what to add next.

Disclaimers

  • Authenticity is a caution flag, not a verdict. flags point out things worth asking the seller about (price far below MSRP, materials/marks associated with counterfeits, etc.). This server never states that an item is genuine or fake.

  • Prices are estimates for planning, not appraisals or quotes. MSRP ratios and landed-cost totals are meant to help you decide whether to look closer, not to be relied on for a purchase decision or a valuation.

Reporting a correction or a new SKU

Call report_correction with the field you want changed (or leave sku_id empty to propose a new item), your proposed value, and — importantly — a source_url backing it up. You can also open a GitHub issue.

Contributing / building this yourself

This repo is also a step-by-step teaching kit for building an MCP server like this one from scratch. See docs/GETTING_STARTED_JA.md (Japanese) and docs/SPEC.md for the full design. License: MIT (see LICENSE). Third-party names, logos and images are not covered; see NOTICE.

Pipeline: active

Available Tools

6 tools
discoverDiscoverAInspect

カタログから条件(IP・キャラ・予算・用途)に合う候補SKUを探す。実際に出品されているかは保証しない。

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes作品ID(例: kingdom-hearts)
limitNo最大件数(任意、既定10)
termsNodata/ip_terms.csv の固有語(陣営・ワールド・キーブレード等)が名称・別名・備考に含まれる商品だけに絞る(任意)
purposeNo用途(任意、既定は any)
characterNoキャラ名(日英どちらでも可、任意)
budget_jpyNo予算上限(円、任意)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It adds one important disclosure — results are candidates and actual availability is not guaranteed — but does not state whether this is read-only, whether results are paginated, or how many results are returned beyond the schema's limit parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no wasted words. The core purpose is front-loaded, and the caveat immediately follows as relevant secondary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with nested filtering and no output schema, the description covers the main filters and the key caveat. It leaves return-shape expectations vague beyond 'candidate SKU' and does not clarify how nested term filters combine with other filters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters including the nested terms object and enum values. The description mentions IP, character, budget, and purpose but omits terms and limit, adding little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: searching the catalog for candidate SKUs matching IP, character, budget, and purpose. It distinguishes the tool from resolve_listing-style siblings by framing it as catalog discovery rather than listing resolution, though it does not name the alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — search the catalog when you have conditions and want candidate SKUs — but there is no explicit when-to-use/when-not-to-use guidance or comparison with siblings such as resolve_listing. The caveat about availability is useful but is not an alternative-selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_landed_costEstimate landed costAInspect

出品価格・重量(またはsku_id)・仕向国から、代行×配送の経路別の総額目安と最安経路を返す。

ParametersJSON Schema
NameRequiredDescriptionDefault
proxyNo代行名を指定して絞り込む(任意)
sku_idNo正規SKU_ID(重量の参照に使用、任意)
weight_gNo重量(g、sku_idが無い場合はこちらを指定)
price_jpyYes出品価格(円、必須)
dest_countryYes仕向国(ISO2、例: US)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It does disclose the computed outputs (route-by-route totals and the cheapest route), which implies a read-only calculation with no side effects, but it never states that explicitly, nor mentions cost model assumptions, currency of results, rate limits, or what happens when neither weight_g nor sku_id is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with zero filler, and the input-to-output relationship is front-loaded. The parenthetical placement of '(or sku_id)' inside a long clause slightly hurts parseability but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the necessary work of naming what is returned (per-route totals and the cheapest route), and the input schema fully covers the parameters. It leaves the return structure unspecified (field names, whether all routes or only the best are returned) and omits the neither-weight-nor-sku_id case, so it falls just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including the weight_g/sku_id fallback rule. The description reinforces the three primary inputs and the weight-or-sku_id alternative but adds no format, unit, or constraint details beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and output set: it returns per-route proxy×shipping total cost estimates plus the cheapest route, driven by listing price, weight (or sku_id), and destination country. That is far more than a restatement of the name 'estimate_landed_cost' and makes the tool's function unambiguous. No sibling (resolve_listing, explain_product, discover, report_correction) overlaps, but the description does not explicitly differentiate itself from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '(or sku_id)' phrasing implies the alternative input path for weight, which is useful selection guidance. However, there is no statement of when this tool should be chosen over alternatives, no prerequisites, and no exclusions — usage is only indirectly implied by the listed inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_productExplain productBInspect

sku_id または自然文クエリから、商品ライン・キャラ・寸法・再販履歴・出典URLなど商品の詳細を返す。

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo自然文クエリ(sku_id が無い場合に使用)
sku_idNo正規SKU_ID(sku_id か query のどちらか必須)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits itself. It reveals the kinds of data returned, but says nothing about read-only/non-destructive behavior, authentication, rate limits, error handling, or what happens when a query is ambiguous or when neither identifier is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; it states the input modes first and then the returned information, which is exactly the structure an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter lookup with no output schema, the description usefully enumerates the returned fields (product line, character, dimensions, resale history, source URL). However, it lacks the when-to-use routing and behavioral disclosure needed without annotations, leaving material gaps for an agent choosing among six sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains that sku_id and query are alternatives and that query is natural-language. The description repeats the either/or input modes but adds no syntax, format, or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (返す, 'returns') and enumerates the resource details returned (product line, character, dimensions, resale history, source URL), which distinguishes it from generic listing tools. It does not explicitly name or contrast with siblings such as resolve_listing, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only notes that either a sku_id or a natural-language query may be supplied; it gives no guidance on when to choose this tool over resolve_listing, discover, or resolve_listings_batch, and no exclusions or prerequisites. Usage is implied at best through the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_correctionReport correctionCInspect

カタログの誤り・不足を報告する。受付IDを返す。

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo補足(任意)
fieldYes修正したい列名(例: msrp_jpy, name_en)
sku_idNo対象SKU_ID(任意。新規商品の提案なら空でよい)
source_urlNo根拠となる一次情報URL(任意)
proposed_valueYes提案する値

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It mentions that a receipt ID is returned, but does not explain what happens after submission, whether the report is reviewed, whether it creates a pending change, or any auth/rate-limit constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences with no filler. It is efficient, though extremely terse given the tool's workflow complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents the parameters and the description notes the receipt-ID return value. However, for a report-submission tool with no annotations and no output schema, it leaves important workflow and post-submission behavior unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no additional meaning about field, sku_id, proposed_value, source_url, or note beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reporting catalog errors or omissions. It is clearly different from siblings such as resolve_listing or explain_product, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus resolve_listing, resolve_listings_batch, or explain_product. It also omits prerequisites, exclusions, or workflow context for submitting a correction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_listingResolve listingCInspect

日本語の中古出品タイトル・説明文から、正規SKU候補・状態語・海賊版注意フラグ・定価比の目安を返す。

ParametersJSON Schema
NameRequiredDescriptionDefault
srcNo計測用の流入元タグ(任意)。Web版チェッカーのURLパラメータ?src=から渡される。src自体と日時のみ利用ログに残す
urlNo出品URL(任意・サーバー側では保存しない)
titleYes出品タイトル(必須)
platformNo出品プラットフォーム(任意)
price_jpyNo出品価格(円、任意)
descriptionNo説明文の抜粋(任意)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the returned output categories, which is useful, but it does not state whether the tool is read-only, whether it writes or logs data, what happens with `url` or `src`, or whether there are rate limits or error behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tightly packed sentence that front-loads the input source and enumerates the outputs. There is no filler, and every element contributes to understanding what the tool returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, no annotations, and no output schema, the description should do more to explain return-value format, usage context, and behavioral constraints. It lists output categories but does not describe their structure or reliability, and it omits when to choose this tool over siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself documents all six parameters, including `src`, `url`, `platform`, `price_jpy`, and `description`. The description adds only broad meaning by implying title and description are used; it does not clarify how `platform` or `price_jpy` influence resolution, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific transformation: from Japanese used-listing title/description it returns candidate official SKU, condition terms, counterfeit warning, and list-price ratio. This is more than a tautology and names concrete outputs, but it does not distinguish the tool from the sibling `resolve_listings_batch` or explain when single resolution is preferred over batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, no exclusions, and no alternatives. It also does not state whether this is for single listings only, when to use it instead of `resolve_listings_batch` or `explain_product`, or what prerequisites exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_listings_batchResolve listings (batch)AInspect

resolve_listing を最大5件まとめて1回で実行する。多数の出品を照会するときに使う。結果は入力と同じ順番の配列で、各要素は resolve_listing と同じ形式(失敗した件のみ { error })。5件を超える場合は5件ずつに分けて複数回呼ぶこと。1件だけなら resolve_listing を使う。

ParametersJSON Schema
NameRequiredDescriptionDefault
listingsYes出品の配列(1〜5件)。各要素は resolve_listing と同じ引数

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden well: it discloses the 5-item cap, order preservation between input and output, and the partial-failure shape ({ error } only for failed items). It stops short of stating whether the operation is read-only or what a successful element looks like beyond deferring to resolve_listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct information: what it does, when to use it, what comes back, and the two boundary cases (over 5, exactly 1). Front-loaded and waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, so the description must explain returns — it does, covering ordering and the error-element shape while deferring success-element format to resolve_listing. Adequate for correct invocation, though the success-element structure is only implied by reference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single array parameter is fully documented down to per-field descriptions, so the schema does the heavy lifting. The description's note that results align to input order and that more than 5 must be chunked adds operational meaning, but 'same arguments as resolve_listing' repeats what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (batch-execute resolve_listing) with an explicit bound (max 5) and explicitly differentiates from the single-item sibling. An agent can tell exactly what this tool is versus resolve_listing without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (querying many listings at once), an explicit fallback for the single-item case (use resolve_listing), and an explicit overflow rule (split into groups of 5 and call multiple times). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.1
    • First observeddiscover
    • First observedestimate_landed_cost
    • First observedexplain_product
    • First observedreport_correction
    • First observedresolve_listing
    • First observedresolve_listings_batch

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct workflow stage: single listing resolution, batch resolution, product explanation, catalog discovery, landed-cost estimation, and correction reporting. The batch tool is explicitly differentiated from the single resolver, and any natural-language overlap between resolve_listing and explain_product is clarified by their input descriptions.

Naming Consistency4/5

Most names follow a clear verb_noun pattern: resolve_listing, explain_product, estimate_landed_cost, report_correction. The batch variant is still readable, but the bare verb 'discover' is a minor deviation from the otherwise consistent convention.

Tool Count5/5

Six tools map cleanly to distinct, useful steps in a catalog/listing resolution workflow. The set is well-scoped with no redundant tools and no obvious missing count-level additions.

Completeness4/5

The surface covers listing resolution (single and batch), product detail lookup, catalog discovery, landed-cost estimation, and error reporting. A minor gap is the lack of an explicit active-listing search or marketplace comparison tool, but core catalog and listing-resolution workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for searching marketplaces (TCGPlayer, Reverb, Thumbtack), verifying professional licenses (contractor, nurse), and looking up PSA card grading data. Returns real-time pricing, listings, and verification results.
    22
    31 npm
    5
    MIT