# Tollkit (remote · extract.tollkit.dev)

Extract product data, or notarize what a page said. Paid per call in USDC, no signup or API key.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- remote · `extract.tollkit.dev`: 63/100 (this document), [markdown](https://verifymcp.io/servers/ultrastarz-x402-extract/extract.md), [page](https://verifymcp.io/servers/ultrastarz-x402-extract/extract)

## Channel facts

- Endpoint: `https://extract.tollkit.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - 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.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (43% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### 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.

### Claude

```bash
claude mcp add --transport http ultrastarz-x402-extract 'https://extract.tollkit.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ultrastarz-x402-extract": {
      "url": "https://extract.tollkit.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ultrastarz-x402-extract": {
      "type": "http",
      "url": "https://extract.tollkit.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ultrastarz-x402-extract]
url = "https://extract.tollkit.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ultrastarz-x402-extract": {
      "type": "remote",
      "url": "https://extract.tollkit.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ultrastarz-x402-extract --url 'https://extract.tollkit.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ultrastarz-x402-extract:
    url: "https://extract.tollkit.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ultrastarz-x402-extract": {
      "Transport": "http",
      "Url": "https://extract.tollkit.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ultrastarz-x402-extract -t streamable-http -u 'https://extract.tollkit.dev/mcp'
```

### Other

```json
{
  "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.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 63, 0)

- [functional regression] Tool coverage: 50% → 43%
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “check_my_balance”

### 2026-09-20 (score 63)

First indexed and scored.

## MCP tools (7)

### `get_product_details` (~654 tokens)

Get product details from a URL

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…

Input parameters:

- `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, required): Absolute https:// URL of a single product page. Not a search or category page.

Output parameters:

- `cache_age_seconds` (number)
- `cached` (boolean): 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)
- `product` (object)
- `provenance` (object): 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`: Present only when the browser landed somewhere other than the URL you gave. The data describes `final`, not `requested`.
- `settlement` (string|null): Base64 x402 settlement receipt, when the facilitator returned one.
- `status` (string)

### `try_it_free` (~113 tokens)

Free sample — see real output before paying

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.

Output parameters:

- `cache_age_seconds` (number)
- `free` (boolean)
- `note` (string)
- `page` (object)
- `preview` (boolean)
- `product` (object)
- `sample_url` (string)
- `stale` (boolean): True if the sample could not be refreshed and is an older render.
- `status` (string)

### `compare_products` (~321 tokens)

Get details for several products at once

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.

Input parameters:

- `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, required): Up to 5 absolute https:// product page URLs. Duplicates are removed and not billed twice.

Output parameters:

- `billing` (string): The billing rule, restated on every response rather than only in the docs.
- `failed` (number)
- `requested` (number)
- `results` (array)
- `settlement` (string|null)
- `status` (string)
- `succeeded` (number)

### `attest_page` (~380 tokens)

Get signed proof of what a page said

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.

Input parameters:

- `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, required): 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.

### `verify_attestation` (~110 tokens)

Check an attestation is genuine

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.

Input parameters:

- `attestation` (string, required): The attestation as JSON text: either the whole response from attest_page or just its `attestation` object.

### `check_my_balance` (~119 tokens)

Check my wallet balance

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.

Input parameters:

- `address` (string, required): 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.

### `get_service_info` (~41 tokens)

Service info

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.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ultrastarz-x402-extract/extract#diagnostics

## Score history

- 2026-09-21: 63
- 2026-09-20: 63

## Common questions

### 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.

## Links

- Remote endpoint: https://extract.tollkit.dev/mcp
- Repository: https://github.com/UltraStarz/x402-extract-mcp
- Website: https://extract.tollkit.dev/
- Changelog RSS feed: https://verifymcp.io/servers/ultrastarz-x402-extract/extract.xml
- Changelog JSON feed: https://verifymcp.io/servers/ultrastarz-x402-extract/extract.json
- HTML version of this page: https://verifymcp.io/servers/ultrastarz-x402-extract/extract
