
5 tools: PDF, Word, Excel, PowerPoint and web pages to Markdown; invoice fields as JSON.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. 'Bearer adt_...' API key from https://agent-data-tools.revmesh2074.workers.dev/credits to pay by card. Leave empty to pay each call with x402 (USDC).
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.
Extract named fields from a document as JSON: give a PDF, Word, Excel or PowerPoint file, a scan or a photo (PNG, JPEG, WebP) by URL or in a POST body (up to 10 MB; images 3 MB) and the field names you want, such as invoice_number, total, due_date. An AI model reads the file, scans by OCR, and returns one JSON object, with null where a value is not stated. Use to turn invoices, receipts, orders and contracts into rows. Price $0.03/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
Absolute public http(s) URL of the file (or send the file in a POST body instead)
Comma-separated field names to extract (1-30). For rows, give the row keys in brackets: line_items[description,quantity,amount]
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http agent-data-tools-documents https://agent-data-tools.revmesh2074.workers.dev/mcp/documents
Headers
Authorization (optional, not in the config above): Optional. 'Bearer adt_...' API key from https://agent-data-tools.revmesh2074.workers.dev/credits to pay by card. Leave empty to pay each call with x402 (USDC).Tool list last changed Nov 14, 2026.
Extract named fields from a document as JSON: give a PDF, Word, Excel or PowerPoint file, a scan or a photo (PNG, JPEG, WebP) by URL or in a POST body (up to 10 MB; images 3 MB) and the field names you want, such as invoice_number, total, due_date. An AI model reads the file, scans by OCR, and returns one JSON object, with null where a value is not stated. Use to turn invoices, receipts, orders and contracts into rows. Price $0.03/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute public http(s) URL of the file (or send the file in a POST body instead) |
| fields* | string | Comma-separated field names to extract (1-30). For rows, give the row keys in brackets: line_items[description,quantity,amount] |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"fields"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the file (or send the file in a POST body instead)"
},
"fields": {
"type": "string",
"description": "Comma-separated field names to extract (1-30). For rows, give the row keys in brackets: line_items[description,quantity,amount]"
}
}
}Convert a document to text or Markdown: Word (.docx) with headings, lists and tables, Excel (.xlsx) sheet by sheet, PowerPoint (.pptx) slide by slide, a PDF's text, and scanned PDFs or images (PNG, JPEG, WebP) by OCR. Give a public file's URL, or send the file in a POST body (10 MB; images 3 MB). Old .doc/.xls/.ppt and password-protected files fail uncharged. Use to read attachments, scans and spreadsheets into an agent, RAG or a workflow. Example: url=https://calibre-ebook.com/downloads/demos/demo.docx. Price $0.005/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute public http(s) URL of the file (or send the file in a POST body instead) |
| format | string | markdown (default: headings, lists and tables kept) or text |
| maxChars | integer | Maximum characters of text returned (1000-200000, default 50000) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the file (or send the file in a POST body instead)"
},
"format": {
"enum": [
"markdown",
"text"
],
"type": "string",
"description": "markdown (default: headings, lists and tables kept) or text"
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum characters of text returned (1000-200000, default 50000)"
}
}
}Fetch any public web page URL and get clean, LLM-ready text or Markdown: main content, code blocks, tables, links and headings, for RAG and agent context. Static HTML, Markdown or text; optional section ID. Default 20,000 output characters, max 100,000; input 2 MiB. No JavaScript rendering (see /extract/rendered), logins or paywalls. Empty pages, bad sections, browser challenges and errors are not charged. Use to read docs or articles. Example: url=https://example.com. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute http(s) URL of the page to fetch |
| format | string | Returned representation: text (default), markdown, or both. HTML structured details are included in every format; Markdown/plain sources have empty details. |
| section | string | Optional exact visible HTML ID within primary content, 1-500 characters. Heading scope includes subsections until next same/higher-level heading; section/article/main/div scope is its subtree. Missing/ambiguous/unsupported targets fail uncharged. URL fragments alone do not select a section. Leave it out to read the whole page. |
| maxChars | integer | Maximum characters of body text to return (500-100000, default 20000) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to fetch"
},
"format": {
"enum": [
"text",
"markdown",
"both"
],
"type": "string",
"description": "Returned representation: text (default), markdown, or both. HTML structured details are included in every format; Markdown/plain sources have empty details."
},
"section": {
"type": "string",
"description": "Optional exact visible HTML ID within primary content, 1-500 characters. Heading scope includes subsections until next same/higher-level heading; section/article/main/div scope is its subtree. Missing/ambiguous/unsupported targets fail uncharged. URL fragments alone do not select a section. Leave it out to read the whole page."
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum characters of body text to return (500-100000, default 20000)"
}
}
}Same output as /extract, but the page is first rendered in a real browser, so single-page apps and pages that build their content with JavaScript come back with their text instead of an empty shell. Waits for the network to settle (up to 15 seconds). Public pages only; no login. Use when /extract returns EXTRACTION_EMPTY or too little text for a page you can read in a browser. Example: url=https://example.com/. Price $0.01/call via x402 USDC or a card key (/credits); failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute public http(s) URL of the page |
| format | string | text (default), markdown or both |
| section | string | Optional exact HTML id to read only that element |
| maxChars | integer | Output limit, 500-100000 characters (default 20000) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the page"
},
"format": {
"enum": [
"text",
"markdown",
"both"
],
"type": "string",
"description": "text (default), markdown or both"
},
"section": {
"type": "string",
"description": "Optional exact HTML id to read only that element"
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Output limit, 500-100000 characters (default 20000)"
}
}
}Extract the text of a public PDF (up to 10 MB) from its URL, page by page, with title, author and page count. Choose the first page, how many pages (up to 200) and maxChars. arXiv abstract links work. If a site blocks our fetch, the Internet Archive's dated copy is read and the answer says so. Scanned, encrypted and non-PDF files fail uncharged. Use to read papers, invoices, reports and manuals into an agent. Example: url=https://bitcoin.org/bitcoin.pdf. Price $0.005/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Argument | Type | Description |
|---|---|---|
| url* | string | Absolute public http(s) URL of the PDF |
| pages | integer | How many pages to read (1-200, default 20) |
| maxChars | integer | Maximum characters of text returned across all pages (1000-200000, default 50000) |
| firstPage | integer | First page to read (default 1) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the PDF"
},
"pages": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many pages to read (1-200, default 20)"
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum characters of text returned across all pages (1000-200000, default 50000)"
},
"firstPage": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "First page to read (default 1)"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to fetch"
},
"format": {
"enum": [
"text",
"markdown",
"both"
],
"type": "string",
"description": "Returned representation: text (default), markdown, or both. HTML structured details are included in every format; Markdown/plain sources have empty details."
},
"section": {
"type": "string",
"description": "Optional exact visible HTML ID within primary content, 1-500 characters. Heading scope includes subsections until next same/higher-level heading; section/article/main/div scope is its subtree. Missing/ambiguous/unsupported targets fail uncharged. URL fragments alone do not select a section."
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum characters of body text to return (500-100000, default 20000)"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to fetch"
},
"format": {
"enum": [
"text",
"markdown",
"both"
],
"type": "string",
"description": "Returned representation: text (default), markdown, or both. HTML structured details are included in every format; Markdown/plain sources have empty details."
},
"section": {
"type": "string",
"description": "Optional exact visible HTML ID within primary content, 1-500 characters. Heading scope includes subsections until next same/higher-level heading; section/article/main/div scope is its subtree. Missing/ambiguous/unsupported targets fail uncharged. URL fragments alone do not select a section. Leave it out to read the whole page."
},
"maxChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum characters of body text to return (500-100000, default 20000)"
}
}
}