Analysis & auditGET$0.01
/v1/onpage-audit
Classic on-page SEO plus AI citability, scored 0–100 with a fix for every non-passing check.
Fetches the page and its robots.txt and llms.txt (10 s timeout, 2 MiB cap, up to 5 redirects; private hosts refused) and runs 20 weighted checks. Alongside title, meta, canonical, headings, links, images and JSON-LD it checks what AI engines need: whether GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot may read this path, whether llms.txt exists, whether the content is JS-only, whether headings are phrased as questions, and whether the page carries a date and an author.
Every warn or fail carries an imperative fix, and topFixes[] orders them by impact. The loop an agent runs is: audit, apply topFixes, re-audit until clean.
Parameters#
| Name | Description | |
|---|---|---|
url | required | absolute http(s) URL of the page to audit |
Request#
Plain GET. Without a payment header the response is a 402 carrying the price; an x402 client pays and retries on its own — see the quickstart.
GET https://citable.run/v1/onpage-audit?url=https://citable.run
Response#
200 with the JSON below (trimmed) and the settlement signature in the PAYMENT-RESPONSE header. Every paid response also carries price and cluster.
{
"url": "https://citable.run/",
"finalUrl": "https://citable.run/",
"fetchedAt": "2026-08-24T20:43:12.086Z",
"http": { "status": 200, "redirects": 0, "contentType": "text/html; charset=UTF-8", "responseMs": 2011, "bytes": 68900, "truncated": false, "https": true },
"page": {
"title": { "text": "Citable — SEO and AI-visibility checks for agents", "length": 49 },
"metaDescription": { "text": "Pay-per-call SEO and AI-visibility data for AI agents. …", "length": 178 },
"canonical": "https://citable.run/",
"lang": "en",
"headings": { "counts": { "h1": 1, "h2": 8, "h3": 5, "h4": 0, "h5": 0, "h6": 0 }, "h1": ["SEO and AI-visibility checks for agents."] },
"wordCount": 1279,
"links": { "total": 8, "internal": 5, "external": 3, "nofollow": 0 },
"images": { "total": 0, "missingAlt": 0, "emptyAlt": 0 },
"structuredData": { "count": 1, "invalid": 0, "types": ["FAQPage"] }
},
"aiAccess": { "robotsTxt": "missing", "llmsTxt": false, "bots": { "gptbot": "allowed", "claudebot": "allowed", "perplexitybot": "allowed", "google-extended": "allowed", "ccbot": "allowed" } },
"answerability": { "questionHeadings": 0, "hasDate": false, "hasAuthor": false },
"score": 92,
"summary": { "pass": 15, "warn": 5, "fail": 0 },
"checks": [
{ "id": "http-status", "status": "pass", "weight": 8, "message": "Returns 200 OK", "current": "200", "fix": null },
{ "id": "meta-description", "status": "warn", "weight": 5, "message": "Meta description is 178 characters", "current": "Pay-per-call SEO …", "fix": "Rewrite the meta description to 70–160 characters" }
],
"topFixes": [
{ "id": "meta-description", "severity": "warn", "fix": "Rewrite the meta description to 70–160 characters" },
{ "id": "answer-headings", "severity": "warn", "fix": "Add headings phrased as the questions buyers ask — engines lift answers from beneath them" },
{ "id": "article-signals", "severity": "warn", "fix": "Add datePublished and author (visible, meta, or JSON-LD) so engines can date and attribute the content" }
],
"price": "$0.01",
"cluster": "mainnet"
}Errors#
Any non-200 cancels the payment — errors are free.
| Status | Code | When |
|---|---|---|
| 400 | invalid_url | not an absolute http(s) URL |
| 400 | blocked_host | private, loopback or link-local address |
| 400 | unresolvable_host | DNS lookup failed |
| 415 | unsupported_content_type | the URL is not an HTML page |
| 422 | too_many_redirects | more than 5 redirects |
| 502 | fetch_failed | the page did not respond in 10 s — nothing is charged |
MCP tool#
The same call from Claude, Codex or Cursor once citable-mcp is installed. Arguments mirror the parameters above.
citable_onpage_audit(url) $0.01Source & latency#
| Data source | Typical latency |
|---|---|
| Fetched and parsed in-house | page response time + ~0.5 s |
Note
Pairs with#
Which AI answer engines cite a domain for a prompt
Which pages of a domain AI engines cite most, from an aggregated index of AI answers.
On-page audit + AI visibility across all engines + top cited pages, in one call. $0.30 instead of $0.43 separately.