shopgraph

Clean product data from any URL. Schema.org + AI extraction. 200 free calls/month.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,459Tokens (tool definitions)
~2.9 KBTypical response size
Moderate attention impact (1.14% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "shopgraph": {
      "command": "npx",
      "args": [
        "shopgraph"
      ]
    }
  }
}

Runnable packages

npmshopgraph1.0.1streamable-http

Remote endpoints

https://shopgraph.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢enrich_product(url, payment_method_id, strict_confidence_threshold, force_refresh, minimum_confidence, ...)

Extract comprehensive product data from a URL including name, price, brand, images, availability, and more. Uses schema.org structured data when available, with LLM fallback. Costs $0.02 per call (cached results are free). Each field carries verification metadata in _shopgraph: provenance (field_method — which source/tier produced it: schema_org, llm, or hybrid), freshness (field_freshness — recency + volatility_class, for volatile fields like price & availability), and abstain (a field is null when ShopGraph cannot verify it on the page). Rely on provenance, freshness, and the abstain signal to decide what to trust.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Product page URL to extract data from"
    },
    "payment_method_id": {
      "type": "string",
      "description": "Stripe payment method ID for MPP payment"
    },
    "strict_confidence_threshold": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Fields below this confidence will be nulled with explanation. Default: off."
    },
    "force_refresh": {
      "type": "boolean",
      "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits."
    },
    "minimum_confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Auto-refresh if any cached field's DECAYED confidence falls below this threshold. Costs 2x credits when refresh triggers, 0.25x on cache hit."
    },
    "format": {
      "type": "string",
      "enum": [
        "default",
        "ucp"
      ],
      "default": "default",
      "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\"."
    },
    "include_score": {
      "type": "boolean",
      "description": "Include agent-readiness score in response."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢enrich_basic(url, payment_method_id, strict_confidence_threshold, force_refresh, minimum_confidence, ...)

Extract basic product attributes from a URL (name, price, brand, availability). Faster and cheaper than enrich_product. 50 free calls/month — no payment needed. Paid: $0.01 per call after free tier. Each field carries verification metadata in _shopgraph: provenance (field_method — which source/tier produced it: schema_org, llm, or hybrid), freshness (field_freshness — recency + volatility_class, for volatile fields like price & availability), and abstain (a field is null when ShopGraph cannot verify it on the page). Rely on provenance, freshness, and the abstain signal to decide what to trust.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Product page URL to extract data from"
    },
    "payment_method_id": {
      "type": "string",
      "description": "Stripe payment method ID for MPP payment"
    },
    "strict_confidence_threshold": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Fields below this confidence will be nulled with explanation. Default: off."
    },
    "force_refresh": {
      "type": "boolean",
      "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits."
    },
    "minimum_confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Auto-refresh if any cached field's DECAYED confidence falls below this threshold. Costs 2x credits when refresh triggers, 0.25x on cache hit."
    },
    "format": {
      "type": "string",
      "enum": [
        "default",
        "ucp"
      ],
      "default": "default",
      "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\"."
    },
    "include_score": {
      "type": "boolean",
      "description": "Include agent-readiness score in response."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢enrich_html(html, url, payment_method_id, strict_confidence_threshold, force_refresh, ...)

Extract product data from raw HTML you already have (no HTTP fetch needed). Ideal when using Bright Data, Firecrawl, or any scraping API — pipe the HTML through ShopGraph for structured product data. Uses schema.org + LLM fallback. Costs $0.02 per call (cached results are free). Each field carries verification metadata in _shopgraph: provenance (field_method — which source/tier produced it: schema_org, llm, or hybrid), freshness (field_freshness — recency + volatility_class, for volatile fields like price & availability), and abstain (a field is null when ShopGraph cannot verify it on the page). Rely on provenance, freshness, and the abstain signal to decide what to trust.

Input Schema

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "Raw HTML content of the product page"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Original URL of the page (used for context and caching)"
    },
    "payment_method_id": {
      "type": "string",
      "description": "Stripe payment method ID for MPP payment"
    },
    "strict_confidence_threshold": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Fields below this confidence will be nulled with explanation. Default: off."
    },
    "force_refresh": {
      "type": "boolean",
      "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits."
    },
    "minimum_confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Auto-refresh if any cached field's DECAYED confidence falls below this threshold."
    },
    "format": {
      "type": "string",
      "enum": [
        "default",
        "ucp"
      ],
      "default": "default",
      "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\"."
    },
    "include_score": {
      "type": "boolean",
      "description": "Include agent-readiness score in response."
    }
  },
  "required": [
    "html",
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢score_product(url, payment_method_id, strict_confidence_threshold, format)

Extract product data and return agent-readiness score (0-100). Scores structured data completeness, semantic richness, UCP compatibility, pricing clarity, and inventory signals. Full scoring breakdown included.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Product page URL to extract and score"
    },
    "payment_method_id": {
      "type": "string",
      "description": "Stripe payment method ID for MPP payment"
    },
    "strict_confidence_threshold": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Fields below this confidence will be nulled with explanation. Default: off."
    },
    "format": {
      "type": "string",
      "enum": [
        "default",
        "ucp"
      ],
      "default": "default",
      "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\"."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools