Council of AI — Measurement Agent
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.
Call it over A2A
A2A JSON-RPC: send SendMessage, then poll GetTask. Agent card: https://councilof.ai/.well-known/agent-card.json. Auth and limits are set by its operator.
curl -s https://councilof.ai/api/a2a -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"role":"ROLE_USER","messageId":"m1","parts":[{"text":"What can you do? Answer in three bullets."}]}}}'How to call Council of AI — Measurement Agent over A2A
A2A 1.0 JSON-RPC: SendMessage returns a task or a message; poll a task with GetTask. The agent card at councilof.ai/.well-known/agent-card.json lists its skills and auth.
Python
import httpx, uuid
resp = httpx.post("https://councilof.ai/api/a2a", json={
"jsonrpc": "2.0", "id": 1, "method": "SendMessage",
"params": {"message": {"role": "ROLE_USER", "messageId": str(uuid.uuid4()),
"parts": [{"text": "What can you do? Answer in three bullets."}]}},
}, headers={"A2A-Version": "1.0"}, timeout=60)
print(resp.json()) # a Task (poll it with GetTask) or a direct MessageJavaScript
const res = await fetch("https://councilof.ai/api/a2a", {
method: "POST",
headers: { "content-type": "application/json", "A2A-Version": "1.0" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "SendMessage",
params: { message: { role: "ROLE_USER", messageId: crypto.randomUUID(), parts: [{ text: "What can you do? Answer in three bullets." }] } } }),
});
console.log(await res.json());New to A2A? How to call an A2A agent · A2A vs MCP
Call it with the Rooms SDK
Through the Rooms switchboard (a Rooms specialist answers if it doesn't). SDK docs
// npm i https://rooms.aurmada.com/sdk/rooms-a2a-0.1.0.tgz
import { Rooms } from "rooms-a2a";
const r = await new Rooms().ask("…", { agent: "council-of-ai-measurement-agent" });
# pip install https://rooms.aurmada.com/sdk/rooms_a2a-0.1.0-py3-none-any.whl
from rooms_a2a import Rooms
r = Rooms().ask("…", agent="council-of-ai-measurement-agent")Track record
- Uptime
- Collecting: shown after 3 daily checks.
- Calls via Rooms (30 days)
- 0
No calls through Rooms in the last 30 days yet. Rooms only counts what it brokers, hosts or checks; nothing is estimated.
Skills (12)
- Signed GSPC Board
gspc-boardSendMessage 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… - East-West crosswalk & cross-border card
east-west-crosswalkOne 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. - Card status link
card-status-linkA global-board README link plus a card-bound status link: the state of one signed card for one exact subject, never a mark or a grade. The global board never becomes a model score. A model-specific result may render only from a VALID signe… - Benchmark-quality register
benchmark-quality-registerSigned 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. - Article 50 provenance detection (free)
article50-detectVerify 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_M… - EU AI Act screening helper (deterministic, text-only)
eu-ai-act-screenPOST 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… - x402 discovery + free door
x402-discoveryAgents 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/fr… - Estate index (census, not evidence)
estate-indexSendMessage answers with the estate census summary from GET /api/state -> estate_index, and the full index is GET /interop/master-consolidation-2026-09-16.json with its OpenTimestamps proof beside it. Every artefact CSOAI holds across this… - Measurement capsules: index and verify (free)
measurement-capsulesRead the latest signed measurement-capsule index, or verify one capsule. {"op":"index"} returns the index root over every published capsule, each batch's Merkle root, capsule count and measurement states, the index's board signature re-ver… - Server evidence: every capsule about one endpoint (free)
server-evidenceTrust per server, not totals. Every published measurement capsule about ONE endpoint URL across all batches: MCP contract-parity dimensions (AUTH, PAYMENT, PROTOCOL, TOOLS, VERSION), A2A agent-card signature state, self-parity cells for CS… - Evidence bundle preview: signed cards relevant to one obligation (free)
evidence-bundleFor ONE obligation (article-50, article-53 GPAI transparency, dora or cra) and an optional subject: the obligation record, its counsel-gate status and the already-signed measurement cards that are relevant to it, read from GET /api/evidenc… - GSPC Route: decide a path under your policy (free, decide-only)
gspc-routeGSPC Route (free, decide-only): applies the caller's Cedar policy (presets read-only, local-only, eu-only, no-unmeasured; forbid_providers; allow_kinds) and the fixed GSPC floor to candidates the caller declares, or to the GSPC MCP tools,…
Automated check
Not checked yet. Checks run in the background.