{
  "name": "AgentRank",
  "description": "Scores how ready a public website is for AI agents (ChatGPT, Perplexity, Gemini, Claude): a 0–100 Agent Readiness Score across Discoverability, Clarity, Pricing Transparency, Actionability, Trust and Local Visibility, with evidence, a prioritized fix list and generated llms.txt + JSON-LD. Signed-in users can also read explicitly shared reports and compare existing audits for up to three sites.",
  "url": "https://jannick.io",
  "version": "1.4.0",
  "reviewedAt": "2026-10-15",
  "nextReviewDue": "2027-01-15",
  "note": "Descriptive HTTP capability card inspired by A2A; not an A2A protocol server. No JSON-RPC task, streaming, push-notification or extended-card endpoint is implemented. Use the POST endpoints and OpenAPI contract below.",
  "provider": { "organization": "AgentRank", "url": "https://jannick.io", "contact": "leon@jannick.io" },
  "documentationUrl": "https://jannick.io/api",
  "iconUrl": "https://jannick.io/favicon.svg",
  "capabilities": { "streaming": false, "pushNotifications": false, "stateTransitionHistory": false, "extensions": [] },
  "capabilityDescriptions": [
    { "id": "scan-website", "description": "Authenticated live audit of a public website with six-category scoring, prioritized fixes and generated implementation assets." },
    { "id": "read-shared-report", "description": "Read-only access to an explicitly shared audit, excluding generated implementation assets; white-label reports from active Agency subscriptions open without a sign-in." },
    { "id": "benchmark-sites", "description": "Authenticated read-only comparison of two or three sites using accessible existing audits; no new scans." }
  ],
  "supportsAuthenticatedExtendedCard": false,
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["application/json"],
  "authentication": { "schemes": ["session"], "description": "POST endpoints require the signed-in user's AgentRank bearer session token. Free accounts get 1 saved scan. Agents without a session should hand a human the deep link https://jannick.io/?url={target}. No separate API key, MCP or A2A authentication flow is provided by this card." },
  "rateLimits": { "runAudit": { "basis": "every call (saved or not)", "rolling24Hours": 50, "rolling30Days": 200, "agencyPerBillingPeriod": 100, "agencyPerDay": 50, "appliesTo": "Paid plans, excluding admins. Free: 1 scan, then 402 limit_reached; Agency quota exhaustion returns 402 agency_quota.", "status": 429, "retryAfter": "Integer seconds until the indicated rolling-window limit permits another scan; the other window may still apply." } },
  "skills": [
    {
      "id": "scan-website",
      "name": "Scan a website for agent readiness",
      "description": "Live-fetches a public website (homepage, robots.txt, sitemap.xml, llms.txt and agent manifests), grades six categories 0–100 and returns overall score, letter grade, findings, prioritized fixes and generated llms.txt/JSON-LD. Saves a report by default and uses the account's scan allowance. Can review tracked fixes against an owned previous report for the same URL.",
      "tags": ["agent-readiness", "aeo", "geo", "llms.txt", "json-ld", "audit"],
      "examples": ["Scan example.com for AI agent readiness", "How agent-ready is https://acme.com?"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"],
      "method": "POST",
      "endpoint": "https://jannick.io/api/apps/6a9d111004ca350a0146906d/functions/runAudit",
      "deepLink": "https://jannick.io/?url={target}"
    },
    {
      "id": "read-shared-report",
      "name": "Read a shared report",
      "description": "Returns an explicitly shared report by 24-hex id; sign-in required, except white-label reports from active Agency subscriptions. Does not include generated llms.txt/JSON-LD assets. Also viewable at https://jannick.io/r/{reportId}. Limited to 60 lookups per IP per rolling hour.",
      "tags": ["report"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"],
      "method": "POST",
      "endpoint": "https://jannick.io/api/apps/6a9d111004ca350a0146906d/functions/getPublicReport"
    },
    {
      "id": "benchmark-sites",
      "name": "Benchmark sites against competitors",
      "description": "Compares 2–3 sites from existing audits visible to the caller (owned audits, with explicitly shared audits as a fallback). No new scans. Returns per-site overall score, grade and six-category scores, plus gaps where a competitor beats the first site by at least five points.",
      "tags": ["benchmark", "competitor", "agent-readiness"],
      "examples": ["Compare acme.com against competitor-a.com and competitor-b.com", "How does my site score next to my two closest competitors?"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"],
      "method": "POST",
      "endpoint": "https://jannick.io/api/apps/6a9d111004ca350a0146906d/functions/getBenchmark"
    }
  ],
  "openapi": "https://jannick.io/openapi.json",
  "mcp": "https://jannick.io/.well-known/mcp.json",
  "llms": "https://jannick.io/llms.txt",
  "changelog": "https://jannick.io/changelog.txt"
}
