Agent ReadySign in

Agent Ready quickstart

First scan in 60 seconds. REST API, Node, Python, and MCP. The MCP server is at https://agent-ready.dev/api/v1/mcp.

Last updated

Step 1 — Get an Agent Ready API key

Sign in at /sign-in and open /dashboard/api-keys. Click Create key, name it after the workload, and copy the Bearer token. Treat it like a password — never commit it to a repo. Pro plan required (see pricing and the auth guide).

Step 2 — Run your first scan

POST to /api/v1/scans with the Bearer token and a JSON body containing the URL to scan. The response returns immediately with a scan id and status: queued.

# 1. Start a scan
curl -X POST https://agent-ready.dev/api/v1/scans \
  -H "Authorization: Bearer $AGENT_READY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

# Response:
# {"id":"scan_01HXYZ...","status":"queued","shareUrl":null}

# 2. Poll for results
curl https://agent-ready.dev/api/v1/scans/scan_01HXYZ... \
  -H "Authorization: Bearer $AGENT_READY_KEY"

# When status flips to "complete":
# {"id":"scan_01HXYZ...","status":"complete","score":87,"rating":"good","shareUrl":"https://agent-ready.dev/scan/..."}

Step 3 — Poll for results

GET /api/v1/scans/{id} every two or three seconds until status flips to complete. The completed body includes the score, the per-check breakdown, and a shareable URL.

Node (TypeScript)

// npm install undici  (or use the built-in global fetch on Node 18+)

const KEY = process.env.AGENT_READY_KEY!;
const base = "https://agent-ready.dev/api/v1";

const start = await fetch(`${base}/scans`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://example.com" }),
}).then((r) => r.json());

let result = start;
while (result.status !== "complete") {
  await new Promise((r) => setTimeout(r, 2_000));
  result = await fetch(`${base}/scans/${start.id}`, {
    headers: { Authorization: `Bearer ${KEY}` },
  }).then((r) => r.json());
}

console.log("Score:", result.score, result.shareUrl);

Python

# pip install requests
import os, time, requests

KEY = os.environ["AGENT_READY_KEY"]
base = "https://agent-ready.dev/api/v1"
h = {"Authorization": f"Bearer {KEY}"}

start = requests.post(
    f"{base}/scans",
    headers={**h, "Content-Type": "application/json"},
    json={"url": "https://example.com"},
).json()

result = start
while result["status"] != "complete":
    time.sleep(2)
    result = requests.get(f"{base}/scans/{start['id']}", headers=h).json()

print("Score:", result["score"], result["shareUrl"])

Step 4 — Integrate via MCP

Agent Ready exposes an MCP server at https://agent-ready.dev/api/v1/mcp. The server card at /.well-known/mcp/server-card.json advertises three tools: scan_site, get_scan, and ask. Add a server entry to your MCP client config (Claude Desktop, Cursor, Cline, Continue, Goose):

{
  "mcpServers": {
    "agent-ready": {
      "transport": "streamable-http",
      "url": "https://agent-ready.dev/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${AGENT_READY_KEY}"
      }
    }
  }
}

Your agent can now run scans and search the Agent Ready glossary, guides, and methodology without any custom code. The ask tool uses the same NLWeb-compatible search exposed at /ask on the public site.

API reference

Full OpenAPI 3.1 spec: /api/v1/openapi.json (alias /openapi.json). Public endpoints under /api/v1:

  • POST /api/v1/scans — start a scan. Body: {"url": "https://example.com"}.
  • GET /api/v1/scans/{id} — fetch scan status and results.
  • POST /api/v1/ask — NLWeb-compatible search over Agent Ready content. Body: {"query": "what is llms.txt?"}.
  • POST /api/v1/mcp — MCP streamable-http endpoint. Same Bearer token, same rate-limit budget.

Rate limits: 10 req/min, 200 req/day per key (sliding window). Discovery aliases: the OpenAPI spec is also linked from the homepage via an RFC 8288 Link header with rel="service-desc".

Frequently asked questions

Do I need to sign up to run a scan?
No — anonymous one-off scans run from the homepage at https://agent-ready.dev/ without sign-up (3 scans per IP per 30 days). To use the REST API or MCP server, you need a Pro account and an API key from /dashboard/api-keys.
How long does a scan take?
Free tier scans complete in 5-15 seconds (25 pages). Pro scans complete in 15-60 seconds (250 pages). The /api/v1/scans response returns immediately with a scan id; poll /api/v1/scans/{id} until the status field flips from queued to complete. There is no webhook callback yet.
Can I use the same API key for REST and MCP?
Yes — the same Bearer token authenticates POST /api/v1/scans, GET /api/v1/scans/{id}, POST /api/v1/ask, and POST /api/v1/mcp. The per-minute (10) and per-day (200) rate-limit budgets are shared across all surfaces.
What does the MCP server expose?
Three tools: scan_site (start a scan), get_scan (fetch results), and ask (NLWeb-style search over the Agent Ready glossary, guides, and methodology). The server card at /.well-known/mcp/server-card.json describes the full surface in SEP-1649 format. Claude Desktop, Cursor, Cline, and other MCP clients can install it from the card URL.
Where is the OpenAPI spec?
OpenAPI 3.1 at https://agent-ready.dev/api/v1/openapi.json (alias: /openapi.json). The spec covers every public endpoint, request schema, response schema, and authentication requirement. Use it with OpenAPI codegen (openapi-typescript, openapi-generator, swagger-codegen) to produce a typed client in your language of choice.