Pay-per-call web reader (Markdown/RAG chunks) and agent utilities; x402 USDC on Base.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use when: Before fetching, quoting, summarizing or training on a web page with an automated agent: find out whether the site opts out of your crawler token or of AI use. Check robots.txt (RFC 9309) for your crawler token (ua=GPTBot, ClaudeBot, CCBot, ... or *), plus ai.txt, TDMRep and X-Robots-Tag/meta noai, before fetching or training on a URL. Returns verdict allowed|disallowed|unclear with reasons. Not a legal opinion. $0.005 USDC per successful call via x402 (USDC on eip155:8453); failed calls are not charged.
Public http(s) URL you intend to fetch or use
robots.txt product token of your crawler (GPTBot, ClaudeBot, CCBot, PerplexityBot, Google-Extended, ...) or * (default)
Use when: Before fetching, quoting, summarizing or training on a web page with an automated agent: find out whether the site opts out of your crawler token or of AI use. Check robots.txt (RFC 9309) for your crawler token (ua=GPTBot, ClaudeBot, CCBot, ... or *), plus ai.txt, TDMRep and X-Robots-Tag/meta noai, before fetching or training on a URL. Returns verdict allowed|disallowed|unclear with reasons. Not a legal opinion. $0.005 USDC per successful call via x402 (USDC on eip155:8453); failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| ua | string | robots.txt product token of your crawler (GPTBot, ClaudeBot, CCBot, PerplexityBot, Google-Extended, ...) or * (default) |
| url* | string | Public http(s) URL you intend to fetch or use |
{
"type": "object",
"required": [
"url"
],
"properties": {
"ua": {
"type": "string",
"default": "*",
"pattern": "^(\\*|[A-Za-z0-9][A-Za-z0-9_.-]{0,63})$",
"maxLength": 64,
"description": "robots.txt product token of your crawler (GPTBot, ClaudeBot, CCBot, PerplexityBot, Google-Extended, ...) or * (default)"
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL you intend to fetch or use"
}
},
"additionalProperties": false
}Use when: Before sending email, creating a contact/CRM record or accepting a sign-up: find out whether the address can receive mail and whether it is disposable, a role mailbox (info, support, sales...) or a free provider. Check an email address: syntax, MX/null-MX, SPF, DMARC, disposable, role and free-provider flags, verdict. $0.005 USDC per successful call via x402 (USDC on eip155:8453); failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| email* | string | Email address to check |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "Email address to check"
}
},
"additionalProperties": false
}Use when: After an LLM, tool or API returns structured output and before you pass it on: check it against the JSON Schema the next step expects, and optionally repair broken JSON text (trailing commas, code fences, single quotes) first. Validate JSON against a JSON Schema (draft-07/2019-09/2020-12), optionally repairing broken LLM JSON first. $0.005 USDC per successful call via x402 (USDC on eip155:8453); failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| data* | any | JSON text (string) to parse/repair, or any JSON value to validate as-is |
| repair | boolean | Repair broken JSON text before validating (default false) |
| schema | object | JSON Schema (draft-06/07 default, 2019-09 or 2020-12 via $schema). Omit to only check/repair syntax. |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"description": "JSON text (string) to parse/repair, or any JSON value to validate as-is"
},
"repair": {
"type": "boolean",
"description": "Repair broken JSON text before validating (default false)"
},
"schema": {
"type": "object",
"description": "JSON Schema (draft-06/07 default, 2019-09 or 2020-12 via $schema). Omit to only check/repair syntax."
}
},
"additionalProperties": false
}Same as read_page_markdown plus heading-aware chunks (heading path, size, token estimate, sha256) and an Ed25519-signed receipt (public key: /.well-known/x402-receipt-key). $0.02 USDC per successful read via x402 (Base); failed reads are not charged.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http(s) URL of the page to read |
| links | string | none: remove link and image URLs, keep the visible text (fewer tokens). No extra charge |
| query | string | What you are looking for. Returns only the top_k most relevant passages (BM25) instead of the whole page, with score and position. No extra charge |
| top_k | integer | With query: how many passages to return (fewer may come back when fewer contain a query term) |
| usd_per_mtok | number | Your model's input price in USD per million tokens, used only for savings.est_saved_usd (default 2) |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL of the page to read"
},
"links": {
"enum": [
"keep",
"none"
],
"type": "string",
"default": "keep",
"description": "none: remove link and image URLs, keep the visible text (fewer tokens). No extra charge"
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "What you are looking for. Returns only the top_k most relevant passages (BM25) instead of the whole page, with score and position. No extra charge"
},
"top_k": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "With query: how many passages to return (fewer may come back when fewer contain a query term)"
},
"usd_per_mtok": {
"type": "number",
"maximum": 1000,
"description": "Your model's input price in USD per million tokens, used only for savings.est_saved_usd (default 2)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Use instead of fetching raw HTML when you need a public page's text. Returns the main content as clean Markdown plus title, byline, excerpt, lang, site_name, published_time, word/token estimate, content sha256 and a savings token estimate. Optional query (+top_k) returns only the most relevant passages (BM25) with score and position; links=none drops link URLs. $0.005 USDC per successful read via x402 (Base); failed reads are not charged.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http(s) URL of the page to read |
| links | string | none: remove link and image URLs, keep the visible text (fewer tokens). No extra charge |
| query | string | What you are looking for. Returns only the top_k most relevant passages (BM25) instead of the whole page, with score and position. No extra charge |
| top_k | integer | With query: how many passages to return (fewer may come back when fewer contain a query term) |
| format | string | markdown ($0.005) or chunks ($0.02: + heading-aware chunks + signed receipt) |
| usd_per_mtok | number | Your model's input price in USD per million tokens, used only for savings.est_saved_usd (default 2) |
Use when: Before opening, citing or paying to read a link: confirm it resolves (final URL after redirects, HTTP status, dead links) and get its title, description, site name and dates cheaply. For the full text use /v1/read. Cheap link check before opening, citing or paying to read a URL: final URL after redirects, HTTP status (dead links), title, description, lang, canonical, siteName, og/twitter tags, favicon, JSON-LD, publishedAt. No body text (use /v1/read for that). $0.005 USDC per successful call via x402 (USDC on eip155:8453); failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http(s) URL to inspect |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL to inspect"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL of the page to read"
},
"links": {
"enum": [
"keep",
"none"
],
"type": "string",
"default": "keep",
"description": "none: remove link and image URLs, keep the visible text (fewer tokens). No extra charge"
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "What you are looking for. Returns only the top_k most relevant passages (BM25) instead of the whole page, with score and position. No extra charge"
},
"top_k": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "With query: how many passages to return (fewer may come back when fewer contain a query term)"
},
"format": {
"enum": [
"markdown",
"chunks"
],
"type": "string",
"default": "markdown",
"description": "markdown ($0.005) or chunks ($0.02: + heading-aware chunks + signed receipt)"
},
"usd_per_mtok": {
"type": "number",
"maximum": 1000,
"description": "Your model's input price in USD per million tokens, used only for savings.est_saved_usd (default 2)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}