Show JSON
{
"protocolVersion": "1.0",
"name": "Council of AI — Measurement Agent",
"description": "Independent AI-governance MEASUREMENT body. Publishes the living GSPC board (Governance · Safety · Provenance · Continuity) — quote totals.lid and totals.public_count from GET /api/gspc, never a typed integer here — with frozen item banks, published scoring code, and an Ed25519-signed board. Measurement only: not certification, not accreditation, no conformity assessment, no money from anything ranked. A2A v1.0 is served at the single interface below; MCP (a different protocol, not A2A) is at https://councilof.ai/mcp.",
"author": "CSOAI",
"wellKnownURI": "https://councilof.ai/.well-known/agent-card.json",
"url": "https://councilof.ai/api/a2a",
"version": "1.1.0",
"provider": {
"organization": "CSOAI Ltd",
"url": "https://councilof.ai/"
},
"documentationUrl": "https://councilof.ai/llms.txt",
"iconUrl": "https://councilof.ai/og-image.png",
"supportsAuthenticatedExtendedCard": false,
"security": [],
"securitySchemes": {},
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": [
{
"uri": "https://councilof.ai/a2a/extensions/signed-receipts/v1/",
"required": false,
"description": "A DRAFT WE PUBLISH AND DO NOT YET EMIT: this agent attaches no receipt to a response today. Declared because we author the specification, not because the door implements it. Ed25519-signed task-outcome receipts plus a did:web key-trust convention for AgentCard signing (A2A v1.0 §8.4). A receipt is evidence of what was claimed, not a certification, and a signature over it is an integrity claim rather than a truth claim."
},
{
"uri": "https://councilof.ai/.well-known/x402.json",
"required": false,
"description": "x402 discovery index for the agent pay rail (also GET /api/x402). Free door amount 0 at /api/free-door. Verification stays free. payTo is merchant not payer. Self-settle is not revenue. Settlement is PROVEN on Base mainnet: transaction hashes are published in docs/product/SETTLED-DOORS and verifiable on chain by anyone, independently of this server. Measurement credential, never a grade."
},
{
"uri": "https://github.com/x402-foundation/x402/blob/69652a69798f0b08f95bef33318896e36e210f7e/specs/extensions/extension-offer-and-receipt.md",
"required": false,
"description": "x402 Offer & Receipt extension (v0.6), JWS profile — CONDITIONALLY EMITTED. A signed offer is attached only when BOARD_SIGN_KEY_PKCS8_B64 is provisioned and an accepts[] entry can be committed; otherwise the 402 carries csoai.offer_receipt with the gap and no offer-receipt extension block. A signed receipt is attached only after facilitator-confirmed settlement when the facilitator names a payer and the board key is available; otherwise the paid artefact still delivers and receiptGap states why no signed receipt was attached. When emitted, the format is jws, alg EdDSA, kid did:web:csoai.org#board-attestation-1, resolvable at https://csoai.org/.well-known/did.json (an authorization mechanism the extension names in section 4.5.1). eip712 is NOT emitted: the edge has no secp256k1 signer; when the optional Ed25519 board key is provisioned it signs JWS. A format we cannot produce is better declared missing than faked. A receipt proves this server signed those bytes; it is not by itself proof that money moved, and the transaction field, when present, is a claim to check against the chain."
}
]
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "gspc-board",
"name": "Signed GSPC Board",
"description": "SendMessage answers with the live board: totals.lid verbatim from GET /api/gspc and the derived axis rows (axis, family, kind, status, n, separation, leader state). Empty cells stay empty; a withheld leader is a state, not a zero; a fetch failure is UNCHECKABLE, never a fabricated number. Live JSON, recomputable from published rows.",
"tags": [
"measurement",
"governance",
"verification"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"gspc-board\",\"input\":{}}",
"Legacy compatibility: one text Part containing exactly \"board\"",
"GET /api/gspc — the same board, outside A2A"
],
"inputModes": [],
"outputModes": []
},
{
"id": "east-west-crosswalk",
"name": "East-West crosswalk & cross-border card",
"description": "One signed GSPC measurement mapped across EU, UK, US, Illinois, and China GB/T alignment surfaces. Crosswalk v1 JSON, cross-border signed card, and stranger verify at /gspc-verify. Measurement only — determination stays with authorities.",
"tags": [
"cross-border",
"crosswalk",
"measurement",
"verification"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"east-west-crosswalk\",\"input\":{}}",
"GET /api/cross — cross-border signed card"
],
"inputModes": [],
"outputModes": []
},
{
"id": "measured-badge",
"name": "Measured Badge",
"description": "A global-board README link plus a card-bound status badge. The global board never becomes a model score. A model-specific score may render only from a VALID signed cell that names the exact subject and immutable revision; otherwise the subject is UNMEASURED or UNSIGNED.",
"tags": [
"measurement",
"governance",
"verification"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"measured-badge\",\"input\":{\"card\":\"<64-hex-signed-card-sha256>\",\"subject\":\"owner/model@<40-or-64-hex-revision>\"}}",
"GET /api/badge?card=<signed-card-sha256>&subject=<url-encoded-owner/model@commit-sha>"
],
"inputModes": [],
"outputModes": []
},
{
"id": "benchmark-quality-register",
"name": "Benchmark-quality register",
"description": "Signed register of what third-party AI benchmarks disclose about their own process integrity. Deterministic predicates only — no language model judges. Records are unsolicited; nothing on the register is certification or endorsement.",
"tags": [
"meta-evaluation",
"benchmark-quality",
"reproducibility",
"governance"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"benchmark-quality-register\",\"input\":{}}",
"GET /api/benchmark-quality"
],
"inputModes": [],
"outputModes": []
},
{
"id": "article50-detect",
"name": "Article 50 provenance detection (free)",
"description": "Verify a C2PA-style signed manifest for AI-generated content (EU AI Act Article 50) at POST https://councilof.ai/api/detect. Deterministically checks the Ed25519-signed metadata layer and the IPTC/schema.org digitalSourceType; returns AI_MARKED / NOT_AI_MARKED / UNVERIFIABLE with a signed verdict receipt (in-toto/DSSE when a board key is bound). The imperceptible-watermark layer we cannot see is declared, never claimed. Free for all; unrestricted for authorities, media, fact-checkers, researchers and civil society. Not certification.",
"tags": [
"article-50",
"provenance",
"detection",
"verification",
"c2pa"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"article50-detect\",\"input\":{\"manifest\":{\"claim\":{}}}}",
"POST /api/detect {\"manifest\":{...},\"asset_hash\":\"<optional-64-hex>\"}"
],
"inputModes": [],
"outputModes": []
},
{
"id": "eu-ai-act-screen",
"name": "EU AI Act screening helper (deterministic, text-only)",
"description": "POST https://councilof.ai/api/assess with a system description. Keyword matches name the Annex III categories and Article 5 patterns a human should inspect; no model is consulted. It does not establish legal tier, applicability, exceptions or compliance, and an empty description is UNMEASURED, not a low-risk finding. When no signing key is provisioned the report says UNSIGNED out loud.",
"tags": [
"eu-ai-act",
"screening",
"deterministic"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"eu-ai-act-screen\",\"input\":{\"system\":\"<what the system does and for whom>\"}}",
"POST /api/assess {\"system\": \"<what the system does and for whom>\"}"
],
"inputModes": [],
"outputModes": []
},
{
"id": "x402-discovery",
"name": "x402 discovery + free door",
"description": "Agents discover paid artefact rails via GET https://councilof.ai/.well-known/x402.json (mode is reported from runtime env, Base eip155:8453, USDC; amounts from challenge only — no invent price). Catalog GET /api/x402. Free door GET /api/free-door amount 0 settles and charges nothing — proves the rail. Living board GET /api/gspc. Verification stays free at /gspc-verify. payTo is merchant receive, never the signer. Self-settle proves the rail; stranger revenue is separate (do not invent buyers). Coming—Paddle not live. No card-processor invent. Measurement, never certification. Signed offers and receipts are conditional: a 402 carries extensions['offer-receipt'].info.offers[] only when BOARD_SIGN_KEY_PKCS8_B64 is provisioned and an accepts[] entry can be committed; otherwise csoai.offer_receipt names the gap. A signed receipt appears in the X-PAYMENT-RESPONSE SettlementResponse only after facilitator-confirmed settlement when the facilitator names a payer and the board key is available; otherwise receiptGap states why no signed receipt was attached. Emitted signatures use format jws, alg EdDSA, kid did:web:csoai.org#board-attestation-1. Verify one without trusting us: POST it to /api/receipts/verify, or run scripts/verify_receipt.py against https://csoai.org/.well-known/did.json. Your own receipts: GET /api/receipts?payer=0x... (status UNRECORDED means no store is bound on that deployment, never that you did not pay). No eip712 is emitted — the edge has no secp256k1 signer.",
"tags": [
"x402",
"discovery",
"payments",
"measurement"
],
"examples": [
"SendMessage with Part.data {\"skill\":\"x402-discovery\",\"input\":{}} — catalog only; it makes no payment",
"GET https://councilof.ai/.well-known/x402.json",
"GET https://councilof.ai/api/free-door",
"GET https://councilof.ai/api/gspc",
"GET https://councilof.ai/gspc-verify",
"GET https://councilof.ai/api/free-door # inspect csoai.offer_receipt; read extensions['offer-receipt'].info.offers[0].signature only when signed",
"POST https://councilof.ai/api/receipts/verify -d '{\"receipt\":\"eyJ...\"}'",
"GET https://councilof.ai/api/receipts?payer=0x4dB7AAFbe797a39Cd6Cc4E7aa64d970F7F6E02B7"
],
"inputModes": [],
"outputModes": []
}
],
"conformance": true,
"conformance_errors": null,
"homepage": null,
"repository": null,
"license": null,
"pricing": null,
"contact": null,
"id": "48e5bba6-8848-4adc-8f92-b5fa2c0744e0"
}