← APIs / agent-ready.dev
Verified

agent-ready.dev

Agent Readyby Agent Ready · Development

Scan your website for agent readability, check .well-known endpoints and more.

toolsfederated
Price per request
$0.02
Hosted by the provider

Apiosk lists this API but does not proxy it. Call the provider's URL directly and pay them over x402 — Apiosk never sits between you and the response.

Open provider →

ResourceDescription
https://agent-ready.dev/api/x402/scan Agent Ready website scan — up to 25 pages Open
https://agent-ready.dev/api/x402/scan Agent Ready deep website scan — up to 250 pages Open
Technical Specs
Auth MethodNone (x402 payment proof only)
Response FormatJSON
Endpoints1
Endpoints
MethodPathDescriptionCost
POST /api/x402/scan Agent Ready website scan — up to 25 pages
$0.02 default
View details
Endpoint documentation
POST/api/x402/scan
$0.02 default
Description

Agent Ready website scan — up to 25 pages

Documentation

Overview

Runs an AI agent-readability scan of any public website and returns a scored
report — no account, no subscription, no API key.

Pay per call with x402: POST {"url":"https://example.com"} with a signed
X-PAYMENT header. This tier scans up to **25 pages**.

Response

201 with { scan, shareUrl, claim }. scan carries the score breakdown;
shareUrl is a permalink to the human-readable report. Settlement confirmation
is returned in the X-PAYMENT-RESPONSE header.

Payment

- Network: Base mainnet (CAIP-2 eip155:8453)
- Asset: USDC
- Tiers: $0.02 (25 pages) · $0.25 (250 pages)

Send no payment header to receive a 402 listing the full requirements.

Pricing
$0.02 default
Authentication

No API key required. Payment is handled through x402 v2 — send a signed X-PAYMENT header (EIP-3009 USDC authorization on Base mainnet, CAIP-2 eip155:8453). MPP is also accepted via Authorization: Payment. Without a payment header the endpoint returns a 402 challenge carrying the payment requirements in the PAYMENT-REQUIRED header and JSON body.

