Read, screenshot, diff, verify and audit any URL: SEO, links, sitemaps, schema, a11y.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Audit the on-page SEO fundamentals search engines and social platforms actually read: title and meta-description length, canonical tag, Open Graph and Twitter Card tags, heading structure, robots directives, viewport, and whether robots.txt and sitemap.xml exist. Returns a prioritised plain-English issue list and a 0-100 score per URL. Takes up to 10 URLs in one call, so competitors can be audited alongside your own page. No browser is used, so it is fast. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
Public http/https URLs to audit (max 10)
Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set.
Ideal title length window (default 30-60)
Also HEAD-check /robots.txt and /sitemap.xml at each site root
Ideal meta-description length window (default 70-160)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Audit the on-page SEO fundamentals search engines and social platforms actually read: title and meta-description length, canonical tag, Open Graph and Twitter Card tags, heading structure, robots directives, viewport, and whether robots.txt and sitemap.xml exist. Returns a prioritised plain-English issue list and a 0-100 score per URL. Takes up to 10 URLs in one call, so competitors can be audited alongside your own page. No browser is used, so it is fast. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Public http/https URLs to audit (max 10) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| titleLengthRange | object | Ideal title length window (default 30-60) |
| checkRobotsAndSitemap | boolean | Also HEAD-check /robots.txt and /sitemap.xml at each site root |
| descriptionLengthRange | object | Ideal meta-description length window (default 70-160) |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Public http/https URLs to audit (max 10)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"titleLengthRange": {
"type": "object",
"properties": {
"max": {
"type": "integer"
},
"min": {
"type": "integer"
}
},
"description": "Ideal title length window (default 30-60)"
},
"checkRobotsAndSitemap": {
"type": "boolean",
"default": true,
"description": "Also HEAD-check /robots.txt and /sitemap.xml at each site root"
},
"descriptionLengthRange": {
"type": "object",
"properties": {
"max": {
"type": "integer"
},
"min": {
"type": "integer"
}
},
"description": "Ideal meta-description length window (default 70-160)"
}
}
}Run a COMPLETE health check on a page behind a single payment, and the tool to reach for when someone asks 'is this page any good?' rather than one narrow question. Covers on-page SEO and meta tags, JSON-LD structured data and social preview tags, and WCAG accessibility -- optionally plus broken links and robots.txt/sitemap crawlability. Returns one overall score, every finding in a single worst-first list with the check that produced it, and the full per-check detail. Cheaper and far simpler than calling audit_seo, validate_structured_data and scan_accessibility separately and paying three times. Paid: $0.05 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| url* | string | Page to audit |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| includeLinks | boolean | Also check every link on the page (slower) |
| includeSitemap | boolean | Also audit robots.txt and the XML sitemap (slower) |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Page to audit"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"includeLinks": {
"type": "boolean",
"default": false,
"description": "Also check every link on the page (slower)"
},
"includeSitemap": {
"type": "boolean",
"default": false,
"description": "Also audit robots.txt and the XML sitemap (slower)"
}
}
}Audit a site's crawlability from robots.txt and its XML sitemaps: whether robots.txt exists, whether it blocks all crawlers, which sitemaps it declares, whether those parse as valid XML, how many URLs they list, whether entries carry lastmod dates, and whether a live sample of those URLs actually respond. Returns a 0-100 score, a letter grade, a severity and a prioritised issue list. Accepts a bare domain. Up to 2 sites per call. Paid: $0.02 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| sites* | array | Sites to audit (max 2); a bare domain is fine |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| maxUrlsToSample | integer | How many sitemap URLs to spot-check for a live response |
{
"type": "object",
"required": [
"sites"
],
"properties": {
"sites": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sites to audit (max 2); a bare domain is fine"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"maxUrlsToSample": {
"type": "integer",
"default": 10,
"maximum": 10,
"minimum": 0,
"description": "How many sitemap URLs to spot-check for a live response"
}
}
}Run a mix of read_page/watch_page/verify_claim/compare_pages/extract_tables operations behind a SINGLE payment instead of paying for each one separately — use this whenever you need to process more than one URL, since it saves you multiple payment negotiations. Each item needs an 'op' ("read", "watch", "verify", "compare", or "tables") plus that op's required fields (url for read/watch/verify/tables, urlA+urlB for compare, claim for verify). Sized by weight, not item count: read/watch/verify/tables = 1 unit each, compare = 2 units (it loads two pages); total weight per call must be ≤ 6. Paid: $0.05 flat per call (a discount vs paying per-item) in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"op"
],
"properties": {
"op": {
"enum": [
"read",
"watch",
"verify",
"compare",
"tables"
],
"type": "string"
},
"key": {
"type": "string"
},
"url": {
"type": "string",
"description": "read/watch/verify/tables only"
},
"urlA": {
"type": "string",
"description": "compare only"
},
"urlB": {
"type": "string",
"description": "compare only"
},
"claim": {
"type": "string",
"description": "verify only — required"
},
"waitMs": {
"type": "integer",
"default": 0,
"maximum": 5000,
"minimum": 0
},
"selector": {
"type": "string"
},
"maxLength": {
"type": "integer",
"default": 50000,
"maximum": 200000,
"minimum": 1000
},
"maxTables": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"includeLinks": {
"type": "boolean",
"default": false
},
"maxDiffItems": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"includeImages": {
"type": "boolean",
"default": false
},
"maxRowsPerTable": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
}
}
},
"maxItems": 6,
"minItems": 1
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Grade a domain's email authentication from DNS -- the tool to reach for when mail is landing in spam, or someone asks whether a domain is protected against spoofing. Checks MX (can it receive mail), SPF (who may send as it, and whether '+all' lets anyone), DMARC policy (none / quarantine / reject) and DKIM under the common selectors. Returns a 0-100 score, a letter grade, the records found and a prioritised issue list. Up to 4 domains per call. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Domains to grade (max 4) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| dkimSelectors | array | DKIM selectors to try (max 7; sensible defaults) |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Domains to grade (max 4)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"dkimSelectors": {
"type": "array",
"items": {
"type": "string"
},
"description": "DKIM selectors to try (max 7; sensible defaults)"
}
}
}Check every link on a page and report which are broken. Each anchor is resolved to an absolute URL, de-duplicated, and checked with a HEAD request (falling back to GET where the server rejects HEAD), returning its status code, whether it redirected, response time and a severity. Gives a 0-100 score and a letter grade per page. Anchors, mailto: and tel: links are excluded because they cannot be broken. Up to 5 pages and 40 link checks per call. Paid: $0.02 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Pages to check (max 5) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| maxLinksPerPage | integer | |
| checkExternalLinks | boolean | Also check links pointing off-site |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pages to check (max 5)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"maxLinksPerPage": {
"type": "integer",
"default": 40,
"maximum": 40,
"minimum": 1
},
"checkExternalLinks": {
"type": "boolean",
"default": true,
"description": "Also check links pointing off-site"
}
}
}Compare two URLs' content and report what's different: paragraphs unique to each side, word count delta, whether they're identical. Paid: $0.02 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urlA* | string | First public http/https URL |
| urlB* | string | Second public http/https URL |
| selector | string | Optional CSS selector applied to both pages before comparing |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| maxDiffItems | integer |
{
"type": "object",
"required": [
"urlA",
"urlB"
],
"properties": {
"urlA": {
"type": "string",
"description": "First public http/https URL"
},
"urlB": {
"type": "string",
"description": "Second public http/https URL"
},
"selector": {
"type": "string",
"description": "Optional CSS selector applied to both pages before comparing"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"maxDiffItems": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
}
}
}Detect what a website is built with: CMS, ecommerce platform, JS framework, analytics and tag managers, marketing automation, chat widget, payment provider, CDN and hosting, CSS framework. Also flags vendor risks -- legacy jQuery 1.x, a CMS generator tag exposing its exact version, mixed content. Useful for sales prospecting, competitor research and security triage. Up to 10 sites per call. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Sites to scan: homepage URLs or bare domains (max 10) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sites to scan: homepage URLs or bare domains (max 10)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Extract every HTML table on a page as structured JSON — headers, row arrays, and (when headers exist and are unique) row objects keyed by header name, plus a best-effort caption for each table. Saves hand-parsing pricing tables, spec sheets, and schedules out of raw HTML. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http/https URL to extract tables from |
| selector | string | Optional CSS selector to scope the search for tables to |
| maxTables | integer | |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| maxRowsPerTable | integer |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public http/https URL to extract tables from"
},
"selector": {
"type": "string",
"description": "Optional CSS selector to scope the search for tables to"
},
"maxTables": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"maxRowsPerTable": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
}
}
}Find a company website's public contact details -- the tool to reach for when someone needs an email address, phone number or social profile for a business. Reads the homepage plus up to three likely pages (/contact, /about ...) and returns email addresses (including Cloudflare-obfuscated ones), phone numbers, social profiles (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub) and the contact page URL. Up to 5 sites per call; a site behind a bot-protection challenge is reported as blocked, never guessed. Paid: $0.02 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Sites to read: homepage URLs or bare domains (max 5) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sites to read: homepage URLs or bare domains (max 5)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}List the currently available x402 service ranking categories. Free, no payment required.
No arguments.
{
"type": "object",
"properties": {}
}Look up domain registration over RDAP (the ICANN successor to WHOIS) -- the tool to reach for when someone asks when a domain expires, who its registrar is, or whether it is registered at all. Returns the registrar, creation and expiry dates, days until expiry, EPP status codes (e.g. clientTransferProhibited) and nameservers, with isExpired / isExpiringSoon flags, a 0-100 score and a one-line summary. Up to 10 domains per call; URLs and www. are stripped. A TLD with no RDAP service is reported as a failed lookup with the reason, never guessed. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Domains to look up (max 10) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| expiryWarningDays | integer | Flag domains expiring within this many days (default 30) |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Domains to look up (max 10)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"expiryWarningDays": {
"type": "integer",
"description": "Flag domains expiring within this many days (default 30)"
}
}
}Get a ranked list of the best x402 pay-per-call services for a task category (scored by price, usage volume, and recency, from the live Coinbase Bazaar feed). Use list_rank_categories first to see valid categories. Paid: $0.02 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| category* | string | Category name from list_rank_categories |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"category"
],
"properties": {
"category": {
"type": "string",
"description": "Category name from list_rank_categories"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Extract clean readable markdown/text from any public URL (title, byline, excerpt, body content with nav/ads/scripts stripped). Handles JS-rendered pages. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http/https URL to read |
| selector | string | Optional CSS selector to scope extraction to |
| maxLength | integer | |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| includeLinks | boolean | |
| includeImages | boolean |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public http/https URL to read"
},
"selector": {
"type": "string",
"description": "Optional CSS selector to scope extraction to"
},
"maxLength": {
"type": "integer",
"default": 50000,
"maximum": 200000,
"minimum": 1000
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"includeLinks": {
"type": "boolean",
"default": false
},
"includeImages": {
"type": "boolean",
"default": false
}
}
}Render any public URL in a real headless browser and get back a screenshot (PNG image), PDF, or the JavaScript-rendered HTML. Paid: $0.02 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http/https URL to render |
| width | integer | |
| format | string | |
| height | integer | |
| waitMs | integer | |
| fullPage | boolean | |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public http/https URL to render"
},
"width": {
"type": "integer",
"default": 1280,
"maximum": 1920,
"minimum": 320
},
"format": {
"enum": [
"screenshot",
"pdf",
"html"
],
"type": "string",
"default": "screenshot"
},
"height": {
"type": "integer",
"default": 800,
"maximum": 1080,
"minimum": 240
},
"waitMs": {
"type": "integer",
"default": 0,
"maximum": 5000,
"minimum": 0
},
"fullPage": {
"type": "boolean",
"default": false
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Quick WCAG-oriented accessibility scan of a page's markup: images with no alt attribute, form fields with no accessible label, a missing lang or viewport, links with no accessible name, duplicate ids, and skipped heading levels. Returns a 0-100 score, a letter grade, a severity and a prioritised issue list. This is STATIC analysis of the served HTML, so it does not check colour contrast, focus order, keyboard traps or runtime ARIA state -- the response names those exclusions explicitly rather than implying they passed. Up to 10 URLs per call. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Pages to scan (max 10) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pages to scan (max 10)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}A US public company's recent SEC EDGAR filings, newest first -- the tool to reach for when someone asks what a company has filed lately, wants its latest 10-K or 10-Q, or needs recent 8-K events (earnings, executive changes, acquisitions; the 8-K item codes are included). Companies by ticker (AAPL) or CIK, up to 5 per call; form types default to 8-K, 10-Q and 10-K but any can be named (S-1, DEF 14A, SC 13D ...). Returns filing and report dates and direct links to the filing index and primary document. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| companies* | array | Tickers or CIKs (max 5) |
| formTypes | array | Form types to include (default 8-K, 10-Q, 10-K) |
| sinceDate | string | Only filings on/after this date (YYYY-MM-DD) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
| maxFilings | integer | Per company (default 10, max 40) |
{
"type": "object",
"required": [
"companies"
],
"properties": {
"companies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tickers or CIKs (max 5)"
},
"formTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Form types to include (default 8-K, 10-Q, 10-K)"
},
"sinceDate": {
"type": "string",
"description": "Only filings on/after this date (YYYY-MM-DD)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
},
"maxFilings": {
"type": "integer",
"description": "Per company (default 10, max 40)"
}
}
}Validate a page's JSON-LD structured data and its social preview tags. Reports which schema.org types are present, whether each carries the fields Google's rich results require, whether any JSON-LD block fails to parse as JSON, and whether Open Graph and Twitter Card tags are complete. Useful before publishing, or to diagnose why a page renders no preview card when shared. Returns a 0-100 score, a letter grade and a prioritised issue list. Up to 10 URLs per call. Paid: $0.01 per call in USDC on Base via x402 -- call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| urls* | array | Pages to validate (max 10) |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pages to validate (max 10)"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Check whether a claimed quote or fact actually appears on a URL — a cheap citation/hallucination checker. Returns verdict exact_match, close_match (with a confidence score and the closest matching passage), or not_found. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http/https URL to check the claim against |
| claim* | string | The quote or fact to verify appears on the page (max 2000 chars) |
| selector | string | Optional CSS selector to scope the search to |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"url",
"claim"
],
"properties": {
"url": {
"type": "string",
"description": "Public http/https URL to check the claim against"
},
"claim": {
"type": "string",
"description": "The quote or fact to verify appears on the page (max 2000 chars)"
},
"selector": {
"type": "string",
"description": "Optional CSS selector to scope the search to"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}Check whether a URL's content has changed since the last check (paragraph-level diff). First call for a URL establishes a baseline (changed comes back null); later calls report true/false plus what was added or removed. Baselines are shared across callers by default for the same URL — pass a unique 'key' for a private baseline. Paid: $0.01 per call in USDC on Base via x402 — call once without x_payment to receive the payment challenge.
| Argument | Type | Description |
|---|---|---|
| key | string | Optional private namespace for your own baseline |
| url* | string | Public http/https URL to watch |
| selector | string | Optional CSS selector to scope the watched content to |
| x_payment | string | Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"key": {
"type": "string",
"description": "Optional private namespace for your own baseline"
},
"url": {
"type": "string",
"description": "Public http/https URL to watch"
},
"selector": {
"type": "string",
"description": "Optional CSS selector to scope the watched content to"
},
"x_payment": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive the payment challenge; complete the payment with your x402 wallet tooling, then retry with this set."
}
}
}