Tollkit Extract
Server Details
URL in, schema.org/Product JSON out. $0.01 USDC via x402. Free preview, no account or key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- UltraStarz/x402-extract-mcp
- GitHub Stars
- 0
- Server Listing
- x402-extract-mcp
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: compare_products for batch pricing, get_product_details for single URL extraction, get_service_info for service metadata, and try_it_free for a free sample. No overlap or ambiguity between them.
All tool names follow a consistent snake_case verb_noun pattern (compare_products, get_product_details, get_service_info) with try_it_free as a natural imperative variation. The naming is predictable and uniform.
With 4 tools, the server is well-scoped for its purpose: two paid extraction tools (single and batch), one free service info, and one free trial. Each tool earns its place without redundancy or bloat.
The tool surface fully covers the domain of product extraction: single URL extraction, batch comparison, service information, and a free trial. The intentional lack of list/category support is clearly stated, and no dead ends exist for the stated purpose.
Available Tools
4 toolscompare_productsGet details for several products at onceAInspect
Price the same product at several stores — up to 5 URLs in ONE call and ONE payment.
USE THIS WHENEVER YOU HAVE MORE THAN ONE URL. Comparing an item across stores, checking a short list, or refreshing a handful of tracked prices. It returns full details for each URL so YOU can compare them; it does not rank them or pick a winner. Through get_product_details that is one EIP-3009 signature, one settlement and one round trip PER URL; this is one of each for the whole set.
RETURNS one entry per URL in the order given, each with the same product and page objects get_product_details returns, plus ok/error so a single dead URL does not cost you the rest.
COST $0.04 flat for up to 5 URLs — cheaper per page than calling get_product_details 5 times.
BILLING, stated plainly: the price is flat, so a batch where only SOME URLs succeed is charged in full. A batch where NO url succeeds returns an error and is not charged. If you have one URL and are unsure it is live, get_product_details is the cheaper bet.
Duplicate URLs are removed and not billed twice.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Up to 5 absolute https:// product page URLs. Duplicates are removed and not billed twice. | |
| payment | No | Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements. | |
| allow_redirect | No | Applies to every URL. See get_product_details for what it does. |
Output Schema
| Name | Required | Description |
|---|---|---|
| failed | Yes | |
| status | Yes | |
| billing | Yes | The billing rule, restated on every response rather than only in the docs. |
| results | Yes | |
| requested | Yes | |
| succeeded | Yes | |
| settlement | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral disclosure burden. It covers billing semantics (flat fee charged even on partial success, not charged when all URLs fail), duplicate removal, per-URL ok/error isolation, return ordering, and non-ranking behavior. This goes far beyond what the schema or title provides.
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 long but structured into scannable, labeled paragraphs, with the core usage rule front-loaded. Every section adds decision-relevant information; it is not padded, though it could be tightened slightly by reducing repeated comparisons to get_product_details.
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 output schema already exists, the description does not need to restate return fields. It covers when to use, cost, billing edge cases, duplicates, failure isolation, and the relationship to the sibling tool. An agent has everything needed to decide correctly and invoke 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 the baseline is 3. The description adds meaning beyond the schema by clarifying that URLs are processed in the given order, that duplicates are not billed twice, that payment is omitted on first call, and that allow_redirect applies uniformly to every URL. This lifts it above the 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 verb and resource: price the same product at multiple stores, up to 5 URLs in one call and payment. It explicitly differentiates from get_product_details by noting it returns one entry per URL so the caller can compare, without ranking or picking a winner.
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?
Usage guidance is explicit and actionable: 'USE THIS WHENEVER YOU HAVE MORE THAN ONE URL,' with concrete scenarios like comparing across stores and refreshing tracked prices. It also names the alternative, get_product_details, and gives a specific condition where that tool is the cheaper bet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_detailsGet product details from a URLAInspect
Find out what a product is and what it costs, from its page URL.
USE THIS WHEN you have the URL of ONE specific product — a store listing, a marketplace item, a manufacturer's page — and you need its fields rather than its prose. Typical jobs: comparing the same item across several stores, tracking a price over time, checking whether something is in stock, ingesting a catalogue, or getting a product photo URL.
DO NOT USE THIS FOR search-results or category pages (it returns one product, not a list), pages behind a login or paywall, or pages that are not about a product. It also cannot reach private or internal addresses.
RETURNS name, description, brand, sku, price (a number), currency (ISO 4217), availability (in_stock | out_of_stock | preorder | unknown), images (up to 5 absolute URLs copied from the page, never invented) and variants. See the output schema for the exact shape. Any field the page does not state comes back null rather than guessed.
HOW: the page is rendered in a real headless browser before extraction, so JavaScript-built pages work where a plain fetch returns an empty shell.
COST $0.01 USDC per call over x402 on Base. No account, no API key, nothing to install, and no gas — the facilitator sponsors it. Call once WITHOUT the payment argument to get back the payment requirements, sign an EIP-3009 transferWithAuthorization with your own wallet for the quoted amount, base64-encode the x402 payload, and call again with that string as payment.
A URL that redirects to what looks like a DIFFERENT page — a discontinued item bouncing to its category listing — is refused free of charge rather than answered with the wrong product. Retry with allow_redirect: true if you want whatever the URL resolves to.
A failed extraction is not charged. Repeat calls for the same URL within 300 seconds are re-served from a recent render and marked cached: true with the render's original fetchedAt.
Call try_it_free first if you want to see real output before spending anything.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Absolute https:// URL of a single product page. Not a search or category page. | |
| payment | No | Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements. | |
| allow_redirect | No | Default false. By default a URL that redirects to what looks like a different page (a discontinued item bouncing to its category listing) is refused free of charge, because extracting it would return a real product that is not the one you asked for. Set true if you want whatever the URL resolves to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| cached | Yes | True when this answer was re-served from a recent render rather than produced now. Re-serving is still a paid call; it is faster, and the data is as old as cache_age_seconds says. |
| status | Yes | |
| product | Yes | |
| redirect | Yes | Present only when the browser landed somewhere other than the URL you gave. The data describes `final`, not `requested`. |
| settlement | Yes | Base64 x402 settlement receipt, when the facilitator returned one. |
| cache_age_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it handles this thoroughly. It explains the headless-browser rendering, the x402 payment flow, cost, no-charge on failed extraction, redirect refusal behavior, 300-second caching semantics, and the guarantee that images are never invented.
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 long but well-structured, with clear section labels (USE THIS WHEN, DO NOT USE THIS FOR, RETURNS, HOW, COST) that make scanning easy. Every sentence provides actionable information needed for correct invocation, and the most important scoping guidance 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 is complete for a complex, paid, network-dependent tool: it covers when to use it, when not to use it, return-value semantics, payment mechanics, redirects, caching, and a free trial path. The output schema covers the exact return shape, so the description does not need to repeat it in full.
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?
Although schema coverage is 100%, the description adds significant operational meaning beyond the schema: URL constraints with concrete page examples, the exact first-call-without-payment flow including EIP-3009 signing and base64 encoding, and redirect behavior with a concrete discontinued-item scenario.
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 opening sentence states a specific action ('find out what a product is and what it costs') and an explicit resource ('from its page URL'). The description then scopes the tool to a single product page, explicitly excluding search/category pages and non-product pages, which clearly distinguishes it from compare_products and get_service_info.
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 contains explicit 'USE THIS WHEN' and 'DO NOT USE THIS FOR' sections covering single product URLs, search/category pages, login/paywall pages, and non-product pages. It also routes exploratory use to the try_it_free sibling with a clear condition: wanting to see real output before spending anything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_infoService infoARead-onlyInspect
Free. Price, network, and what this service returns. For a sample of the actual output rather than a description of it, call try_it_free instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint covers the safety profile, and the description adds that the tool is free and returns a description rather than sample output. However, it does not explain what 'Free' means or characterize the returned fields beyond a short list, so behavioral detail remains thin.
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 two short sentences with no redundant schema repetition, and the alternative call is placed at the end. The leading sentence fragment 'Free.' is terse but not wasteful; minor structural polish would make it a 5.
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?
For a zero-parameter, read-only info tool, the description covers what the agent gets (price, network, return description) and where to go for a sample, which is sufficient to invoke correctly. It stops short of enumerating the output format, but try_it_free covers that need.
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?
The input schema has zero parameters, so there is no parameter meaning to document; the baseline of 4 applies. The description does not need to compensate for any parameter documentation gap.
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 the tool surfaces service-level information ('Price, network, and what this service returns') and distinguishes itself from try_it_free by offering a description rather than a sample. It is clear enough, though it leans on the tool name for the verb and leaves the leading 'Free.' slightly ambiguous.
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?
Explicitly routes to try_it_free when the agent needs an actual output sample rather than a description, which is a clear use-vs-alternative condition. It does not discuss compare_products or get_product_details, but their names make the boundary less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
try_it_freeFree sample — see real output before payingARead-onlyInspect
Free. Run a real extraction against one fixed sample product page and return the result.
USE THIS to decide whether the paid tools are worth paying for. It returns the identical shape get_product_details returns, produced by the identical code — not a hand-written example — so what you see is what you get. It takes no arguments and costs nothing.
You cannot choose the page: pointing a free endpoint at arbitrary URLs would just be the paid tool with no toll. Use get_product_details for the URL you actually care about.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| free | Yes | |
| note | Yes | |
| page | Yes | |
| stale | Yes | True if the sample could not be refreshed and is an older render. |
| status | Yes | |
| preview | Yes | |
| product | Yes | |
| sample_url | Yes | |
| cache_age_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds meaningful context: 'It takes no arguments and costs nothing' and 'produced by the identical code — not a hand-written example — so what you see is what you get.' This goes beyond annotations without 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?
The description is somewhat verbose but well-structured: it opens with the core purpose, then provides usage guidance and rationale. Every sentence adds value, though it could be tightened slightly.
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?
For a zero-parameter tool with an output schema, the description fully covers what the agent needs: what it does, why it's free, what to expect, and which sibling to use instead. Nothing essential is missing.
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?
The tool has zero parameters, so schema coverage is trivially 100%. The description reinforces 'takes no arguments,' which is consistent. Baseline of 4 is appropriate since there is nothing more to explain.
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 and resource: 'Run a real extraction against one fixed sample product page and return the result.' It clearly differentiates itself from siblings like get_product_details by focusing on the free sample nature, making it 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 explicitly says 'USE THIS to decide whether the paid tools are worth paying for' and tells the agent to 'Use get_product_details for the URL you actually care about.' It also explains why you cannot choose the page, giving a clear when-to-use vs. alternative.
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.
6 tool updates
- Added
compare_products - Removed
extract_product - Removed
extract_products - Added
get_product_details - Removed
preview_extract - Added
try_it_free
4 tool updates
- First observed
extract_product - First observed
extract_products - First observed
get_service_info - First observed
preview_extract
Related MCP Connectors
Clean product data from any URL. Schema.org + AI extraction. 200 free calls/month.
Page extraction, product offers and feed digests. Free preview, signed prices, x402 USDC.
Scrape, crawl, map and extract the web. Pay per call in USDC, no account or API key.
Pay-per-request webpage-to-Markdown extraction for AI agents. $0.005 USDC via x402 on Solana.
Related MCP Servers
- AlicenseAqualityBmaintenanceStructured product data from the open web — where platform APIs don't reach. Schema.org + AI extraction. Pay per call via Stripe MPP.241 npm3Apache 2.0
- 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.-
- AlicenseAqualityCmaintenancePay-per-use clean web reader for AI agents. URL in, markdown plus metadata out, in milliseconds. Settled per-call in USDC over x402 — no signup, no API keys.182 npm2MIT
- FlicenseNot gradedqualityFmaintenanceSemantic product search and price-intelligence API over Singapore e-commerce data. Computes auditable value-scores from Shannon entropy across vendor price distributions, with pay-per-call pricing via x402 (USDC) alongside Stripe.-
Glama MCP Gateway
Add one secure layer between your agents and this server.