Agent Data Tools: Web, documents and search
11 tools: web pages, JS apps and PDFs as text, feeds, sitemaps, search. 25 free calls.
我该使用它吗
质量与安全性
发现(7)
- HIGH
- MEDIUM在 extract 中
- MEDIUM在 summarize 中
- MEDIUM在 screenshot 中
- MEDIUM在 pdf_text 中
- MEDIUM在 extract_rendered 中
- MEDIUM在 feed 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"agent-data-tools-web": {
"url": "https://agent-data-tools.revmesh2074.workers.dev/mcp/web"
}
}
}远程端点
https://agent-data-tools.revmesh2074.workers.dev/mcp/webstreamable-http它能做什么
工具清单
工具(11)
🟢extract(url, maxChars, format, section)
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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to fetch"
},
"maxChars": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Maximum characters of body text to return (500-100000, default 20000)"
},
"format": {
"type": "string",
"enum": [
"text",
"markdown",
"both"
],
"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."
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"finalUrl": {
"type": "string"
},
"status": {
"type": "integer"
},
"contentType": {
"type": "string"
},
"sourceMetadata": {
"type": "object",
"required": [
"verification",
"authors",
"dates",
"truncated"
],
"description": "Page-level source declarations, not verified authorship or freshness. Head author/Open Graph date tags and bounded direct Schema.org JSON-LD Article/WebPage-like nodes only; exact-URL matches preferred, otherwise only one identity-free candidate. Author @id references resolve only to unambiguous local Person/Organization names, with both paths recorded. No external context/reference fetching or general JSON-LD expansion. Separate 2000-character value+provenance budget; 5 authors/10 dates. Original date strings are not normalized. Empty for Markdown/plain sources; unrelated entities and ambiguous nodes are omitted with warnings.",
"properties": {
"verification": {
"const": "not_verified"
},
"truncated": {
"type": "boolean"
},
"authors": {
"type": "array",
"maxItems": 5,
"items": {
"type": "object",
"required": [
"value",
"source"
],
"properties": {
"value": {
"type": "string",
"maxLength": 256
},
"source": {
"type": "string",
"maxLength": 256
}
}
}
},
"dates": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"required": [
"value",
"source",
"kind"
],
"properties": {
"value": {
"type": "string",
"maxLength": 128
},
"source": {
"type": "string",
"maxLength": 256
},
"kind": {
"enum": [
"published",
"modified"
]
}
}
}
}
}
},
"linkBaseUrl": {
"type": "string",
"description": "Effective source-derived HTTP(S) base for links: the first supported HTML base href outside inert/foreign subtrees, otherwise finalUrl. Credentials and non-HTTP(S) base values are ignored with a warning. HTML links/canonical use this base; raw Markdown keeps relative syntax and can be resolved using this field. No linked resource is fetched. This static interpretation does not evaluate scripts or Content Security Policy."
},
"sourceFormat": {
"enum": [
"html",
"markdown",
"plain"
],
"description": "Source interpretation. Markdown is identified by text/markdown, or a .md/.markdown final path served as text/plain (warned). Markdown syntax is retained verbatim within the cap, not converted to HTML or parsed for structured details; text also retains that syntax. HTML section IDs are unsupported for Markdown/plain text."
},
"title": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"lang": {
"type": [
"string",
"null"
]
},
"canonical": {
"type": [
"string",
"null"
]
},
"format": {
"enum": [
"text",
"markdown",
"both"
]
},
"text": {
"type": "string",
"maxLength": 100000
},
"markdown": {
"type": "string",
"maxLength": 100000
},
"textLength": {
"type": "integer",
"minimum": 0,
"description": "Full extracted text length before the character cap, within the input limit."
},
"truncated": {
"type": "boolean",
"description": "Input or requested primary representation is incomplete. Structured detail limits are reported separately in warnings."
},
"contentSelection": {
"enum": [
"main",
"article",
"body",
"plain"
]
},
"contentHash": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$"
},
"hashFormat": {
"enum": [
"text",
"markdown"
]
},
"fetchedAt": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"headings": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"required": [
"level",
"text",
"id"
],
"properties": {
"level": {
"type": "integer",
"minimum": 1,
"maximum": 6
},
"text": {
"type": "string"
},
"id": {
"type": [
"string",
"null"
],
"maxLength": 500,
"description": "Source HTML heading ID or direct child anchor ID, when present and supported; not a generated slug."
}
}
}
},
"section": {
"description": "Null for full primary-content reading. Otherwise the explicitly requested scope; title/description/canonical remain page-level metadata. Heading scope ends before the next same/higher-level heading, including nested subsections; container scope is its subtree.",
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"id",
"title",
"kind",
"headingLevel"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500
},
"title": {
"type": [
"string",
"null"
]
},
"kind": {
"enum": [
"heading",
"container"
]
},
"headingLevel": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 6
}
}
}
]
},
"links": {
"type": "array",
"maxItems": 200,
"items": {
"type": "object",
"required": [
"href",
"text"
],
"properties": {
"href": {
"type": "string"
},
"text": {
"type": "string"
}
}
}
},
"codeBlocks": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"required": [
"language",
"text",
"truncated"
],
"properties": {
"language": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string",
"maxLength": 20000
},
"truncated": {
"type": "boolean"
}
}
}
},
"tables": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"required": [
"caption",
"rows",
"headerRows",
"hasSpans",
"truncated"
],
"properties": {
"caption": {
"type": [
"string",
"null"
]
},
"rows": {
"type": "array",
"maxItems": 100,
"items": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string"
}
}
},
"headerRows": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 99
}
},
"hasSpans": {
"type": "boolean"
},
"truncated": {
"type": "boolean"
}
}
}
}
},
"required": [
"url",
"finalUrl",
"status",
"contentType",
"sourceFormat",
"linkBaseUrl",
"sourceMetadata",
"title",
"description",
"lang",
"canonical",
"headings",
"section",
"links",
"codeBlocks",
"tables",
"contentSelection",
"warnings",
"format",
"textLength",
"truncated",
"contentHash",
"hashFormat",
"fetchedAt"
],
"oneOf": [
{
"properties": {
"format": {
"const": "text"
},
"hashFormat": {
"const": "text"
}
},
"required": [
"text"
],
"not": {
"required": [
"markdown"
]
}
},
{
"properties": {
"format": {
"const": "markdown"
},
"hashFormat": {
"const": "markdown"
}
},
"required": [
"markdown"
],
"not": {
"required": [
"text"
]
}
},
{
"properties": {
"format": {
"const": "both"
},
"hashFormat": {
"const": "text"
}
},
"required": [
"text",
"markdown"
]
}
]
}🟢sitemap(url, contains, maxUrls, offset)
Read one public XML sitemap or sitemap index as structured URLs and source-reported dates. Supports gzip, substring filtering and pagination. Maximum 512 KiB expanded input and 1000 entries. Does not crawl pages or follow child sitemaps. Invalid XML and execution errors are not charged; a valid empty match is charged. Use to find which pages of a docs site to read before calling /extract. Example: url=https://www.sitemaps.org/sitemap.xml. 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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute public HTTP(S) XML sitemap URL; child sitemaps are not fetched automatically"
},
"contains": {
"type": "string",
"description": "Optional case-insensitive URL substring, at most 200 characters"
},
"maxUrls": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reported matching locations examined in one page (1-100, default 25); invalid/nonpublic locations may reduce returned entries"
},
"offset": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offset into distinct reported matching locations (0-1000, default 0); use nextOffset to continue"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"finalUrl": {
"type": "string"
},
"kind": {
"enum": [
"urlset",
"sitemapindex"
]
},
"entries": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"required": [
"url",
"lastModified"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048
},
"lastModified": {
"type": [
"string",
"null"
],
"maxLength": 80,
"description": "Source-reported value; not a verified modification time."
}
}
}
},
"reportedEntries": {
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"uniqueReportedLocations": {
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"missingOrInvalidLocations": {
"type": "integer",
"minimum": 0
},
"duplicateReportedLocations": {
"type": "integer",
"minimum": 0
},
"rejectedLocationsInPage": {
"type": "integer",
"minimum": 0
},
"matchingReportedLocations": {
"type": "integer",
"minimum": 0,
"description": "Distinct reported locations matching contains, before public-URL validation of the selected page."
},
"contains": {
"type": "string",
"maxLength": 200
},
"offset": {
"type": "integer",
"minimum": 0
},
"nextOffset": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"hasMore": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"text": {
"type": "string"
},
"format": {
"const": "text"
},
"hashFormat": {
"const": "text"
},
"contentHash": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$"
},
"sourceHash": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$"
},
"fetchedAt": {
"type": "string"
}
},
"required": [
"url",
"finalUrl",
"kind",
"entries",
"reportedEntries",
"uniqueReportedLocations",
"missingOrInvalidLocations",
"duplicateReportedLocations",
"rejectedLocationsInPage",
"matchingReportedLocations",
"contains",
"offset",
"nextOffset",
"hasMore",
"warnings",
"text",
"format",
"hashFormat",
"contentHash",
"sourceHash",
"fetchedAt"
]
}🟢summarize(url)
Give a URL, get a short summary of the page plus three to six key points, ready to drop into an agent's context. Fetches the page, strips navigation and boilerplate, and summarizes the main text with an LLM. HTML pages only; for a PDF use pdf_text, then ai_summarize_text. Use for research, news triage, link previews and deciding whether a page is worth reading in full. For the full text use extract. Example: url=https://en.wikipedia.org/wiki/HTTP_402. 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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to summarize"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢screenshot(url, fullPage)
Render any public web page in a real headless Chrome browser, with JavaScript executed, and get a JPEG screenshot (1280 px wide, base64) plus the final URL, HTTP status and page title. Set fullPage=true to capture up to 4000 px of page height. Use for visual checks, page previews, monitoring and feeding pages to vision models. Example: url=https://example.com. Price $0.02/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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the page to capture"
},
"fullPage": {
"description": "Set to true to capture the full page height (max 4000 px) instead of the 1280x800 viewport",
"type": [
"string",
"number",
"boolean"
]
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢papers(query, limit, fromYear)
Search scholarly literature across journals, conferences, preprints and books: title, authors, year, venue, citation count, DOI link and abstract where available. Optional fromYear filter and up to 20 results per call. Use for research agents, literature reviews, fact-checking a claim against published work, and finding the DOI for a citation. Example: query=CRISPR off-target effects. Price $0.003/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.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search terms, a title or a research question (3-300 characters)"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of results, 1-20 (default 5)"
},
"fromYear": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Only works published in or after this year"
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pdf_text(url, firstPage, pages, maxChars)
Download a public PDF (up to 10 MB) and return its text page by page, with title, author, page count and character counts. Choose a first page and how many pages to read (up to 200) and cap the output with maxChars. Scanned PDFs without a text layer, encrypted files and non-PDF URLs fail uncharged. Use to read papers, invoices, reports and manuals into an agent's context. 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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the PDF"
},
"firstPage": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "First page to read (default 1)"
},
"pages": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many pages to read (1-200, default 50)"
},
"maxChars": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Maximum characters of text returned across all pages (1000-200000, default 50000)"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢extract_rendered(url, format, maxChars, section)
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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the page"
},
"format": {
"type": "string",
"enum": [
"text",
"markdown",
"both"
],
"description": "text (default), markdown or both"
},
"maxChars": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Output limit, 500-100000 characters (default 20000)"
},
"section": {
"type": "string",
"description": "Optional exact HTML id to read only that element"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢feed(url, limit)
Read a public RSS 2.0, RSS 1.0 or Atom feed and get the feed title, link and description plus its newest items: title, link, date (ISO 8601), short plain-text summary, author and id. Up to 50 items, feeds up to 2 MB. Lenient with real-world feeds; a page that is not a feed returns 422, uncharged. Use to follow news, blogs, release notes or podcasts without scraping pages. Example: url=https://github.blog/feed/. Price $0.003/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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the feed"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Items to return (1-50, default 20)"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢url_meta(url)
Fetch a public web page's head and return link-preview metadata: title, description, site name, type, preview image, canonical URL, language, author, published time, favicon, theme colour, and every OpenGraph and Twitter-card field. Reads at most 512 KB and never runs JavaScript. Use to build link previews, label citations or check how a URL will unfurl before sharing it. Example: url=https://github.com/. Price $0.003/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.
输入模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute public http(s) URL of the page"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢wikipedia(title, lang)
Short summary of a Wikipedia article in any language edition: title, one-paragraph extract, description, thumbnail and page URL. Use to ground an agent's answer in a quick, citable fact sheet. Example: title=Stockholm. Price $0.003/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.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Article title"
},
"lang": {
"type": "string",
"description": "Language code (default en)"
}
},
"required": [
"title"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢dictionary(word)
Definitions of an English word from Wiktionary, grouped by part of speech, with example sentences where Wiktionary gives them, plus the page link and the CC BY-SA attribution to show. Use for writing help, vocabulary, translation checks and word games. Example: word=serendipity. Price $0.003/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.
输入模式
{
"type": "object",
"properties": {
"word": {
"type": "string",
"description": "An English word"
}
},
"required": [
"word"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}社区
证据