{"name":"io.github.UltraStarz/x402-extract","slug":"ultrastarz-x402-extract","title":"Tollkit Extract","description":"URL in, schema.org/Product JSON out. $0.01 USDC via x402. Free preview, no account or key.","url":"https://mcp.market/server/ultrastarz-x402-extract","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce","scraping"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-20T08:05:48.000Z","license":null},"uptime":{"percent":100,"checks":1,"ok":1,"last_checked_at":"2026-09-20T11:35:43.352Z","last_ok_at":"2026-09-20T11:35:43.352Z","latency_ms":251},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/UltraStarz/x402-extract-mcp","website":"https://extract.tollkit.dev","version":"0.2.0","remotes":[{"type":"streamable-http","url":"https://extract.tollkit.dev/mcp"}],"packages":[],"tools":[{"name":"attest_page","description":"Prove what a web page said, at a time, in a way someone who distrusts you can check.\n\nRenders the page and returns a signed, timestamped record of it: the text and its SHA-256, the HTTP status, the response headers, the serving IP, and the TLS certificate the site presented. Optionally a screenshot and its hash. All of it hashed into one claim and signed, so any single altered byte breaks the signature.\n\nUse it when a page might change or be denied later: terms of service before you agree, a price before you act on it, a policy you are relying on, a claim a competitor published, a listing that can be edited.\n\nVerification is free, needs no account, and does not depend on this service continuing to exist — the math is public and `verify_attestation` explains how to redo it yourself. We keep no copy, so the response you receive IS the evidence. Store it.\n\n$0.25 USDC per call over x402. A render that fails costs nothing.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute https:// URL of the page to attest to. Anything a dispute could turn on: terms of service, a price, a published policy, a competitor's claim, a listing that may be edited later."},"screenshot":{"type":"boolean","description":"Default false in MCP. A screenshot makes the evidence much stronger, but the image comes back inline as roughly 55,000 characters of base64. With it false the attestation is text-only and internally complete: it claims no screenshot and commits to no hash you cannot check. Set true when the visual appearance is the thing in dispute and you can afford the bytes."},"payment":{"type":"string","description":"Base64 x402 payment payload. Omit it to receive a quote instead of an attestation; sign that and call again."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_products","description":"Price the same product at several stores — up to 5 URLs in ONE call and ONE payment.\n\nUSE 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.\n\nRETURNS 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.\n\nCOST $0.15 flat for up to 5 URLs — cheaper per page than calling get_product_details 5 times.\n\nBILLING, 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.\n\nDuplicate URLs are removed and not billed twice.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"},"description":"Up to 5 absolute https:// product page URLs. Duplicates are removed and not billed twice."},"allow_redirect":{"type":"boolean","description":"Applies to every URL. See get_product_details for what it does."},"payment":{"type":"string","description":"Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements."}},"required":["urls"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_product_details","description":"Find out what a product is and what it costs, from its page URL.\n\nUSE 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.\n\nDO 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.\n\nRETURNS 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.\n\nHOW: the page is rendered in a real headless browser before extraction, so JavaScript-built pages work where a plain fetch returns an empty shell.\n\nCOST $0.05 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`.\n\nEVERY RESPONSE SAYS WHERE EACH FIELD CAME FROM. `provenance.declared` lists the fields whose values match what the merchant published in schema.org JSON-LD — their own number, the one they publish for Google. `provenance.inferred` lists the ones a model read off the page, which might be a strikethrough price or a neighbouring product. Act on declared values; verify inferred ones if the decision matters.\n\nA 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.\n\nA 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`.\n\nCall `try_it_free` first if you want to see real output before spending anything.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute https:// URL of a single product page. Not a search or category page."},"allow_redirect":{"type":"boolean","description":"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."},"payment":{"type":"string","description":"Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_service_info","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"try_it_free","description":"Free. Run a real extraction against one fixed sample product page and return the result.\n\nUSE 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.\n\nYou 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"verify_attestation","description":"Free, forever, no account. Hand back an attestation -- yours or one someone else gave you -- and find out whether the signature holds and whether we issued it. Works on attestations this service did not produce: the answer for those is a clear no, which is the point. Holds no database, so it keeps working whoever is running it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"attestation":{"type":"string","description":"The attestation as JSON text: either the whole response from attest_page or just its `attestation` object."}},"required":["attestation"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-20T11:35:54.682Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:35:54.606Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 952ms"]},"poisoning":{"score":13,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool get_product_details: …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.05 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`. EVERY RESPONSE SAYS WHERE EACH FIELD CAME FROM. `provenance.declared` lists the fields whose values match what the merchant published in schema.org JSON-LD — their own number, the one they publish for Google. `provenance.inferred` lists the ones a model read off the page, which might be a strikethrough price or a neighbouring product. Act on declared values; verify inferred ones if the decision matters. 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.…"}],"inputs":{"probes":[{"url":"https://extract.tollkit.dev/mcp","reachable":true,"authRequired":false,"latencyMs":952,"serverInfo":{"name":"tollkit-extract","version":"0.4.0"}}],"packages":[],"repo":{"found":true,"owner":"UltraStarz","repo":"x402-extract-mcp","archived":false,"pushedAt":"2026-09-20T08:05:48Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/283106524?v=4","ownerCreatedAt":"2026-05-09T07:51:50Z"},"icon":{"url":"https://extract.tollkit.dev/favicon.ico","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-09-20T08:05:48.000Z","score":23}}}},"grade_history":[],"reviews":[]}