GAIPEvidence on AI agents and MCP servers

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.

FieldTypeDescription
snapshot_idstringCitable id of the weekly snapshot, AGENT-WEB-YYYY-Www.
weekstringISO week the figures cover (Monday 00:00 UTC to the next Monday), e.g. 2026-W40.
datasetstringWhich 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).
metricstringPath 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.
valuenumberThe figure. Empty when withheld (see withheld) or not available that week.
denominatornumberFor 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.
unitstringcount, share (a fraction from 0 to 1), milliseconds, seconds, hours, days or number.
withheldbooleantrue 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_versionstringMethod 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).

FieldTypeDescription
snapshot_idstringCitable id of the weekly snapshot, AGENT-WEB-YYYY-Www.
weekstringISO week in which GAIP observed the change.
sequenceintegerPosition of the entry in GAIP's change log.
target_idstringGAIP's id of the observed public MCP server or A2A agent (obs_...).
target_kindstringMCP_REMOTE, A2A or another target kind.
target_locatorstringThe public endpoint or agent card URL GAIP read, as the public change feed shows it.
before_hashstringSHA-256 of the declared document before the change.
after_hashstringSHA-256 of the declared document after the change.
observed_at_utcstringWhen GAIP observed the change (RFC 3339, UTC).
diffobjectWhat changed, as the public feed shows it (tool names, hashes, short excerpts). JSON text in the CSV.
labelsarrayChange classes (for example tool_added, description_changed). JSON text in the CSV.
receipt_idstringGAIP receipt for the observation, when one was issued.
receipt_urlstringWhere to verify that receipt.
previous_entry_sha256stringHash of the change-log entry before this one (the chain).
entry_sha256stringSHA-256 of this entry; commits to previous_entry_sha256.
evidence_classstringWhat 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.

FieldTypeDescription
target_idstringGAIP's id of the watched agent (obs_ + 24 hex characters).
source_registrystringThe public registry that lists it: official-mcp-registry or a2aregistry-org.
registry_namestringThe 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_identifierstringThe 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).
kindstringMCP_REMOTE (a remote MCP server) or A2A_CARD (an A2A agent card).
cohortsarrayCohort 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_datestringThe 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).

FieldTypeDescription
periodstringYYYY-MM for a final month, or rolling_30_days for the current block
statusstringfinal or provisional
window_start_utcdatetimeStart of the period (UTC)
window_end_utcdatetimeEnd of the period (UTC, exclusive)
cohortstringall (every public agent GAIP watches) or panel (AGENTS-COHORT-2026-10)
protocolstringMCP, A2A or ALL
agentscountAgents with at least one visit (empty when under 5: the cell is withheld)
visitscountVisits: observations in which GAIP sent a request
visits_reachablecountVisits where the host answered (any HTTP status); empty under 5
visits_reachable_sharesharevisits_reachable / visits
agents_reachable_95countAgents reachable on at least 95% of their visits; empty under 5
agents_reachable_95_shareshareagents_reachable_95 / agents
response_time_p50_msmillisecondsMedian response time of successful handshakes
response_time_p95_msmilliseconds95th percentile response time of successful handshakes
successful_handshakescountReachable visits with an HTTP 2xx answer and a response time

Units

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)

FieldDescription
schema_versionVersion of this document's shape.
generated_at_utcWhen the summary was built (UTC).
noticeWhat the figures are and are not (facts observed at a stated time; not an assessment).
neutralityNo ranking, league table or score of any party; small counts suppressed.
targetsPublic targets GAIP watches: total, by kind and by source, and those withdrawn or unpublished.
coverageTargets with an observation and the share observed in the last 48 hours.
status_distributionTargets by their latest observed state (counts).
manifest_changesCount of published manifest changes in the last 7 days.
ecosystem_conformanceAggregate counts of declared-metadata checks by protocol (cells of at least 5).
metadata_signal_pattern_ratesPer signal pattern: present, not present, not evaluable, and the rate.
overall_verdictsAlways null: GAIP issues no overall verdict.
rankingAlways null: GAIP does not rank.
capability_recordThe 2026-10 reference panel (size, membership hash, status counts), change-log head and the quarter's random sample.
tiersRevisit tiers: daily-tier and census sizes, cadence and coverage.
reachWeekly coverage: share of known public remote agents observed in the last 7 days.
limitsRequest budget and revisit plan (per cycle, per hour).
cycle_healthScheduler state, last cycle and errors (operational).
sourcesRegistries and lists GAIP reads, with their terms basis.
registry_archiveCounts of archived Official MCP Registry entries (versions kept, names).
declared_extrasWhat 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_derivationsDerived 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_panelThe agentic-commerce shop panel's cohort and aggregate figures.
unique_datasetsHeads 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_ledgerHead of GAIP's monthly outcome ledger.
weekly_snapshotsHead of the weekly snapshot chain: hash, count and newest week.
reliability_indexWhen 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_daysRetention per record (null means no deletion date).
retention_notesPlain-English retention rules.
third_party_scannersOutside scanners named in the method and whether GAIP ran them (NOT_RUN).
endpointsURLs of the per-target, lookup, change and capture routes.
price_gbpAlways 0: free.
automatic_evidence_creditAlways false.
servedPresent when served from the copy the Observatory stored: when it was built and whether it is stale.
licenseLicence block: CC BY 4.0 for aggregate figures, with what it covers.

