Public · keyless · CORS-open

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

Method
Endpoint
Returns
GET
/api/gspc
The living board (counts in totals.public_count)
GET
/api/gspc?axis=<name>
One axis (404 lists known axis)

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.