Adam Hale Tools: Web Research and Open Data

Free web lookups; PDF to Markdown, audio transcripts, screenshots, WHOIS/DNS paid per call via x402.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
100%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,846토큰 (도구 정의)
~2.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.79%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 12개