The GSPC axis API
One public endpoint returns the GSPC (Governance · Safety · Provenance · Continuity) living board as JSON. Slot counts live in totals.public_count. No account, no API key, no tiers. Published carded predicates carry a verification path; uncarded fleet aggregates are labelled and do not claim one.
The endpoint
Base URL: https://councilof.ai/api/gspc
Auth: none. The response sends access-control-allow-origin: * and is cached for 300s.
Axes: governance, safety, provenance, continuity, conformance, openness, machinery-conformity, care, cross-reality, detector-interop, art5-safeguard, swarm, affect, jail, provenance-controls, reserve-attestation, regulatory-framework, distribution-integrity, custody-disclosure, ai-adoption-components, labour-components, humanoid-labour-index.
Call it
# The living board (keyless — no auth header). Counts: totals.public_count
curl https://councilof.ai/api/gspc
# A single axis
curl "https://councilof.ai/api/gspc?axis=governance"
# An unknown axis returns 404 with the list of known axis
curl "https://councilof.ai/api/gspc?axis=nope"
# => { "error": "unknown axis", "known": [ "governance", "safety", ... ] }Response shape (schema csoai.gspc-axes/0.5)
{
"schema": "csoai.gspc-axes/0.5",
"issuer": "CSOAI Ltd (GB, Companies House 16939677)",
"doi": "10.5281/zenodo.21991104",
"measured_on": {
"model": "fleet and date live on the payload — not typed on this page",
"date": "see measured_on.date",
"grading": "deterministic grading; item count lives on the payload"
},
"totals": {
"public_count": "<derived: N axis · M measured>",
"measured_axes": "<derived>",
"quotable_axes": "<derived>",
"items": "<sum of per-axis n>",
"separated_leads": "<derived>",
"ties": "<derived>",
"untested_separations": "<derived>"
},
"axes": [
{
"axis": "safety",
"family": "gspc",
"kind": "model-comparison",
"bench": "DefBench",
"task": "calibrated refusal on paired requests",
"n": 36,
"accuracy": 0.944,
"leader": "gemma3:12b (base model)",
"separation": "TIE",
"separation_p": 0.6875,
"interval": [0.819, 0.985],
"fleet_mean": 0.732,
"macro_f1": 0.944,
"unparsed_rate": 0.0541,
"status": "MEASURED",
"dataset": "csoai/gspc-agi"
},
{
"axis": "reserve-attestation",
"family": "financial",
"kind": "deterministic-facts",
"n": 16,
"status": "MEASURED",
"evidence_url": "/interop/financial-measure-run-reserve-attestation.json"
// no leader, accuracy or separation: no fleet comparison applies
}
// ... remaining axes
],
"measured_in_lane": [ /* in-lane instrument-honesty, human-vs-ai — not the board */ ],
"site_attestation": {
"attests": "integrity of this board snapshot as published by the site (NOT a re-measurement)",
"signer": "did:web:csoai.org#board-attestation-1",
"alg": "Ed25519",
"sig": "<present only when the board signing key is healthy>"
},
"limitations": [ "Read the live, derived limitations supplied with the board.", "..." ]
}schemaAlways csoai.gspc-axes/0.5 — the payload contract version.issuerCSOAI Ltd (GB, Companies House 16939677).doi10.5281/zenodo.21991104 — the citable dataset record. Axis counts live in the payload.totals.public_count / measured_axes / quotable_axesDerived from axes[]: published slots, rows whose status is MEASURED, and quotable MEASURED rows. A measurement does not imply a public leader or a completed separation test. Read the live numbers — do not type them here.totals.separated_leads / ties / untested_separationsDerived only over measured model-comparison axes. A TIE is not a win; a deterministic-fact axis has no applicable separation test. These counts move — read them from the live payload.totals.itemsSum of per-axis n across the selection. Read the live number from the payload.axes[].n / accuracy / intervaln is the per-axis measurement size. accuracy and interval are optional leader fields on model-comparison rows; withheld-leader and deterministic-fact rows omit them rather than inventing zeroes.axes[].separation / separation_p / separation_basisOptional. Model-comparison axes may publish SEPARATED, TIE or UNTESTED. A tested row may carry a McNemar exact p or a stated alternative basis. Deterministic-fact axes have no applicable separation field.axes[].fleet_mean / mean_harmOptional fleet aggregates. They describe the published aggregate run; they are not presented as a per-model card or public-leader score when public_leader_state is set.axes[].per_modelJail only: verbatim per-model rows associated with the living-board source (TP/FP/TN/FN, precision, recall). Check measured_on.living_stamp.verification_state before relying on its attestation.measured_in_laneIn-lane instrument-honesty and human-vs-ai — served for honesty; NOT board-quotable and never counted in totals.axes[].public_leader_stateWhen present, explains why a measured fleet aggregate has no public leader: EXCLUDED_OWN_MODEL or NO_SIGNED_CARD. Such an aggregate is not presented as a card-backed ranking.measured_on.living_stampRead verification_state from the response. The historical stamp remains explicitly UNVERIFIABLE; a replacement stamp is emitted only when the board signing key is healthy.site_attestationOptional. When present and valid, it attests integrity of the board snapshot bytes under #board-attestation-1. It does not re-run a measurement or turn uncarded aggregates into card-backed records.axes[].unparsed_rateShare of responses no label could be read from — reported, never scored as a wrong answer.axes[].statusMEASURED / UNMEASURED / DRAFT / SPEC / PLANNED. UNMEASURED is reported with its n, never hidden.There is no /v1/* SaaS API, no SDK to install, and no API key to request. This is a measurement body, not a platform: the public interface is a keyless JSON board. A valid optional site attestation proves snapshot integrity; it does not prove that every aggregate is independently recomputable.
Measurement, not certification. A carded score is a deterministic grade of recorded model outputs on its published split and carries a card verification path. Uncarded fleet aggregates remain explicitly labelled and publish no leader. A TIE means the leader's point-estimate lead is not statistically separated — ties are not wins.
Machine consumers should prefer the registries over crawls: the MCP Registry entry and the A2A agent card are the authoritative machine interfaces. This endpoint is keyless; the published card formats and inclusion proofs can be checked offline.