Parameters
{
  "url": {
    "description": "Public http(s) URL of the site to scan. Private, reserved and IP-literal addresses are rejected.",
    "required": true,
    "type": "string"
  }
}
Request schema
{
  "properties": {
    "url": {
      "description": "Public http(s) URL of the site to scan. Private, reserved and IP-literal addresses are rejected with 400.",
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "type": "object"
}
Response schema
{
  "definitions": {
    "CheckResult": {
      "properties": {
        "checkId": {
          "type": "string"
        },
        "details": {
          "type": "object"
        },
        "howToFix": {
          "type": [
            "string",
            "null"
          ]
        },
        "message": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "description": "pass | fail | warn | absent",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "properties": {
    "claim": {
      "description": "Signed token letting the payer claim this scan against an account. Present when claim signing is configured.",
      "type": "string"
    },
    "paymentSettlement": {
      "description": "Present and set to \"failed\" only if the scan succeeded but on-chain settlement did not. The result is still returned.",
      "type": "string"
    },
    "scan": {
      "properties": {
        "accessibilityScore": {
          "type": [
            "integer",
            "null"
          ]
        },
        "completedAt": {
          "format": "date-time",
          "type": [
            "string",
            "null"
          ]
        },
        "corpusTotal": {
          "description": "Size of the corpus the percentile is measured against.",
          "type": [
            "integer",
            "null"
          ]
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "llmstxtChecks": {
          "items": {
            "$ref": "#/definitions/CheckResult"
          },
          "type": "array"
        },
        "llmstxtScore": {
          "description": "llms.txt conformance score, 0–100.",
          "type": "integer"
        },
        "pageResults": {
          "items": {
            "properties": {
              "checks": {
                "items": {
                  "$ref": "#/definitions/CheckResult"
                },
                "type": "array"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "pagesDiscovered": {
          "type": "integer"
        },
        "pagesScanned": {
          "type": "integer"
        },
        "percentile": {
          "description": "Corpus percentile; null when the corpus is too thin to quote.",
          "type": [
            "integer",
            "null"
          ]
        },
        "protocolResults": {
          "items": {
            "$ref": "#/definitions/CheckResult"
          },
          "type": "array"
        },
        "rootUrl": {
          "format": "uri",
          "type": "string"
        },
        "shareToken": {
          "type": "string"
        },
        "siteChecks": {
          "items": {
            "$ref": "#/definitions/CheckResult"
          },
          "type": "array"
        },
        "status": {
          "description": "completed | running | failed",
          "type": "string"
        },
        "vercelRating": {
          "description": "Letter grade, e.g. A, B, C.",
          "type": "string"
        },
        "vercelScore": {
          "description": "Agent-readability score, 0–100.",
          "type": "integer"
        }
      },
      "required": [
        "id",
        "rootUrl",
        "status",
        "createdAt",
        "completedAt",
        "pagesDiscovered",
        "pagesScanned",
        "vercelScore",
        "vercelRating",
        "llmstxtScore",
        "accessibilityScore",
        "percentile",
        "corpusTotal",
        "siteChecks",
        "llmstxtChecks",
        "pageResults",
        "shareToken"
      ],
      "type": "object"
    },
    "shareUrl": {
      "description": "Permalink path to the human-readable report, e.g. /scan/<shareToken>.",
      "type": "string"
    }
  },
  "required": [
    "scan",
    "shareUrl"
  ],
  "type": "object"
}
Headers
{
  "Authorization": {
    "description": "Alternative to X-PAYMENT: an MPP credential in the form 'Payment <credential>'.",
    "type": "string"
  },
  "Content-Type": {
    "description": "application/json",
    "type": "string"
  },
  "X-PAYMENT": {
    "description": "Base64-encoded x402 v2 payment payload. Omit to receive the 402 challenge.",
    "type": "string"
  }
}
Example request
{
  "url": "https://example.com"
}
Example response
{
  "claim": "eyJ0IjoiYTFiMmMzZDRlNWY2IiwiZXhwIjoxNzk...",
  "scan": {
    "accessibilityScore": 88,
    "completedAt": "2026-07-24T02:15:31.000Z",
    "corpusTotal": 523,
    "createdAt": "2026-07-24T02:15:04.000Z",
    "id": "scn_9f3a1c8e",
    "llmstxtChecks": [
      {
        "checkId": "L8",
        "details": {},
        "howToFix": null,
        "message": "No llms.txt to evaluate.",
        "name": "Sections use H2 headings",
        "status": "absent"
      }
    ],
    "llmstxtScore": 40,
    "pageResults": [
      {
        "checks": [
          {
            "checkId": "P11",
            "details": {},
            "howToFix": null,
            "message": "Meta description found (142 chars).",
            "name": "Meta description present",
            "status": "pass"
          }
        ],
        "url": "https://example.com/"
      }
    ],
    "pagesDiscovered": 18,
    "pagesScanned": 18,
    "percentile": 81,
    "protocolResults": [
      {
        "checkId": "C1",
        "details": {},
        "howToFix": "Publish an MCP server card so agents can discover your tools.",
        "message": "No MCP server card at /.well-known/mcp.json.",
        "name": "MCP server card",
        "status": "fail"
      }
    ],
    "rootUrl": "https://example.com",
    "shareToken": "a1b2c3d4e5f6",
    "siteChecks": [
      {
        "checkId": "S4",
        "details": {},
        "howToFix": "Publish an llms.txt file at the root describing your key pages.",
        "message": "No /llms.txt found at the site root.",
        "name": "llms.txt present",
        "status": "fail"
      }
    ],
    "status": "completed",
    "vercelRating": "B",
    "vercelScore": 72
  },
  "shareUrl": "/scan/a1b2c3d4e5f6"
}