shopgraph
Server Details
Clean product data from any URL. Schema.org + AI extraction. 200 free calls/month.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Server Listing
- ShopGraph
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. Dates show when Glama detected each change.
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
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
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.
Product search for AI agents: Amazon + Shopify, cart-to-checkout buy path. Pay-per-call, no API key.
Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.
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.3MIT
- 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.3794MIT
- 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.
TDQS
Each tool has a clearly distinct purpose: enrich_basic vs enrich_product differ in scope and cost, enrich_html uses raw HTML input, and score_product returns a score. No ambiguity.
All tools follow a consistent verb_noun pattern with snake_case (enrich_*, score_*), making it easy to infer functionality.
With 4 tools, the set is well-scoped for product data enrichment and scoring, neither too sparse nor too bloated.
The tools cover basic extraction, comprehensive extraction, HTML-based extraction, and scoring, leaving no obvious gaps for the domain.