FreeTier Agent API
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
x402 pay-per-call data for agents: LLM prices, MCP/x402 directories, holidays, FX, page checks
| Author | dev.pages.freetier-agent-api |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2143 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"FreeTier Agent API": {
"url": "https://freetier-agent-api.pages.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (32)
list_endpointsFree. List every endpoint (core products first) with its price in USDC, description and example query. Core: invoice-json $0.003/page, token-risk $0.005, site-contacts $0.003, page-rag $0.001; utilities $0.001; dataset downloads $1. 1 free call per route per caller.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
mcp_servers_sampleFree. Five sample MCP servers from the 4,259-server directory (MIT source).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
llm_pricing_sampleFree. List prices of five popular LLMs (USD per 1M tokens, LiteLLM table, MIT).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
api_directory_sampleFree. Five live public APIs that need no key.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
invoice_jsonread-only1 free call per caller, then $0.003 USDC per page via x402 (paid in-band: params._meta["x402/payment"]). Invoice or receipt (PDF, PNG/JPEG/WebP image, or plain text) to structured JSON with a fixed schema: vendor (name, address, VAT ID, email, phone, IBAN), customer, invoice number, order number, issue/due date, currency (ISO 4217), subtotal, VAT total, total, amount due, VAT breakdown and line items. Every field has value, the verbatim source quote and a confidence score (0-1: quote found in the document, value matches quote, totals add up). Arithmetic checks included. $0.003 per page (max 10 pages per call; the 402 quotes pages x $0.003), 1 free call per caller (up to 3 pages). Runs on Cloudflare Workers AI only (PDF text layer via toMarkdown, OCR for images); documents are not stored. Scanned PDFs without a text layer: send page images. POST JSON {url} or {file_base64, mime_type} or {text}, or POST the raw file (Content-Type application/pdf or image/*); GET ?url= or ?text= also works. When to use: Use invoice-json for invoices and receipts (fixed accounting schema, quotes, arithmetic checks). Use extract-json for any other short text with your own JSON schema. Use page-rag to turn a web page into Markdown for retrieval.
Parameters:
url— string — public http(s) URL of a PDF, PNG, JPEG or WebP invoice/receipt (max 8 MB)text— string — invoice text instead of a file (max 40,000 chars)mime_type— string — POST JSON only: application/pdf, image/png, image/jpeg, image/webp or text/plainfile_base64— string — POST JSON only: base64 file content
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
token_riskread-only1 free call per caller, then $0.005 USDC via x402 (paid in-band: params._meta["x402/payment"]). Deterministic ERC-20 risk check on Base or Ethereum from public on-chain data only: privileged functions in bytecode (mint, blacklist, pause, fees, limits, trading switch), upgradeable proxy + implementation, owner and renounce status, Uniswap v2/v3 + Aerodrome liquidity in USD (Chainlink), owner/pool/burned supply share. Every flag has evidence; lists what was NOT checked (no honeypot simulation). Not financial advice. When to use: Use token-risk before an agent buys, lists or recommends an ERC-20 token. It reads public chain data only: it does not simulate buys/sells (no honeypot test) and does not return price history or market data.
Parameters:
address(required) — string — token contract address 0x...chain— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
site_contactsread-only1 free call per caller, then $0.003 USDC via x402 (paid in-band: params._meta["x402/payment"]). Company website -> one clean contact row: role emails only (info@, sales@ ...) with MX check, phones validated and normalized to E.164 with confidence, schema.org address/name, Danish CVR and EU VAT ids, official social profiles. Respects robots.txt, plain HTTP, home + up to 5 contact pages. Personal emails omitted (GDPR). When to use: Use site-contacts when you need the business contact details of a company from its own website. Use page-rag when you need the text of a page, and email-verify to check one email address you already have.
Parameters:
url(required) — string — company websitecountry— string — default phone country, ISO-2, default DK
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
page_ragread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Any public web page -> clean LLM-ready Markdown + RAG chunks in one call: main content via Mozilla Readability (no nav/ads/footers), absolute links, title/description/language/canonical/published+modified dates/JSON-LD types, word + token estimates, sha256 content hash for change detection, and heading-aware chunks (configurable size + overlap, each with its heading path). Plain HTTP, robots.txt respected, Markdown/plain text passed through. Flags pages that likely need JavaScript. When to use: Use page-rag to feed a web page into an LLM or a vector store. Use page-meta or page-check for SEO/meta tags and HTTP status only. page-markdown is the older, simpler converter; page-rag is recommended.
Parameters:
url(required) — string — public http(s) page URLoverlap— integer — chunk overlap in tokens (default 80)main_only— string — main content only via Readability (default true)max_chars— integer — max Markdown characters (default 100000, max 400000)chunk_tokens— integer — chunk size in tokens (0 = no chunks, default 800, max 4000)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
robots_checkread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Check whether a URL may be crawled per the site's robots.txt for a given user-agent. Returns allowed, matched rule, crawl-delay, sitemaps. When to use: Use robots-check before crawling a URL with your own user-agent.
Parameters:
url(required) — string — absolute http(s) URLua— string — user-agent token, default *
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
page_metaread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Fetch a public web page (robots.txt respected) and return title, meta description, canonical, Open Graph/Twitter tags, language, headings, link counts, HTTP status. When to use: Use page-meta for title, description, Open Graph and headings only; for full content use page-rag.
Parameters:
url(required) — string — absolute http(s) URL
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
llm_costread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Token & cost calculator: estimate tokens for a text (or pass input_tokens/output_tokens) and price it across several models using provider list prices (LiteLLM price table, MIT). Params: models (comma list of model ids like gpt-4o-mini, claude-sonnet-4-5, gemini/gemini-2.5-flash or search words, max 15), text or input_tokens, output_tokens, calls. When to use: Use llm-cost to compare what a workload costs across models.
Parameters:
text— stringcalls— stringmodels— stringinput_tokens— stringoutput_tokens— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
page_checkread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). One-call page audit for agents: HTTP status, redirects, latency, title, meta description, canonical, lang, Open Graph, JSON-LD types, headings, word count, plus agent-friendliness: robots.txt rules for 14 AI crawlers, llms.txt, sitemap, and a 0-100 score with reasons. When to use: Use page-check for status, redirects, headers and SEO basics of a URL; for content use page-rag.
Parameters:
url(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
link_checkread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Check up to 20 URLs in one call: HTTP status, final URL after redirects, redirect count, latency, content-type, ok flag. When to use: Use link-check to test up to 20 URLs for broken links in one call.
Parameters:
urls(required) — string — comma-separated absolute URLs, max 20
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
countryread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Country reference lookup by ISO2/ISO3/name: capital, population, area, continent, currency, phone prefix, TLD, languages, neighbours, time zones with current UTC offset and local time. When to use: Use country for ISO codes, capitals, currencies, calling codes and time zones.
Parameters:
q(required) — string — ISO2, ISO3 or country name
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
holidaysread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Public holidays for ~490 countries/territories for 2026 and 2027; optional date=YYYY-MM-DD answers is_holiday. When to use: Use holidays to list public holidays or test one date for a country.
Parameters:
country(required) — string — ISO2date— stringyear— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
currencyread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Currency conversion with official ECB euro reference rates (~30 currencies, daily). Params: from, to, amount. Also returns the rate date. When to use: Use currency for ECB reference exchange rates and conversion.
Parameters:
from(required) — stringto(required) — stringamount— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
base_gasread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Live Base mainnet gas price (gwei), latest block, and estimated ETH cost of a USDC transfer (~65k gas) and a plain ETH transfer (21k gas). When to use: Use base-gas for current Base gas price and the cost of a transfer.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
page_markdownread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Convert a public web page to clean Markdown (title, headings, paragraphs, lists, links, code), scripts/nav/footer removed, max ~60k chars. robots.txt respected. When to use: Legacy converter. page-rag gives cleaner main-content Markdown plus chunks at the same price.
Parameters:
url(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
email_verifyread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Email address check WITHOUT sending mail or SMTP probing: RFC-style syntax check, domain MX/A records via DNS-over-HTTPS, disposable-domain flag (CC0 blocklist, ~9,900 domains), role-address flag (info@, support@...), free-mail flag. Verdict: deliverable_domain | risky | invalid. Cannot confirm that the mailbox itself exists. Addresses are not stored or logged. When to use: Use email-verify to check syntax, MX and disposable domains for one address (DNS only, no mailbox probe).
Parameters:
email(required) — string — one email address
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
extract_jsonread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Messy text + JSON Schema in, clean JSON out. Uses a small LLM (Cloudflare Workers AI, Llama 3.1 8B, JSON mode) when available, else a deterministic key:value/regex extractor; the result is type-checked against your schema and missing fields are null. Limits: text <= 6,000 chars, schema <= 30 top-level properties (flat objects, arrays of scalars); the model can misread ambiguous text, so check important values. Params: text, schema (JSON string), mode=auto|heuristic. GET query or POST JSON body. When to use: Use extract-json for short free text with your own JSON schema; for invoices and receipts use invoice-json.
Parameters:
text(required) — string — input text, max 6000 charsschema(required) — string — JSON Schema (type object with properties) as a JSON stringmode— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
apis_searchread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Search 2,230 link-checked public & free-tier APIs (59 categories). Filters: q, category, auth=none, alive=yes, https=yes, kind, limit<=50.
Parameters:
q— string — free-text search in name/description/categoryauth— string — 'none' = no API keykind— stringalive— stringhttps— stringlimit— string — 1-50, default 10category— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
free_tiersread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Current free-tier limits for developer services (hosting, DB, auth, email, CI, monitoring) and AI/LLM APIs, with official source URLs. Filter: q, category.
Parameters:
q— stringcategory— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
llm_pricingread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). AI model list prices (USD per 1M input/output/cached tokens, context window, vision/tools/reasoning flags) for ~3,000 models across OpenAI, Anthropic, Google, Mistral, Groq, Bedrock, Azure, Together, Fireworks and more, plus verified free tiers/rate limits of AI APIs. Filters: q, provider, free=yes, max_input_per_m, min_context, vision=yes, tools=yes, sort=input|output|context, limit<=100.
Parameters:
q— stringfree— stringsort— stringlimit— stringtools— stringvision— stringprovider— stringmin_context— stringmax_input_per_m— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
mcp_serversread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Search 4,259 MCP (Model Context Protocol) servers by keyword, category, language (python/typescript/go/rust...), scope (cloud/local) and official flag. Returns repo URL and description.
Parameters:
q— stringlimit— stringscope— stringcategory— stringlanguage— stringofficial— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
x402_servicesread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). Search ~8,900 live x402 pay-per-call APIs (verified/unverified by nohumans.directory probes, CC BY 4.0): name, endpoint URL, category, price, chains, status, score. Filters: q, category, chain, max_price, status=verified, limit<=100.
Parameters:
q— stringchain— stringlimit— stringstatus— stringcategory— stringmax_price— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
agent_toolsread-only1 free call per caller, then $0.001 USDC via x402 (paid in-band: params._meta["x402/payment"]). One search across ~13,000 agent tools: 4,259 MCP servers (awesome-mcp-servers, MIT) and ~8,900 x402 pay-per-call APIs (nohumans.directory, CC BY 4.0). Filters: q, type=mcp|x402, limit<=100.
Parameters:
q(required) — stringtype— stringlimit— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dataset_fullread-onlyDataset download: $1 USDC via x402. Buy the full Verified API Directory dataset (2,230 rows, JSON, CC BY 4.0 + MIT sources) in one call.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dump_mcp_serversread-onlyDataset download: $1 USDC via x402. Full MCP server directory dump (4,259 servers, JSON). Source awesome-mcp-servers (MIT).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dump_llm_pricingread-onlyDataset download: $1 USDC via x402. Full dump: list prices of ~3,000 AI models (LiteLLM table, MIT) + verified AI/dev free tiers with limits (JSON).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dump_world_referenceread-onlyDataset download: $1 USDC via x402. Full dump: 252 countries (GeoNames, CC BY 4.0), 418 time zones, ~14,000 public holidays 2026-2027 (python-holidays, MIT). JSON.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dump_x402_servicesread-onlyDataset download: $1 USDC via x402. Full dump: ~8,900 x402 pay-per-call APIs with category, price, chains and probe status (JSON). Data from nohumans.directory, CC BY 4.0, attribution required.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
dump_agent_toolsread-onlyDataset download: $1 USDC via x402. Full dump: Agent Tool Directory, ~13,000 MCP servers + x402 APIs in one unified schema (JSON). MIT + CC BY 4.0 sources, attribution included.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.