Tollkit
REMOTE · EXTRACT.TOLLKIT.DEV · SCANNED SEP 21
Extract product data, or notarize what a page said. Paid per call in USDC, no signup or API key.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 7 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1870 tokens (~267/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (43% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Tollkit MCP server?
Tollkit is a hosted endpoint at https://extract.tollkit.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · extract.tollkit.dev
claude mcp add --transport http ultrastarz-x402-extract 'https://extract.tollkit.dev/mcp'
{
"mcpServers": {
"ultrastarz-x402-extract": {
"url": "https://extract.tollkit.dev/mcp"
}
}
} {
"servers": {
"ultrastarz-x402-extract": {
"type": "http",
"url": "https://extract.tollkit.dev/mcp"
}
}
} [mcp_servers.ultrastarz-x402-extract] url = "https://extract.tollkit.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ultrastarz-x402-extract": {
"type": "remote",
"url": "https://extract.tollkit.dev/mcp",
"enabled": true
}
}
} openclaw mcp add ultrastarz-x402-extract --url 'https://extract.tollkit.dev/mcp' --transport streamable-http
mcp_servers:
ultrastarz-x402-extract:
url: "https://extract.tollkit.dev/mcp" {
"McpServers": {
"ultrastarz-x402-extract": {
"Transport": "http",
"Url": "https://extract.tollkit.dev/mcp"
}
}
} assistant mcp add ultrastarz-x402-extract -t streamable-http -u 'https://extract.tollkit.dev/mcp'
{
"mcpServers": {
"ultrastarz-x402-extract": {
"type": "http",
"url": "https://extract.tollkit.dev/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 0
- Tool coverage: 50% → 43% ▼ functional
- Stability: unverified → 0.03 ▲ functional
- New tool “check_my_balance” functional
- 20 Sept 26 63
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Probed https://extract.tollkit.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=extract.tollkit.dev | CN=YE1,O=Let's Encrypt,C=US | 20 Sept 2026 | 19 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6fe34c2d3b61ab0d60066b0039ceecbbba0 |
| SANs: extract.tollkit.dev | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of extract.tollkit.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| tollkit.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://extract.tollkit.dev/mcp | Verified | 200 | |
| http (plaintext) | http://extract.tollkit.dev/mcp | HTTPS enforced | 301 | https://extract.tollkit.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
attest_page Get signed proof of what a page said ~380
Prove what a web page said, at a time, in a way someone who distrusts you can check. Renders 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. Use 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. Verification 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. $0.25 USDC per call over x402. A render that fails costs nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| payment | string | – | Base64 x402 payment payload. Omit it to receive a quote instead of an attestation; sign that and call again. |
| screenshot | boolean | – | 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… |
| url | string | yes | 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. |
No output schema declared.
No examples provided.
check_my_balance Check my wallet balance ~119
Free. Check how much USDC is left in your own wallet on Base, so you can tell your human before you run out. Returns the balance and a link your human can use to refill you from their own wallet. Tollkit never holds anyone's funds or keys.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Your wallet address (0x...). The address you pay from. |
| low_below | number | – | USDC amount you consider low. Default 1. |
| network | string | – | Default base. Use sepolia for test money. |
No output schema declared.
No examples provided.
compare_products Get details for several products at once ~321
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.15 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 | Type | Req | Description |
|---|---|---|---|
| allow_redirect | boolean | – | Applies to every URL. See get_product_details for what it does. |
| payment | string | – | Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements. |
| urls | array | yes | Up to 5 absolute https:// product page URLs. Duplicates are removed and not billed twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| billing | string | yes | The billing rule, restated on every response rather than only in the docs. |
| failed | number | yes | – |
| requested | number | yes | – |
| results | array | yes | – |
| settlement | string|null | yes | – |
| status | string | yes | – |
| succeeded | number | yes | – |
No examples provided.
get_product_details Get product details from a URL ~654
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 categor…
| Name | Type | Req | Description |
|---|---|---|---|
| allow_redirect | boolean | – | 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… |
| payment | string | – | Base64-encoded x402 payment payload. Omit on the first call to receive payment requirements. |
| url | string | yes | Absolute https:// URL of a single product page. Not a search or category page. |
| Name | Type | Req | Description |
|---|---|---|---|
| cache_age_seconds | number | yes | – |
| cached | boolean | 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. |
| page | object | yes | – |
| product | object | yes | – |
| provenance | object | yes | Where each field came from. `declared` matches what the merchant published in schema.org data — their own number. `inferred` was read off the page by a model. Null fields appear in neither. Treat a d… |
| redirect | – | yes | Present only when the browser landed somewhere other than the URL you gave. The data describes `final`, not `requested`. |
| settlement | string|null | yes | Base64 x402 settlement receipt, when the facilitator returned one. |
| status | string | yes | – |
No examples provided.
get_service_info Service info ~41
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
try_it_free Free sample — see real output before paying ~113
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| cache_age_seconds | number | yes | – |
| free | boolean | yes | – |
| note | string | yes | – |
| page | object | yes | – |
| preview | boolean | yes | – |
| product | object | yes | – |
| sample_url | string | yes | – |
| stale | boolean | yes | True if the sample could not be refreshed and is an older render. |
| status | string | yes | – |
No examples provided.
verify_attestation Check an attestation is genuine ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| attestation | string | yes | The attestation as JSON text: either the whole response from attest_page or just its `attestation` object. |
No output schema declared.
No examples provided.
What is the Tollkit MCP server?
Tollkit is an MCP server listed in the public MCP registry as io.github.UltraStarz/x402-extract. Extract product data, or notarize what a page said. Paid per call in USDC, no signup or API key. This page covers its hosted endpoint (https://extract.tollkit.dev/mcp).
Is the Tollkit MCP server safe to use?
Tollkit scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Tollkit MCP server expose?
Tollkit exposes 7 tools: get_product_details, try_it_free, compare_products, attest_page, verify_attestation, and 2 more. Their descriptions and schemas cost roughly 1,738 tokens of context every time the server is loaded.
Does the Tollkit MCP server require authentication?
No. We connected to Tollkit without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Tollkit MCP server still maintained?
Tollkit is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.