shopgraph
Server Details
Clean product data from any URL. Schema.org + AI extraction. 200 free calls/month.
- Status
- Healthy
- Uptime
- 100.0% over 41 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Server Listing
- ShopGraph
TDQS
Scored across 4 tools
enrich_basic, enrich_product, and enrich_html all extract product data from a URL, creating real overlap that an agent must parse through pricing, speed, and input-format hints to distinguish. enrich_basic vs enrich_product is particularly confusable since both take a URL and return product attributes, differing mainly in depth and cost. score_product is clearly distinct.
All four tools follow a clean verb_noun pattern: enrich_basic, enrich_html, enrich_product, score_product. Consistent snake_case and a shared 'enrich_' prefix for the extraction family make the set predictable.
Four tools is on the thin side for a product-data enrichment service, and the surface is essentially three extraction variants plus one scorer. Borderline but not egregious given the narrow single-domain scope.
The set covers URL-based extraction, HTML-based extraction, and scoring, but lacks obvious companions like batch enrichment, product lookup by ID, or price/availability monitoring over time. Minor gaps that agents can partially work around by calling enrich_product repeatedly.
Available Tools
4 toolsenrich_basicARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL to extract data from | |
| format | No | Output format. "ucp" returns UCP line_item format. Default: "default". | default |
| force_refresh | No | Bypass cache entirely. Always triggers live extraction. Costs 3x credits. | |
| include_score | No | Include agent-readiness score in response. | |
| payment_method_id | No | Stripe payment method ID for MPP payment | |
| minimum_confidence | No | Auto-refresh if any cached field's DECAYED confidence falls below this threshold. Costs 2x credits when refresh triggers, 0.25x on cache hit. | |
| strict_confidence_threshold | No | Fields below this confidence will be nulled with explanation. Default: off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, and the description adds rich behavioral context beyond them: it explains the _shopgraph metadata with provenance, freshness, and abstain fields, and explains how null values indicate verification failure. This gives the agent a clear model of what the tool returns and how to interpret trustworthiness, without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight and well-structured: purpose in the first sentence, cost details in the second and third, and data quality metadata in the fourth. Every sentence contributes new information, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters and no output schema, the description covers essential context: the output's verification metadata, nulling behavior for unverifiable fields, and pricing. It could mention response structure in more detail, but the description is sufficiently complete for an agent to understand and trust the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented in the schema. The description does not add parameter-specific details, but it does explain the overall output metadata (field_method, field_freshness, abstain) which helps understand the meaning of confidence-related parameters. This is baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Extract' with a clear resource 'basic product attributes from a URL' and lists the exact fields (name, price, brand, availability). It distinguishes itself from the sibling enrich_product by explicitly noting it is 'Faster and cheaper', making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool by comparing with enrich_product ('Faster and cheaper') and mentioning the free tier/payment model. It doesn't explicitly state when not to use it or name all sibling alternatives, but the guidance is sufficient for basic selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrich_htmlARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Original URL of the page (used for context and caching) | |
| html | Yes | Raw HTML content of the product page | |
| format | No | Output format. "ucp" returns UCP line_item format. Default: "default". | default |
| force_refresh | No | Bypass cache entirely. Always triggers live extraction. Costs 3x credits. | |
| include_score | No | Include agent-readiness score in response. | |
| payment_method_id | No | Stripe payment method ID for MPP payment | |
| minimum_confidence | No | Auto-refresh if any cached field's DECAYED confidence falls below this threshold. | |
| strict_confidence_threshold | No | Fields below this confidence will be nulled with explanation. Default: off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint and openWorldHint, but the description adds significant behavioral context: cost per call, caching behavior, the schema.org + LLM dual-extraction strategy, and the _shopgraph verification metadata (provenance, freshness, abstain). This goes far beyond the structured annotations and helps an agent understand trustworthiness of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but front-loaded with a clear purpose sentence, then elaborates on usage, cost, and metadata. Every sentence adds value, though the metadata explanation is dense and may take a couple reads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains the tool's verification metadata and cost model, but since there is no output schema, it leaves the actual product fields vague ('structured product data' with only price and availability as examples). An agent may not know what fields to expect. This is a notable gap given the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have descriptions in the schema, so the baseline is 3. The description adds context about caching and costs that informs force_refresh and minimum_confidence, and the mention of 'abstain' explains null field behavior, which aligns with confidence-related params. This is enough to elevate slightly beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts product data from raw HTML and distinguishes itself by noting 'no HTTP fetch needed', positioning it as a post-scraping enrichment step. It also mentions the use of schema.org + LLM fallback, making its function specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Ideal when using Bright Data, Firecrawl, or any scraping API — pipe the HTML through ShopGraph for structured product data', providing clear context for when to use this tool. While it doesn't name alternative tools or exclusions, the 'raw HTML you already have' phrasing implies it is for pre-fetched content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrich_productARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL to extract data from | |
| format | No | Output format. "ucp" returns UCP line_item format. Default: "default". | default |
| force_refresh | No | Bypass cache entirely. Always triggers live extraction. Costs 3x credits. | |
| include_score | No | Include agent-readiness score in response. | |
| payment_method_id | No | Stripe payment method ID for MPP payment | |
| minimum_confidence | No | Auto-refresh if any cached field's DECAYED confidence falls below this threshold. Costs 2x credits when refresh triggers, 0.25x on cache hit. | |
| strict_confidence_threshold | No | Fields below this confidence will be nulled with explanation. Default: off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint), the description discloses significant behavioral traits: LLM fallback, cost structure (including free cached results), cache bypass implications, and detailed metadata about provenance, freshness, and abstention. This far exceeds annotations and adds important trust-related context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it front-loads the core purpose, then covers cost, metadata, and trust signals in separate clauses. It is longer than average, but every sentence contributes meaningful information, so it earns a 4 rather than a 3.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description does a good job explaining the nature of the response (product fields plus _shopgraph metadata). However, it does not enumerate the complete set of returned fields or provide explicit output structure examples, leaving some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining cost implications (e.g., free cache, 3x for force_refresh, 2x for minimum_confidence triggers) and the role of verification metadata, which helps agents reason about parameter trade-offs beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts comprehensive product data from a URL, listing specific fields (name, price, brand, images, availability). It distinguishes itself from siblings like enrich_basic by emphasizing comprehensiveness and the use of schema.org plus LLM fallback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong contextual guidance: it mentions cost per call, caching behavior, and the methodology (schema.org with LLM fallback). However, it does not explicitly name alternatives or state when not to use this tool versus enrich_basic or enrich_html, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_productARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL to extract and score | |
| format | No | Output format. "ucp" returns UCP line_item format. Default: "default". | default |
| payment_method_id | No | Stripe payment method ID for MPP payment | |
| strict_confidence_threshold | No | Fields below this confidence will be nulled with explanation. Default: off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds meaningful context: the scoring dimensions and the fact that a full breakdown is included. It does not, however, disclose that payment_method_id may trigger a monetary charge (MPP payment), which is a behavioral aspect not covered by annotations—yet this does not rise to a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: the first defines the action and result, the second details the scoring criteria, and the third states the output includes a full breakdown. Every sentence earns its place, and the most critical purpose information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's input and high-level output, but with no output schema it does not describe the exact return structure beyond 'full scoring breakdown'. It also omits any mention of the payment-related behavior and error conditions, leaving some ambiguity for an agent invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters. The description adds macro-context (what the score measures) but does not add per-parameter detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Extract product data and return agent-readiness score') and clearly distinguishes this from sibling enrichment tools by emphasizing scoring rather than enrichment. It also specifies the score range and the exact criteria being measured, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (when an agent-readiness score is needed) and provides the domain of application. However, it does not explicitly contrast it with sibling tools like enrich_basic or enrich_product, nor does it state when not to use it, so it stops short of full guidance.
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.
3 tool updates
- Changed
enrich_basic2 fields changed- added
Input schema / properties / force_refreshAdded value: +{ + "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits.", + "type": "boolean" +} - added
Input schema / properties / minimum_confidenceAdded value: +{ + "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.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
- Changed
enrich_html2 fields changed- added
Input schema / properties / force_refreshAdded value: +{ + "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits.", + "type": "boolean" +} - added
Input schema / properties / minimum_confidenceAdded value: +{ + "description": "Auto-refresh if any cached field's DECAYED confidence falls below this threshold.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
- Changed
enrich_product2 fields changed- added
Input schema / properties / force_refreshAdded value: +{ + "description": "Bypass cache entirely. Always triggers live extraction. Costs 3x credits.", + "type": "boolean" +} - added
Input schema / properties / minimum_confidenceAdded value: +{ + "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.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
4 tool updates
- Changed
enrich_basic1 field changed- added
Input schema / properties / include_scoreAdded value: +{ + "description": "Include agent-readiness score in response.", + "type": "boolean" +}
- Changed
enrich_html1 field changed- added
Input schema / properties / include_scoreAdded value: +{ + "description": "Include agent-readiness score in response.", + "type": "boolean" +}
- Changed
enrich_product1 field changed- added
Input schema / properties / include_scoreAdded value: +{ + "description": "Include agent-readiness score in response.", + "type": "boolean" +}
- Added
score_product
3 tool updates
- Changed
enrich_basic2 fields changed- added
Input schema / properties / formatAdded value: +{ + "default": "default", + "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\".", + "enum": [ + "default", + "ucp" + ], + "type": "string" +} - added
Input schema / properties / strict_confidence_thresholdAdded value: +{ + "description": "Fields below this confidence will be nulled with explanation. Default: off.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
- Changed
enrich_html2 fields changed- added
Input schema / properties / formatAdded value: +{ + "default": "default", + "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\".", + "enum": [ + "default", + "ucp" + ], + "type": "string" +} - added
Input schema / properties / strict_confidence_thresholdAdded value: +{ + "description": "Fields below this confidence will be nulled with explanation. Default: off.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
- Changed
enrich_product2 fields changed- added
Input schema / properties / formatAdded value: +{ + "default": "default", + "description": "Output format. \"ucp\" returns UCP line_item format. Default: \"default\".", + "enum": [ + "default", + "ucp" + ], + "type": "string" +} - added
Input schema / properties / strict_confidence_thresholdAdded value: +{ + "description": "Fields below this confidence will be nulled with explanation. Default: off.", + "maximum": 1, + "minimum": 0, + "type": "number" +}
1 tool update
- Added
enrich_html
2 tool updates
- First observed
enrich_basic - First observed
enrich_product
Related MCP Connectors
Turn any website into structured JSON data matching your custom schema.
Extract structured pricing tiers and addons from any SaaS pricing page URL. Built for AI agents.
Extract product names, prices, and currency from any e-commerce product page in one call.
Product identity, pack sizes and feed/page checks. Free small trials; paid calls from $0.0003.
Related MCP Servers
- AlicenseAqualityDmaintenanceKlarna-style product discovery for AI shopping agents. Makes product catalogs machine-readable so AI agents can search, compare, and purchase products programmatically.6MIT
- AlicenseAqualityAmaintenanceReal Amazon (US, UK, DE, CA, AU) & Walmart shopping data for AI assistants: ranked product shortlists, current prices, live stock, real ratings, and price/BSR history from a 17M+ product warehouse. Free hosted endpoint, no signup — 30 queries a day.31MIT
- AlicenseAqualityFmaintenanceStructured web extraction for AI agents. Pass any URL and a prompt, get clean JSON data back. Native MCP server with 100 free requests/month.3794 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to extract structured JSON data from web pages using presets or custom JSON schemas, with confidence scores and source snippets, paid per call via USDC on Base.-
Glama MCP Gateway
Add one secure layer between your agents and this server.