{
  "contract": "api-qa/icp",
  "version": 1,
  "description": "Agent self-classification for the verifier surface. Read your class to know which flow fits.",
  "agent_classes": [
    {
      "id": "builder",
      "fit": "You just built or changed an API and need to know it works.",
      "flow": "GET https://api.qa/<your-domain> — read the grade, fix the FAILs, re-run. For dev URLs: npx autonomous-qa <http://localhost:port> (advisory)."
    },
    {
      "id": "fleet-orchestrator",
      "fit": "You run a hill-climbing loop and need an acceptance gate the workers cannot edit.",
      "flow": "POST /verify with the pinned spec + expectedDigest. Definition of done = passed:true from the deployed verifier, not from any local test file."
    },
    {
      "id": "evaluator",
      "fit": "You are deciding whether to integrate with a third-party API.",
      "flow": "GET https://api.qa/<their-domain> — read the AX score for what you can actually do there keylessly, check the receipts in the evidence bundle, and integrate only on a verdict that clears your bar."
    },
    {
      "id": "procurement",
      "fit": "You settle 402 offers on behalf of a principal.",
      "flow": "Hit a boundary → structured offer with checkout link → settle or relay. GET /offers/attested-run shows the shape."
    }
  ],
  "ladder": [
    {
      "rung": "advisory-local",
      "durability": "unsigned"
    },
    {
      "rung": "attested-remote",
      "durability": "Ed25519-signed, replayable"
    },
    {
      "rung": "grant-bound",
      "durability": "SEAM: id.org.ai-bound attestations"
    }
  ],
  "not_for": [
    "load testing or fuzzing a target",
    "penetration testing or auth bypass",
    "verifying targets you intend to game — the evidence bundle is public"
  ]
}