/v1/free/ecosystem/snapshots: Weekly ecosystem snapshots (frozen, hash-chained)

FieldDescription
schema_versionVersion of this document's shape.
titleName of the series.
noticeWhat the figures are and are not.
chainCheck of the snapshot hash chain.
methodMethod page.
citationHow to cite one snapshot.
licenceLicence note (CC BY 4.0 for aggregate figures).
licence_urlLicence URL.
correctionsCorrections and opt-out route.
price_gbpAlways 0.
automatic_evidence_creditAlways false.
weeksIndex: each frozen week with its snapshot SHA-256, the previous week's and its URL.
first_snapshotWhen the first snapshot is frozen.
weekWith ?week=: the ISO week.
snapshotWith ?week=: the frozen aggregate snapshot.
previous_sha256With ?week=: the previous week's snapshot hash.
snapshot_sha256With ?week=: this snapshot's SHA-256 (commits to previous_sha256).
errorWEEK_NOT_FROZEN when the asked week has no snapshot.
licenseLicence block (see /v1/free/data/dictionary).

/v1/free/observatory/methods: Dataset methods: versions and changes

FieldDescription
schema_versionVersion of this document's shape.
titleName.
meaningHow method versions are kept and applied.
method_docLink to the method section.
overlap_ruleThe old-and-new overlap a later method change must run.
from_basis_noteHow each version's from_utc was set.
datasetsPer dataset: title, cycle, method versions with dates, what changed and known defects.
urlThis document's URL.
licenseLicence block (see /v1/free/data/dictionary).

/v1/free/agent-web-index: Agent Web Index (monthly)

FieldDescription
schema_versionVersion of this document's shape.
nameIndex name.
titleTitle.
monthCalendar month (YYYY-MM).
statusprovisional or final.
window_utcStart and end of the month (UTC).
weeksISO weeks counted in the month.
generated_at_utcWhen the index was built.
figuresThe headline figures, each with count, denominator and share (withheld under 5).
declared_derivationsBeside 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_frameThe reference panel (size, membership hash) and the registry size it is read against.
rulesCounting rules.
not_collected_yetFigures whose collector is switched off.
minimum_cell_size5: counts and totals under it are withheld.
citationHow to cite the month's index.
jsonThis document's URL.
reproduceThe published queries and the script that recompute each figure (/v1/free/agent-web-index/queries, /v1/free/agent-web-index/reproduce.py).
weekly_totals_ruleHow 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).
licenceLicence note.
licence_urlLicence URL.
availablefalse when no copy is stored for the month.
messageWhy not available.
meaningWhat a missing month means.
errorMONTH_FORMAT for a bad ?month=.
exampleA valid month.
reliabilityThe 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.
servedWhen the stored copy was built and whether it is stale.
licenseLicence block (see /v1/free/data/dictionary).

/v1/free/data/releases: Permanent dataset ids

FieldDescription
schema_versionVersion of this document's shape.
titleName.
meaningWhat an id is and that it is never edited.
licenceLicence note.
licence_urlLicence URL.
noticeWhat the figures are.
chainCheck of the committed registry's hash chain.
entriesCohort and quarterly release ids (committed registry), each with its content and SHA-256.
doisDOIs recorded for issued releases.
methodMethod page.
price_gbpAlways 0.
automatic_evidence_creditAlways false.
weekly_snapshotsWeekly snapshot ids AGENT-WEB-YYYY-Www with each download file's SHA-256 (database registry, append-only, hash-chained).
licenseLicence block (see /v1/free/data/dictionary).