Adam Hale Tools: Web Research and Open Data
Free web lookups; PDF to Markdown, audio transcripts, screenshots, WHOIS/DNS paid per call via x402.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"web-research": {
"url": "https://tools.adamhaleworks.workers.dev/mcp"
}
}
}원격 엔드포인트
https://tools.adamhaleworks.workers.dev/mcpstreamable-http할 수 있는 일
도구 목록
도구 (12)
🟢tech_stack_lookup(domains, x402_payment)
Detect what a website is built with: CMS, frameworks, analytics, CDN, hosting, email and DNS providers (MX, SPF, DMARC) and a security-header grade, from one fetch of its homepage. Free for 1 domain per call (10 free calls a minute per IP); 2-3 domains in one call cost $0.005 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public domain or homepage URL."
},
"minItems": 1,
"maxItems": 3,
"description": "1-3 domains or homepage URLs, e.g. [\"wordpress.org\"]. One domain is free; two or three are one paid call."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"domains"
],
"additionalProperties": false
}🟢seo_meta_tags_check(urls, x402_payment)
On-page SEO audit of web pages: title and meta description lengths, canonical, robots/noindex and X-Robots-Tag, H1/H2, hreflang, Open Graph, Twitter card and JSON-LD rich-result checks, with machine-readable issue codes. Free for 1 URL when the free web tool is enabled; up to 3 URLs per call cost $0.004 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public http(s) URL or bare domain (bare domain = its https:// homepage). No IP addresses, internal names or ports other than 80/443."
},
"minItems": 1,
"maxItems": 3,
"description": "1-3 page URLs."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"urls"
],
"additionalProperties": false
}🟢url_status_check(urls, x402_payment)
Check whether links are alive: HTTP status, every redirect hop, final URL and a classification (ok, redirect, broken, restricted, blocked_by_site, disallowed_by_robots_txt, timeout). HEAD first, GET to confirm errors. Free for 1 URL when the free web tool is enabled; up to 10 URLs per call cost $0.003 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public http(s) URL or bare domain (bare domain = its https:// homepage). No IP addresses, internal names or ports other than 80/443."
},
"minItems": 1,
"maxItems": 10,
"description": "1-10 URLs to check."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"urls"
],
"additionalProperties": false
}🟢sitemap_urls(url, bulk, x402_payment)
List the pages of a website from its sitemaps: finds them via robots.txt or common paths, follows sitemap indexes, reads gzip, text and feed sitemaps, returns URLs with lastmod. Free: up to 2,000 URLs from 12 sitemap files. With bulk=true: up to 5,000 URLs from 20 files for $0.004 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A domain (sitemaps are discovered) or the URL of one sitemap file, e.g. \"github.blog\"."
},
"bulk": {
"type": "boolean",
"default": false,
"description": "true = paid tier (5,000 URLs, 20 files)."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢rss_to_json(urls, x402_payment)
Read news feeds or blogs as clean JSON: accepts feed URLs or plain site URLs (finds the feed via <link rel=alternate>), normalises RSS 0.9x/2.0, RDF, Atom and JSON Feed to one item schema (title, url, publishedAt, author, categories, summary), up to 100 items per feed. Free for 1 feed; up to 5 feeds per call cost $0.003 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public http(s) URL or bare domain (bare domain = its https:// homepage). No IP addresses, internal names or ports other than 80/443."
},
"minItems": 1,
"maxItems": 5,
"description": "1-5 feed or site URLs."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"urls"
],
"additionalProperties": false
}🟢ted_tender_search(q, country, open_only, page, bulk, ...)
Search EU public procurement notices (tenders, contract notices, awards) on TED through the official API v3: keywords, optional buyer country and open-deadline filter, newest first. Free: the 25 newest matches. With bulk=true or page: 100 notices per page, pages 1-50, for $0.002 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Keywords; a comma separates alternatives (OR), up to 5, e.g. \"cloud hosting,data centre\"."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Optional buyer country, ISO 3166-1 alpha-2 (EU/EEA + CH), e.g. \"FR\"."
},
"open_only": {
"type": "boolean",
"default": false,
"description": "true = only notices whose tender deadline has not passed."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Paid tier: result page of 100 notices."
},
"bulk": {
"type": "boolean",
"default": false,
"description": "true = paid tier (100 notices per page)."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"q"
],
"additionalProperties": false
}🟢page_to_markdown(urls, x402_payment)
Read web pages: returns each page's main content as clean Markdown without navigation, scripts or ads (headings, lists, absolute links, tables, code blocks), plus title, description, language, canonical URL and word count; up to 100,000 characters per page. Does not get past bot walls. Paid only: up to 3 URLs per call for $0.002 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public http(s) URL or bare domain (bare domain = its https:// homepage). No IP addresses, internal names or ports other than 80/443."
},
"minItems": 1,
"maxItems": 3,
"description": "1-3 page URLs."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"urls"
],
"additionalProperties": false
}🟢domain_intel(domains, x402_payment)
Who a domain is registered with and since when (RDAP: registrar, created, expires, age, status, nameservers, DNSSEC), its DNS records (A, AAAA, MX, NS, TXT, CAA) and email setup (provider, SPF and DMARC policy). No registrant personal data. Paid only: up to 3 domains per call for $0.003 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public domain name."
},
"minItems": 1,
"maxItems": 3,
"description": "1-3 domains (a URL or email address is reduced to its domain)."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"domains"
],
"additionalProperties": false
}🟢robots_txt_check(urls, agents, x402_payment)
Crawl preflight: whether each user agent may fetch each URL under the site's robots.txt (RFC 9309, longest match, '*' fallback), with crawl-delay, the sitemaps robots.txt lists and whether the site publishes /llms.txt. Default agents: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, Googlebot, Bingbot, CCBot, Applebot-Extended, Bytespider and *. Paid only: up to 5 URLs per call for $0.001 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "A public http(s) URL or bare domain (bare domain = its https:// homepage). No IP addresses, internal names or ports other than 80/443."
},
"minItems": 1,
"maxItems": 5,
"description": "1-5 URLs to check."
},
"agents": {
"type": "array",
"items": {
"type": "string",
"pattern": "^(\\*|[A-Za-z0-9][A-Za-z0-9._-]{0,39})$"
},
"minItems": 1,
"maxItems": 15,
"description": "Optional user-agent product tokens, e.g. [\"GPTBot\", \"*\"]."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"urls"
],
"additionalProperties": false
}🟢document_to_markdown(url, filename, include_metadata, x402_payment)
Convert one document at a public URL to Markdown from its text layer: PDF, Word DOCX, Excel XLSX/XLSM/XLSB/XLS, OpenDocument ODS/ODT, CSV, HTML, XML or Apple Numbers, up to 10 MB, Markdown up to 250,000 characters. Not OCR: scanned PDFs, images, PPTX and encrypted files are refused and not charged. Paid only: $0.004 USDC per file. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Public http(s) URL of the document, e.g. \"https://bitcoin.org/bitcoin.pdf\"."
},
"filename": {
"type": "string",
"maxLength": 120,
"pattern": "^[\\w .()\\[\\]-]{1,120}$",
"description": "Optional file name, used as a format hint."
},
"include_metadata": {
"type": "boolean",
"default": true,
"description": "false drops the PDF metadata block from the Markdown."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢transcribe_short_audio(url, task, language, vad_filter, x402_payment)
Transcribe one short audio file (direct public URL to MP3, WAV, M4A, OGG, FLAC or WebM; one file up to 2 MB and 20 minutes) with Whisper large-v3-turbo, or translate it to English: text, timed segments, WebVTT and detected language. No YouTube or social media pages. Paid only: $0.01 USDC per file. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Direct public URL of the audio file."
},
"task": {
"type": "string",
"enum": [
"transcribe",
"translate"
],
"default": "transcribe",
"description": "translate = English output."
},
"language": {
"type": "string",
"pattern": "^[A-Za-z]{2,3}$",
"description": "Optional spoken language, ISO 639-1 (en, de, es…)."
},
"vad_filter": {
"type": "boolean",
"default": true,
"description": "false turns off silence filtering."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢website_screenshot(url, device, format, x402_payment)
Screenshot one public web page in a headless browser: desktop (1440x900) or mobile (390x844) viewport, PNG or JPEG, returned as an image. Viewport only, no logins or scripts; follows robots.txt and does not get past bot walls; at most one screenshot every 10 seconds across all callers. Paid only: $0.01 USDC per page. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Public http(s) URL of the page."
},
"device": {
"type": "string",
"enum": [
"desktop",
"mobile"
],
"default": "desktop",
"description": "Viewport: desktop 1440x900 or mobile 390x844."
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg"
],
"default": "png",
"description": "Image format."
},
"x402_payment": {
"type": "string",
"maxLength": 16384,
"description": "Optional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
}
},
"required": [
"url"
],
"additionalProperties": false
}커뮤니티
증거