Open data
Data dictionary
Every column of the weekly download files and every top-level field of GAIP's main public data answers. Machine-readable: /v1/free/data/dictionary. Back to open data.
totals.csv and totals.jsonl (CC BY 4.0)
One row per ISO week, dataset and metric.
| Field | Type | Description |
|---|---|---|
snapshot_id | string | Citable id of the weekly snapshot, AGENT-WEB-YYYY-Www. |
week | string | ISO week the figures cover (Monday 00:00 UTC to the next Monday), e.g. 2026-W40. |
dataset | string | Which record the figure comes from: a section of the weekly snapshot (observatory, capability_record, revisit_tiers, reach_coverage, market_coverage, standards_adoption, shop_panel, declaration_drift: what agents changed that week by kind with protocol-version-only changes apart, declared_totals: totals of declared tools, behaviour hints, output schemas, sign-in kinds, x402 and registry churn, declared_derivations: share of agents asking for each input-field category, agents pointing to outside domains, operator concentration; domain names are not in the files) or one of the long-run datasets (agent_keys, ai_permissions, client_behaviour, agent_terms, agent_prices, erc8004_cards, package_history: weekly npm and PyPI facts of MCP server packages and the OSV advisories for them). |
metric | string | Path of the figure inside its dataset block, dot-separated (as in the snapshot JSON at /v1/free/ecosystem/snapshots?week=). A share cell gives two rows: <cell>.count and <cell>.share. |
value | number | The figure. Empty when withheld (see withheld) or not available that week. |
denominator | number | For count and share rows of a share cell: the number of items the share is taken over (the cell's 'of'). Empty otherwise or when withheld. |
unit | string | count, share (a fraction from 0 to 1), milliseconds, seconds, hours, days or number. |
withheld | boolean | true when GAIP withheld the value: a count from 1 to 4, or a share whose count or denominator is under 5 (minimum cell size 5). |
method_version | string | Method version(s) of the dataset in force that week, from /v1/free/observatory/methods (several joined with +); for snapshot sections without a methods entry, the snapshot schema version. |
changes.csv and changes.jsonl (not CC BY)
Not covered by CC BY 4.0: per-agent entries of GAIP's public change log, exactly as served at /v1/free/observatory/changes; GAIP's terms of use apply (https://www.gaipagents.com/terms).
| Field | Type | Description |
|---|---|---|
snapshot_id | string | Citable id of the weekly snapshot, AGENT-WEB-YYYY-Www. |
week | string | ISO week in which GAIP observed the change. |
sequence | integer | Position of the entry in GAIP's change log. |
target_id | string | GAIP's id of the observed public MCP server or A2A agent (obs_...). |
target_kind | string | MCP_REMOTE, A2A or another target kind. |
target_locator | string | The public endpoint or agent card URL GAIP read, as the public change feed shows it. |
before_hash | string | SHA-256 of the declared document before the change. |
after_hash | string | SHA-256 of the declared document after the change. |
observed_at_utc | string | When GAIP observed the change (RFC 3339, UTC). |
diff | object | What changed, as the public feed shows it (tool names, hashes, short excerpts). JSON text in the CSV. |
labels | array | Change classes (for example tool_added, description_changed). JSON text in the CSV. |
receipt_id | string | GAIP receipt for the observation, when one was issued. |
receipt_url | string | Where to verify that receipt. |
previous_entry_sha256 | string | Hash of the change-log entry before this one (the chain). |
entry_sha256 | string | SHA-256 of this entry; commits to previous_entry_sha256. |
evidence_class | string | What kind of evidence the entry is (a fact GAIP observed, not a verdict). |
watched-agents.csv and watched-agents.jsonl (not CC BY)
Not covered by CC BY 4.0 (which covers GAIP's aggregate figures only): the names and identifiers are as listed by public registries; GAIP's terms of use apply (https://www.gaipagents.com/terms). Left out: agents on GAIP's exclusion list or on a host paused by an opt-out, agents retired from their registry, agents that did not come from a public registry (hosts callers asked about, cards a caller published or captured) and GAIP's own agents.
| Field | Type | Description |
|---|---|---|
target_id | string | GAIP's id of the watched agent (obs_ + 24 hex characters). |
source_registry | string | The public registry that lists it: official-mcp-registry or a2aregistry-org. |
registry_name | string | The name as that registry lists it (the Official MCP Registry's title; empty when the registry gives none, and for the A2A Registry, from which GAIP keeps no name). |
registry_identifier | string | The identifier as that registry lists it: the Official MCP Registry's server name (e.g. io.github.owner/server) or, for the A2A Registry, the URL of the agent card it lists (wellKnownURI). |
kind | string | MCP_REMOTE (a remote MCP server) or A2A_CARD (an A2A agent card). |
cohorts | array | Cohort memberships: AGENTS-COHORT-2026-10 (the reference panel), AGENTS-COHORT-YYYYQn (first watched in that quarter) and AGENTS-SAMPLE-YYYYQn (that quarter's random sample). JSON text in the CSV. |
first_watched_date | string | The date (UTC, YYYY-MM-DD) GAIP first watched it. |
reliability-index.csv and reliability-index.json (CC BY 4.0)
One row per period (final month or the current 30 days), cohort and protocol; built from the copies the Observatory tick stores (final months frozen once; current hourly).
| Field | Type | Description |
|---|---|---|
period | string | YYYY-MM for a final month, or rolling_30_days for the current block |
status | string | final or provisional |
window_start_utc | datetime | Start of the period (UTC) |
window_end_utc | datetime | End of the period (UTC, exclusive) |
cohort | string | all (every public agent GAIP watches) or panel (AGENTS-COHORT-2026-10) |
protocol | string | MCP, A2A or ALL |
agents | count | Agents with at least one visit (empty when under 5: the cell is withheld) |
visits | count | Visits: observations in which GAIP sent a request |
visits_reachable | count | Visits where the host answered (any HTTP status); empty under 5 |
visits_reachable_share | share | visits_reachable / visits |
agents_reachable_95 | count | Agents reachable on at least 95% of their visits; empty under 5 |
agents_reachable_95_share | share | agents_reachable_95 / agents |
response_time_p50_ms | milliseconds | Median response time of successful handshakes |
response_time_p95_ms | milliseconds | 95th percentile response time of successful handshakes |
successful_handshakes | count | Reachable visits with an HTTP 2xx answer and a response time |
Units
- count: a number of items
- share: a fraction from 0 to 1 (count / denominator)
- milliseconds: time in ms
- seconds: time in s
- hours: time in h
- days: time in days
- number: another numeric value
Minimum cell size 5: counts from 1 to 4 are withheld.
Public data answers
/v1/free/observatory/summary: Agent Observatory summary (updated each Observatory cycle)
| Field | Description |
|---|---|
schema_version | Version of this document's shape. |
generated_at_utc | When the summary was built (UTC). |
notice | What the figures are and are not (facts observed at a stated time; not an assessment). |
neutrality | No ranking, league table or score of any party; small counts suppressed. |
targets | Public targets GAIP watches: total, by kind and by source, and those withdrawn or unpublished. |
coverage | Targets with an observation and the share observed in the last 48 hours. |
status_distribution | Targets by their latest observed state (counts). |
manifest_changes | Count of published manifest changes in the last 7 days. |
ecosystem_conformance | Aggregate counts of declared-metadata checks by protocol (cells of at least 5). |
metadata_signal_pattern_rates | Per signal pattern: present, not present, not evaluable, and the rate. |
overall_verdicts | Always null: GAIP issues no overall verdict. |
ranking | Always null: GAIP does not rank. |
capability_record | The 2026-10 reference panel (size, membership hash, status counts), change-log head and the quarter's random sample. |
tiers | Revisit tiers: daily-tier and census sizes, cadence and coverage. |
reach | Weekly coverage: share of known public remote agents observed in the last 7 days. |
limits | Request budget and revisit plan (per cycle, per hour). |
cycle_health | Scheduler state, last cycle and errors (operational). |
sources | Registries and lists GAIP reads, with their terms basis. |
registry_archive | Counts of archived Official MCP Registry entries (versions kept, names). |
declared_extras | What agents declared beyond their tools (MCP instructions present, MCP Apps UI, tasks, tool-list change notices, extensions; A2A AP2, x402 and UCP extensions; 401 challenge schemes): counts over public targets, 1 to 4 shown as '<5'. |
declared_derivations | Derived from what agents declared (data5): data_appetite (share of agents whose tools' input fields ask for each category: payment card, bank account, email, phone, postal address, precise location, government id, health, date of birth, credentials, biometric, unbounded free text, file upload; counted by keyword rules, never field names), dependencies (agents pointing to outside domains; well-known service domains shared by at least 5 agents named, others only counted) and operators (operators counted, share of agents run by the 10 largest, operators by agents run; no operator named). Cells under 5 as '<5'; writing: when the newest record was written. |
shop_panel | The agentic-commerce shop panel's cohort and aggregate figures. |
unique_datasets | Heads and counts of the long-run datasets (agent keys, AI permissions, client behaviour, agent terms, agent prices, ERC-8004 cards, MCP package history), and whether each own-reader dataset's collector is on. |
outcome_ledger | Head of GAIP's monthly outcome ledger. |
weekly_snapshots | Head of the weekly snapshot chain: hash, count and newest week. |
reliability_index | When the reachability and response-time figures were last stored, and the newest final month's headline (share of visits reachable, p50 and p95 response time). |
retention_days | Retention per record (null means no deletion date). |
retention_notes | Plain-English retention rules. |
third_party_scanners | Outside scanners named in the method and whether GAIP ran them (NOT_RUN). |
endpoints | URLs of the per-target, lookup, change and capture routes. |
price_gbp | Always 0: free. |
automatic_evidence_credit | Always false. |
served | Present when served from the copy the Observatory stored: when it was built and whether it is stale. |
license | Licence block: CC BY 4.0 for aggregate figures, with what it covers. |
/v1/free/ecosystem/snapshots: Weekly ecosystem snapshots (frozen, hash-chained)
| Field | Description |
|---|---|
schema_version | Version of this document's shape. |
title | Name of the series. |
notice | What the figures are and are not. |
chain | Check of the snapshot hash chain. |
method | Method page. |
citation | How to cite one snapshot. |
licence | Licence note (CC BY 4.0 for aggregate figures). |
licence_url | Licence URL. |
corrections | Corrections and opt-out route. |
price_gbp | Always 0. |
automatic_evidence_credit | Always false. |
weeks | Index: each frozen week with its snapshot SHA-256, the previous week's and its URL. |
first_snapshot | When the first snapshot is frozen. |
week | With ?week=: the ISO week. |
snapshot | With ?week=: the frozen aggregate snapshot. |
previous_sha256 | With ?week=: the previous week's snapshot hash. |
snapshot_sha256 | With ?week=: this snapshot's SHA-256 (commits to previous_sha256). |
error | WEEK_NOT_FROZEN when the asked week has no snapshot. |
license | Licence block (see /v1/free/data/dictionary). |
/v1/free/observatory/methods: Dataset methods: versions and changes
| Field | Description |
|---|---|
schema_version | Version of this document's shape. |
title | Name. |
meaning | How method versions are kept and applied. |
method_doc | Link to the method section. |
overlap_rule | The old-and-new overlap a later method change must run. |
from_basis_note | How each version's from_utc was set. |
datasets | Per dataset: title, cycle, method versions with dates, what changed and known defects. |
url | This document's URL. |
license | Licence block (see /v1/free/data/dictionary). |
/v1/free/agent-web-index: Agent Web Index (monthly)
| Field | Description |
|---|---|
schema_version | Version of this document's shape. |
name | Index name. |
title | Title. |
month | Calendar month (YYYY-MM). |
status | provisional or final. |
window_utc | Start and end of the month (UTC). |
weeks | ISO weeks counted in the month. |
generated_at_utc | When the index was built. |
figures | The headline figures, each with count, denominator and share (withheld under 5). |
declared_derivations | Beside the figures: the month's latest frozen weekly declared_derivations block (data appetite, outside dependencies, operator concentration), as frozen; null before a week with it is frozen. |
sample_frame | The reference panel (size, membership hash) and the registry size it is read against. |
rules | Counting rules. |
not_collected_yet | Figures whose collector is switched off. |
minimum_cell_size | 5: counts and totals under it are withheld. |
citation | How to cite the month's index. |
json | This document's URL. |
reproduce | The published queries and the script that recompute each figure (/v1/free/agent-web-index/queries, /v1/free/agent-web-index/reproduce.py). |
weekly_totals_rule | How each figure's count and total split into ISO-week parts, and when parts are withheld (a part under 5 withholds all parts of that figure). |
licence | Licence note. |
licence_url | Licence URL. |
available | false when no copy is stored for the month. |
message | Why not available. |
meaning | What a missing month means. |
error | MONTH_FORMAT for a bad ?month=. |
example | A valid month. |
reliability | The month's reachability and response-time figures (final once the month is frozen, else the latest 30 days): share of visits reachable, share of agents reachable on at least 95% of visits, p50 and p95 response time, by protocol and cohort. |
served | When the stored copy was built and whether it is stale. |
license | Licence block (see /v1/free/data/dictionary). |
/v1/free/data/releases: Permanent dataset ids
| Field | Description |
|---|---|
schema_version | Version of this document's shape. |
title | Name. |
meaning | What an id is and that it is never edited. |
licence | Licence note. |
licence_url | Licence URL. |
notice | What the figures are. |
chain | Check of the committed registry's hash chain. |
entries | Cohort and quarterly release ids (committed registry), each with its content and SHA-256. |
dois | DOIs recorded for issued releases. |
method | Method page. |
price_gbp | Always 0. |
automatic_evidence_credit | Always false. |
weekly_snapshots | Weekly snapshot ids AGENT-WEB-YYYY-Www with each download file's SHA-256 (database registry, append-only, hash-chained). |
license | Licence block (see /v1/free/data/dictionary). |