{
  "id": "pageverified",
  "name": "PageVerified",
  "description": "PageVerified is a toolbox of small paid APIs for AI agents on one key and one prepaid credit balance, led by web capture and signed Capture Records, with a verified directory of AI-agent tools.",
  "provider": {
    "name": "PageVerified",
    "website": "https://pageverified.com",
    "contact": "https://pageverified.com/support"
  },
  "status": "live",
  "directory": {
    "status": "live",
    "homepage_url": "https://pageverified.com/",
    "submission_url": "https://pageverified.com/submit",
    "verification_url": "https://pageverified.com/verification",
    "tools_api_url": "https://pageverified.com/api/tools.json",
    "launches_rss_url": "https://pageverified.com/launches.xml",
    "scope": "Availability, public product evidence and supplied-link checks. Not an endorsement or security audit."
  },
  "audience": [
    "ai_agent_startups",
    "mcp_server_creators",
    "x402_api_builders",
    "data_api_providers",
    "saas_teams_exploring_agent_channels"
  ],
  "capabilities": [
    "metered_tool_api",
    "remote_mcp",
    "web_capture",
    "verified_agent_tool_directory"
  ],
  "services": [
    {
      "id": "pageverified_toolbox",
      "name": "PageVerified toolbox",
      "manifest_url": "/api/v1/services",
      "pricing_url": "/services/pricing.json"
    }
  ],
  "payment_rails": {
    "available_now": [
      "stripe_checkout_browser",
      "stripe_mpp",
      "x402"
    ],
    "under_validation": [],
    "not_offered": [
      "wallet_custody",
      "escrow",
      "stored_value_transfer",
      "creator_payouts"
    ]
  },
  "policies": {
    "privacy": "https://pageverified.com/privacy",
    "terms": "https://pageverified.com/terms",
    "refunds": "https://pageverified.com/refunds",
    "acceptable_use": "https://pageverified.com/acceptable-use",
    "ai_disclaimer": "https://pageverified.com/ai-disclaimer",
    "data_handling": "https://pageverified.com/data-handling",
    "support": "https://pageverified.com/support",
    "no_custody": "https://pageverified.com/no-custody"
  },
  "agent_instructions": {
    "recommended_first_call": "GET /api/v1/services lists tools, credit costs and documentation. POST /api/v1/keys issues a free key.",
    "agent_purchase": "Agents buy credits with no human: POST /api/v1/credits/buy?pack=19 (or 49, 149) returns HTTP 402 with the payment offers on this site (x402: USDC on Base; Stripe Machine Payments Protocol). Pay one and retry to receive an API key with the credits. Starter pack: pack=1 is US$1 for 150 credits. Details: /openapi.json.",
    "human_contact_required_for_purchase": false
  },
  "last_updated": "2026-11-10",
  "api": {
    "status": "live",
    "auth": "Send the key as a bearer token in the authorization header. One key and one credit balance cover every service, including PageVerified Capture. A failed call is refunded automatically.",
    "base_url": "https://pageverified.com",
    "docs_url": "https://pageverified.com/tools",
    "discovery_url": "https://pageverified.com/api/v1/services",
    "openapi_url": "https://pageverified.com/openapi.yaml",
    "issue_key_url": "https://pageverified.com/api/v1/keys",
    "generated_from": "the PageVerified service registry",
    "count": 32,
    "services": [
      {
        "key": "agent_readiness",
        "name": "Agent readiness report for a domain",
        "use_when": "a task needs to know what an AI agent can actually do on a domain: llms.txt, robots rules for AI crawlers, sitemap, OpenAPI, an MCP endpoint, x402 or MPP offers, agent-commerce manifests (UCP, ACP, A2A) and structured data, with a score and a specific fix for each gap.",
        "method": "POST",
        "path": "/api/v1/agent/readiness",
        "cost_credits": 3,
        "docs_url": "https://pageverified.com/tools/agent_readiness"
      },
      {
        "key": "airports",
        "name": "Airport reference data",
        "use_when": "a task needs the static facts about an airport: what an IATA or ICAO code means, where the airport is (city, region, country, coordinates, elevation), whether it has scheduled airline service, which airports a country has, or the straight-line distance and initial bearing between two of them.",
        "method": "GET",
        "path": "/api/v1/airports",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/airports"
      },
      {
        "key": "company_jobs",
        "name": "Company open roles",
        "use_when": "a task needs the roles one named company is hiring for right now: the live list from that company's own Greenhouse, Lever or Ashby job board, with title, location, department, team, employment type, remote flag, posted date and a link to apply, and optionally the description as plain text. Give a board token or the careers-page URL; the provider is detected either way.",
        "method": "POST",
        "path": "/api/v1/jobs/company",
        "cost_credits": 2,
        "docs_url": "https://pageverified.com/tools/company_jobs"
      },
      {
        "key": "currency_convert",
        "name": "Currency conversion (reference rates)",
        "use_when": "a task needs an indicative conversion of an amount between two of about 30 major currencies (AUD, USD, GBP, JPY, NZD, CAD, CNY and others) at the latest European Central Bank reference rates, for estimates or reports, not for transactions. The ECB publishes the euro rates free of charge on its website.",
        "method": "POST",
        "path": "/api/v1/currency/convert",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/currency_convert"
      },
      {
        "key": "currency_rates",
        "name": "Currency reference rates",
        "use_when": "a task needs today's European Central Bank reference exchange rates for about 30 major currencies (AUD, USD, GBP, JPY, NZD, CAD, CNY and others) against any of them as base, for information such as estimates or reports, not for transactions. The ECB publishes the euro rates free of charge on its website.",
        "method": "GET",
        "path": "/api/v1/currency/rates",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/currency_rates"
      },
      {
        "key": "dev_utils",
        "name": "Developer utilities: cron, regex, UUID, slug and JSON",
        "use_when": "a task needs one of the small developer answers that would otherwise cost a round trip to a web tool: the next times a cron expression fires (in a named time zone and in UTC, with a plain-English reading and a note on which non-standard extensions it uses), what a regular expression matches in a piece of text (run on RE2, so no pattern can backtrack its way into exponential time, and a pattern whose compiled program is too large for the input it was given is refused rather than run), fresh UUIDs (version 4, or time-ordered version 7), a URL slug for a title, or JSON pretty-printed, minified or key-sorted with the line and column of a syntax error. Free, and no data is kept.",
        "method": "POST",
        "path": "/api/v1/dev",
        "cost_credits": 0,
        "docs_url": "https://pageverified.com/tools/dev_utils"
      },
      {
        "key": "directory_dataset",
        "name": "Directory dataset",
        "use_when": "an agent needs a paged export or change feed of verified PageVerified directory facts.",
        "method": "POST",
        "path": "/api/v1/directory/dataset",
        "cost_credits": 10,
        "docs_url": "https://pageverified.com/tools/directory_dataset"
      },
      {
        "key": "directory_search",
        "name": "Directory search",
        "use_when": "an agent needs to find AI-agent tools (MCP servers, frameworks, browser automation, memory, evals, voice, coding agents and more) by keyword or category before choosing one, or wants MCP servers and pay-per-call services with how to connect and how to pay (filter by protocol mcp, x402 or mpp, or by payable or free).",
        "method": "GET",
        "path": "/api/v1/directory/search",
        "cost_credits": 0,
        "docs_url": "https://pageverified.com/tools/directory_search"
      },
      {
        "key": "dns_lookup",
        "name": "DNS records for a domain",
        "use_when": "a task needs a domain's live A, AAAA, MX, TXT, NS or CAA records in one structured answer, including whether the name exists at all.",
        "method": "POST",
        "path": "/api/v1/dns/lookup",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/dns_lookup"
      },
      {
        "key": "email_check",
        "name": "Email address check",
        "use_when": "an agent needs to screen an email address before a sign-up, lead import or send: syntax, whether the domain can receive mail (MX), disposable domains, role accounts and free mailbox providers — without contacting the mail server.",
        "method": "POST",
        "path": "/api/v1/email/check",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/email_check"
      },
      {
        "key": "email_domain_auth",
        "name": "Email sending-domain check",
        "use_when": "a task needs to know whether a domain is set up to send email that inboxes accept: MX, SPF (with the 10-lookup limit), DKIM keys, DMARC policy, MTA-STS, TLS-RPT and BIMI, with a 0-100 score and plain-English fixes.",
        "method": "POST",
        "path": "/api/v1/email/domain-auth",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/email_domain_auth"
      },
      {
        "key": "file_convert",
        "name": "File converter",
        "use_when": "a task has a file in one format and needs it in another: a Word document (.docx) to HTML, Markdown or plain text; HTML to Markdown or plain text; Markdown to HTML; CSV to JSON; JSON to CSV; or CSV and TSV either way. Send the file as a URL or base64, or paste the text. Input is capped at 6 MB, or 1 MB when the target is Markdown, and nothing is stored.",
        "method": "POST",
        "path": "/api/v1/files/convert",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/file_convert"
      },
      {
        "key": "hash_encode",
        "name": "Hash and encode text",
        "use_when": "a task needs an exact SHA or MD5 digest, or text converted to or from base64, base64url, hex or URL percent-encoding, where a language model would otherwise guess the output.",
        "method": "POST",
        "path": "/api/v1/encode",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/hash_encode"
      },
      {
        "key": "json_schema_validate",
        "name": "Validate JSON against a JSON Schema",
        "use_when": "a task needs to know whether a JSON value satisfies a JSON Schema (2020-12 and draft-07 keywords, local $ref), with the path and reason for every failure, before passing the value to another system.",
        "method": "POST",
        "path": "/api/v1/json/schema-validate",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/json_schema_validate"
      },
      {
        "key": "jwt_decode",
        "name": "Decode a JWT (no signature check)",
        "use_when": "a task needs to read the header and claims of a JSON Web Token, such as its issuer, audience, scopes or expiry, while debugging. Decode only: the signature is not verified, so the claims are unproven and must not be used to authorize anything.",
        "method": "POST",
        "path": "/api/v1/jwt/decode",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/jwt_decode"
      },
      {
        "key": "links_verify",
        "name": "Backlink check",
        "use_when": "a task needs to confirm that a page links to a site or URL: whether the link is there, whether it is followed (no nofollow, sponsored or ugc) and whether the linking page can be indexed, based on Google's published robots and link rules.",
        "method": "POST",
        "path": "/api/v1/links/verify",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/links_verify"
      },
      {
        "key": "mcp_inspect",
        "name": "Inspect a remote MCP server",
        "use_when": "an agent needs to know what a remote MCP server offers before connecting it: transport, protocol version, whether it needs auth, and the tools it lists. A GET checks the URL first; initialize and tools/list are POSTed only if that GET identifies an MCP server, and no tool is ever called. Remote text comes back labelled as untrusted third-party data.",
        "method": "POST",
        "path": "/api/v1/mcp/inspect",
        "cost_credits": 2,
        "docs_url": "https://pageverified.com/tools/mcp_inspect"
      },
      {
        "key": "mpp_inspect",
        "name": "Inspect an MPP HTTP 402 challenge without paying",
        "use_when": "an agent is about to pay an HTTP 402 resource that uses Machine Payments Protocol challenges (WWW-Authenticate: Payment) and needs the method, intent, amount, currency, recipient, expiry and any malformed field first. No credential is sent.",
        "method": "POST",
        "path": "/api/v1/mpp/inspect",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/mpp_inspect"
      },
      {
        "key": "open_media_search",
        "name": "Public-domain art and media search",
        "use_when": "a task needs an image or artwork that is free to use: public-domain works from The Metropolitan Museum of Art and the Art Institute of Chicago, each with title, artist, date, medium, a full-size image URL, a thumbnail, the museum's page for the work, the licence the museum publishes and a ready-made credit line. Only items the museum itself flags as public domain are returned.",
        "method": "GET",
        "path": "/api/v1/media/open-search",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/open_media_search"
      },
      {
        "key": "page_meta",
        "name": "Page metadata from a URL",
        "use_when": "a task needs a page's title, description, canonical URL, Open Graph and Twitter card tags, JSON-LD, declared language or RSS and Atom feeds without pulling in its full text.",
        "method": "POST",
        "path": "/api/v1/page/meta",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/page_meta"
      },
      {
        "key": "phone_parse",
        "name": "Phone number check",
        "use_when": "a task needs to know whether a phone number is valid for its country, what kind of number it is (mobile, landline, toll-free, premium rate, VoIP) and its E.164, national and international formats. Formats, country and type are only returned for valid numbers; an invalid number keeps its E.164 form only when its length is possible, and e164 is null for any number longer than the 15 digits E.164 allows. The phone input may be a plain number or an RFC 3966 tel: URI, so the uri from an earlier answer can be fed straight back in. Checked offline: no carrier or live-line lookup.",
        "method": "POST",
        "path": "/api/v1/phone/parse",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/phone_parse"
      },
      {
        "key": "rdap_lookup",
        "name": "Domain registration data from RDAP",
        "use_when": "a task needs when a domain was registered or expires, which registrar holds it, its nameservers and registry status codes, from the registry's own RDAP service rather than a scraped WHOIS page. Contact details of people are omitted.",
        "method": "POST",
        "path": "/api/v1/rdap/lookup",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/rdap_lookup"
      },
      {
        "key": "robots_check",
        "name": "robots.txt check for a user agent and URL",
        "use_when": "a task needs to know whether a given crawler or agent may fetch a given URL under the site's robots.txt, and which rule decided it. Parsed by RFC 9309 with longest-match precedence. Robots rules are a request from the site, not access control.",
        "method": "POST",
        "path": "/api/v1/robots/check",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/robots_check"
      },
      {
        "key": "seller_check",
        "name": "Pre-payment signals for a seller",
        "use_when": "an agent is about to pay a seller it has not dealt with and wants plain signals first: domain age from RDAP, whether HTTPS works, DNS and email authentication, whether a payTo address is well formed, and whether the site publishes terms and a refund policy. Signals only: not a guarantee, not legal or financial advice.",
        "method": "POST",
        "path": "/api/v1/seller/check",
        "cost_credits": 3,
        "docs_url": "https://pageverified.com/tools/seller_check"
      },
      {
        "key": "sheets_build",
        "name": "Spreadsheet builder",
        "use_when": "a task has to hand back a real spreadsheet rather than a wall of rows: typed columns (text, number, date, currency, percent) with number formats applied, a bold header, optional frozen header row, column widths and an autofilter, returned as a base64 .xlsx or .csv. Up to 10 sheets and 50,000 cells in total (the header row counts). Values that could be read back as formulas are neutralised. Dates go in as YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS; percent cells store a fraction (0.15 is 15%) unless the column sets percent_basis to \"percent\". CSV takes one sheet.",
        "method": "POST",
        "path": "/api/v1/sheets/build",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/sheets_build"
      },
      {
        "key": "sitemap_read",
        "name": "Read a sitemap or sitemap index",
        "use_when": "a task needs the list of URLs a site publishes, from an XML, gzipped XML or plain-text sitemap or a sitemap index, with lastmod where the site gives it and hard caps so a huge file cannot flood the agent.",
        "method": "POST",
        "path": "/api/v1/sitemap/read",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/sitemap_read"
      },
      {
        "key": "subtitle_tools",
        "name": "Subtitle tools: convert, retime, merge and read caption files",
        "use_when": "a task involves a subtitle or caption file: converting between SubRip (.srt), WebVTT (.vtt), ASS/SSA and YouTube SBV, shifting timings or rescaling them for a frame-rate change (23.976 to 25 and back), merging several files onto one timeline, pulling a plain-text transcript out of captions, or reporting a file's cue count, duration and reading speed. The converted file comes back in result_text; the info operation leaves result_text empty and answers in the info block. Send the file as text, as a public URL, or as base64 up to 4 MB.",
        "method": "POST",
        "path": "/api/v1/subtitles",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/subtitle_tools"
      },
      {
        "key": "techstack",
        "name": "Tech Stack lookup",
        "use_when": "a task depends on what a website is built with: CMS, ecommerce platform, hosting, analytics, ad pixels, payments, chat or forms.",
        "method": "POST",
        "path": "/api/v1/techstack",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/techstack"
      },
      {
        "key": "text_diff",
        "name": "Text and JSON compare",
        "use_when": "a task needs to know exactly what changed between two versions of a text, document, config file or JSON payload: line, word or character changes with a unified patch, or a JSON Pointer list of structural changes. Inputs are capped at 1,000,000 characters a side and 1,500,000 combined; lines and words mode handle that whole range, while chars mode on a heavily rewritten document falls back to block-level changes (coarse: true in the response) rather than taking longer.",
        "method": "POST",
        "path": "/api/v1/diff",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/text_diff"
      },
      {
        "key": "text_stats",
        "name": "Text Stats: words, characters, tokens and SMS segments",
        "use_when": "a task needs counts for a piece of text: words, user-perceived characters, bytes, sentences, paragraphs, lines, reading or speaking time, OpenAI token counts, SMS segments, or a check against length limits such as a character, word, SMS or prompt-token budget.",
        "method": "POST",
        "path": "/api/v1/text/stats",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/text_stats"
      },
      {
        "key": "url_markdown",
        "name": "Read a page as Markdown",
        "use_when": "a task needs the readable text of one web page instead of its HTML: an article, a documentation page, a changelog or a product page, returned as Markdown with its headings, lists, tables and code blocks intact, plus the page's title, byline, language and links.",
        "method": "POST",
        "path": "/api/v1/read",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/url_markdown"
      },
      {
        "key": "x402_inspect",
        "name": "Inspect an x402 payment offer without paying",
        "use_when": "an agent is about to pay an HTTP 402 resource and needs to see the x402 offers first: network, asset, price in dollars for recognised USD stablecoins, payTo, scheme, and any malformed field. No payment is signed or sent.",
        "method": "POST",
        "path": "/api/v1/x402/inspect",
        "cost_credits": 1,
        "docs_url": "https://pageverified.com/tools/x402_inspect"
      }
    ]
  }
}