gaipagents-com Agent Observatory API
Conformance of A2A, MCP and OpenAPI declarations and the manifest change log.
Conformance of A2A, MCP and OpenAPI declarations and the manifest change log.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/gaipagents-com:gaipagents-com-agent-observatory-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
name: GAIP
url: https://www.gaipagents.com/contact
description: 'GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish, and answers questions about that record with signed receipts. Free, read-only, no key; facts at a stated time, never an assessment. First call: gaip_check on https://www.gaipagents.com/mcp, or GET https://www.gaipagents.com/v1/free/conformance/check?url=. What it answers, by who asks: https://www.gaipagents.com/v1/free/map. Every completed answer carries a continuity handle; send it back and the answer is bound to your own history with GAIP.'
summary: GAIP keeps an independent, dated record of what AI agents, MCP servers and online shops publish.
termsOfService: https://www.gaipagents.com/terms
title: GAIP Agent Observatory API
version: 1.8.0
x-gaip-legal:
corrections: https://www.gaipagents.com/corrections
methodology: https://www.gaipagents.com/methodology
privacyPolicy: https://www.gaipagents.com/privacy
status: DRAFT_PENDING_LEGAL_REVIEW
termsOfService: https://www.gaipagents.com/terms
x-gaip-manifest-version: 0.15.0
x-gaip-platform-name: GAIP
servers:
- url: https://www.gaipagents.com
security: []
tags:
- description: Conformance of A2A, MCP and OpenAPI declarations and the manifest change log.
name: Agent Observatory
paths:
/data/weekly/{week}/{file}:
get:
description: 'A frozen ISO week''s files, built once when the week is frozen: totals.csv / totals.jsonl (aggregate figures, one row…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getWeeklyDownload
operationId: getWeeklyDownload
parameters:
- description: ISO week YYYY-Www, or latest
in: path
name: week
required: true
schema:
type: string
- description: totals.csv, totals.jsonl, changes.csv or changes.jsonl
in: path
name: file
required: true
schema:
type: string
responses:
'200':
description: The file (text/csv or application/jsonlines)
'302':
description: Redirect to the newest week
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Week not built
summary: Weekly download file
tags:
- Agent Observatory
/v1/free/agent-web-index:
get:
description: Monthly headline figures on the 2026-10 reference panel, each with its count, denominator and share (withheld under 5)…
externalDocs:
url: https://www.gaipagents.com/docs/api#getAgentWebIndex
operationId: getAgentWebIndex
parameters:
- description: 'Calendar month YYYY-MM (default: this month)'
in: query
name: month
schema:
type: string
responses:
'200':
content:
application/json:
schema:
externalDocs:
url: https://www.gaipagents.com/v1/free/data/dictionary
properties:
available: {}
citation: {}
declared_derivations: {}
error: {}
example: {}
figures: {}
generated_at_utc: {}
json: {}
licence: {}
licence_url: {}
license: {}
meaning: {}
message: {}
minimum_cell_size: {}
month: {}
name: {}
not_collected_yet: {}
reliability: {}
reproduce: {}
rules: {}
sample_frame: {}
schema_version: {}
served: {}
status: {}
title: {}
weekly_totals_rule: {}
weeks: {}
window_utc: {}
type: object
description: The month's index
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad month
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: No copy stored for the month
summary: Agent Web Index (monthly)
tags:
- Agent Observatory
x-license:
covers: aggregate figures
id: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
/v1/free/changes/feed.atom:
get:
description: 'Dated neutral facts about published MCP server and A2A agent manifests, newest first (at most 100): tools added…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getChangesAtomFeed
operationId: getChangesAtomFeed
parameters:
- description: Target URL (MCP endpoint or agent card) for a per-target feed
in: query
name: url
schema:
type: string
- description: Observatory target id
in: query
name: target_id
schema:
type: string
- description: Maximum entries (default 50, at most 100)
in: query
name: limit
schema:
maximum: 100
minimum: 1
type: integer
responses:
'200':
description: Atom feed (application/atom+xml)
'304':
description: Not modified
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid query
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Target not observed
summary: Observatory change feed (Atom)
tags:
- Agent Observatory
/v1/free/changes/feed.json:
get:
description: The same entries as the Atom feed as JSON Feed 1.1 (application/feed+json).
operationId: getChangesJsonFeed
parameters:
- description: Target URL for a per-target feed
in: query
name: url
schema:
type: string
- description: Observatory target id
in: query
name: target_id
schema:
type: string
- description: Maximum entries (default 50, at most 100)
in: query
name: limit
schema:
maximum: 100
minimum: 1
type: integer
responses:
'200':
description: JSON Feed
'304':
description: Not modified
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid query
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Target not observed
summary: Observatory change feed (JSON Feed 1.1)
tags:
- Agent Observatory
/v1/free/changes/subscribe:
get:
description: Whether GAIP observes a URL, its feed URLs, its latest dated changes and how to get webhooks (gaip_watch_register); if…
externalDocs:
url: https://www.gaipagents.com/docs/api#subscribeToChanges
operationId: subscribeToChanges
parameters:
- description: Target URL
in: query
name: url
schema:
type: string
- description: Observatory target id
in: query
name: target_id
schema:
type: string
responses:
'200':
description: Subscription details
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid query
summary: Follow one target's changes
tags:
- Agent Observatory
/v1/free/changes/weekly.json:
get:
description: 'Per ISO week: aggregate counts (targets observed and changed, tools added and removed, reachability and protocol…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getWeeklyEcosystemChanges
operationId: getWeeklyEcosystemChanges
parameters:
- description: 'ISO week, e.g. 2026-W40 (default: all weeks)'
in: query
name: week
schema:
type: string
responses:
'200':
description: Weekly report
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Week not found
summary: What changed in the agent ecosystem (weekly)
tags:
- Agent Observatory
/v1/free/conformance/check:
post:
description: 'Checks caller-supplied public A2A, MCP, or OpenAPI metadata: per-finding severity, JSON path, fix and spec link, a…'
externalDocs:
url: https://www.gaipagents.com/docs/api#checkPublicAgentConformance
operationId: checkPublicAgentConformance
requestBody:
content:
application/json:
schema:
required:
- data_classification
- protocol
- metadata
type: object
required: true
responses:
'200':
description: Deterministic conformant or non-conformant report
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Malformed request
'413':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Payload too large
tags:
- Agent Observatory
summary: Check public agent conformance
x-summary-source: derived
/v1/free/data/dictionary:
get:
description: Every column of the weekly download files and every top-level field of the public data answers (summary, snapshots…
externalDocs:
url: https://www.gaipagents.com/docs/api#getDataDictionary
operationId: getDataDictionary
responses:
'200':
description: OK
summary: Data dictionary
tags:
- Agent Observatory
/v1/free/data/releases:
get:
description: The append-only registry of GAIP's permanent dataset ids (e.g.
externalDocs:
url: https://www.gaipagents.com/docs/api#getDataReleases
operationId: getDataReleases
responses:
'200':
content:
application/json:
schema:
externalDocs:
url: https://www.gaipagents.com/v1/free/data/dictionary
properties:
automatic_evidence_credit: {}
chain: {}
dois: {}
entries: {}
licence: {}
licence_url: {}
license: {}
meaning: {}
method: {}
notice: {}
price_gbp: {}
schema_version: {}
title: {}
weekly_snapshots: {}
type: object
description: Registry
summary: Permanent ids of frozen cohorts and quarterly aggregate releases
tags:
- Agent Observatory
x-license:
covers: aggregate figures
id: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
/v1/free/ecosystem/snapshots:
get:
description: 'One aggregate snapshot per completed ISO week, frozen after the week ends and never rewritten: targets, reachability…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getEcosystemSnapshots
operationId: getEcosystemSnapshots
parameters:
- description: 'ISO week, e.g. 2026-W40 (default: index of frozen weeks)'
in: query
name: week
schema:
type: string
responses:
'200':
content:
application/json:
schema:
externalDocs:
url: https://www.gaipagents.com/v1/free/data/dictionary
properties:
automatic_evidence_credit: {}
chain: {}
citation: {}
corrections: {}
error: {}
first_snapshot: {}
licence: {}
licence_url: {}
license: {}
method: {}
notice: {}
previous_sha256: {}
price_gbp: {}
schema_version: {}
snapshot: {}
snapshot_sha256: {}
title: {}
week: {}
weeks: {}
type: object
description: Index or one snapshot
summary: Weekly agent-ecosystem snapshots (frozen, hash-chained)
tags:
- Agent Observatory
x-license:
covers: aggregate figures
id: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
/v1/free/host-timeline:
get:
description: Dated events GAIP observed about one host across its records (Observatory capability record, agent keys, AI…
externalDocs:
url: https://www.gaipagents.com/docs/api#getHostTimeline
operationId: getHostTimeline
parameters:
- description: The site's host name, e.g. shop.example
in: query
name: host
required: true
schema:
type: string
responses:
'200':
description: The timeline (state TIMELINE, NO_RECORD, NOT_IN_PUBLIC_RECORD or WITHHELD)
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid host
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: GAIP's record about one site, as a timeline
tags:
- Agent Observatory
/v1/free/host-timeline/verify:
post:
description: Send {"host"} to get a private challenge and a token; publish the token at…
externalDocs:
url: https://www.gaipagents.com/docs/api#verifyHostOwner
operationId: verifyHostOwner
requestBody:
$ref: '#/components/requestBodies/JsonObject'
responses:
'200':
description: A token, or the verified timeline
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid host
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not verified
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: Your own site's full timeline, after proving you run it
tags:
- Agent Observatory
/v1/free/interoperability/inspect:
post:
description: POST /v1/free/interoperability/inspect
operationId: inspectInteroperabilitySchemaDrift
responses:
'200':
description: Declaration consistency evidence with no suitability verdict
tags:
- Agent Observatory
summary: Inspect interoperability schema drift
x-summary-source: derived
/v1/free/knowledge/conformance-rules:
get:
description: Versioned catalogue of every conformance finding code (severity, fix, spec section, versions)
operationId: getV1FreeKnowledgeConformanceRules
responses:
'200':
description: Read-only public knowledge document
tags:
- Agent Observatory
summary: Get V1Free knowledge conformance rules
x-summary-source: derived
/v1/free/observatory/anchors:
get:
description: Each day's signed chain-head document with its Sigstore/Rekor log index, OpenTimestamps proof and weekly Internet…
externalDocs:
url: https://www.gaipagents.com/docs/api#getRecordAnchors
operationId: getRecordAnchors
parameters:
- description: Maximum anchors (default 30)
in: query
name: limit
schema:
minimum: 1
type: integer
responses:
'200':
description: OK
summary: Dated chain-head anchors
tags:
- Agent Observatory
/v1/free/observatory/changed-since:
get:
description: 'Connect-time check: when GAIP began recording the server, its last recorded change, change classes since a date, stored…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getToolsChangedSince
operationId: getToolsChangedSince
parameters:
- description: MCP endpoint or agent card URL, exactly as you connect to it
in: query
name: url
schema:
type: string
- description: Observatory target id
in: query
name: target_id
schema:
type: string
- description: Approval date (RFC 3339 or YYYY-MM-DD)
in: query
name: since
schema:
type: string
- description: SHA-256 (64 hex) of the tool list you approved
in: query
name: tools_digest
schema:
type: string
responses:
'200':
description: 'Facts (known: false with a capture offer when GAIP has no history yet)'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid input
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: Has this MCP server changed since GAIP began recording it?
tags:
- Agent Observatory
/v1/free/observatory/changes:
get:
description: Hash-chained log of published manifest changes (before/after hashes, time observed).
operationId: getManifestChanges
parameters:
- description: ISO-8601 time or sequence to read from
in: query
name: since
schema:
type: string
- description: Observatory target id
in: query
name: target_id
schema:
type: string
- description: Maximum entries (default 50)
in: query
name: limit
schema:
minimum: 1
type: integer
responses:
'200':
description: Change entries
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid query
summary: Manifest Transparency Log
tags:
- Agent Observatory
/v1/free/observatory/corrections:
post:
description: An operator can request a correction or exclusion of their public entries.
operationId: submitObservatoryCorrection
requestBody:
$ref: '#/components/requestBodies/JsonObject'
responses:
'202':
description: Accepted for review
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid request
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: Request a correction or opt-out
tags:
- Agent Observatory
/v1/free/observatory/corrections/exclusion:
post:
description: An opt-out only pauses.
externalDocs:
url: https://www.gaipagents.com/docs/api#confirmObservatoryExclusion
operationId: confirmObservatoryExclusion
requestBody:
$ref: '#/components/requestBodies/JsonObject'
responses:
'200':
description: Token issued or excluded
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not confirmed
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: Make an opt-out permanent (site owner)
tags:
- Agent Observatory
/v1/free/observatory/lookup:
get:
description: Find an Observatory target by public url or name and read what it published over time.
operationId: lookupObservatoryTarget
parameters:
- description: Public agent card, MCP endpoint or server URL
in: query
name: url
schema:
type: string
- description: Published name
in: query
name: name
schema:
type: string
responses:
'200':
description: Matching targets
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: url or name required
summary: Look up an observed agent or MCP server
tags:
- Agent Observatory
/v1/free/observatory/methods:
get:
description: 'Per long-run dataset: each method version, when it took effect, what changed, known defects of earlier versions and the…'
externalDocs:
url: https://www.gaipagents.com/docs/api#getDatasetMethods
operationId: getDatasetMethods
responses:
'200':
content:
application/json:
schema:
externalDocs:
url: https://www.gaipagents.com/v1/free/data/dictionary
properties:
datasets: {}
from_basis_note: {}
license: {}
meaning: {}
method_doc: {}
overlap_rule: {}
schema_version: {}
title: {}
url: {}
type: object
description: OK
summary: Dataset method versions
tags:
- Agent Observatory
x-license:
covers: aggregate figures
id: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
/v1/free/observatory/summary:
get:
description: Totals and common fixes across observed public MCP servers and A2A agents; no named verdicts.
operationId: getObservatorySummary
responses:
'200':
content:
application/json:
schema:
externalDocs:
url: https://www.gaipagents.com/v1/free/data/dictionary
properties:
automatic_evidence_credit: {}
capability_record: {}
cold_archive: {}
collection_ledger: {}
coverage: {}
cycle_health: {}
declared_derivations: {}
declared_extras: {}
ecosystem_conformance: {}
endpoints: {}
full_text_archive: {}
generated_at_utc: {}
license: {}
limits: {}
manifest_changes: {}
metadata_signal_pattern_rates: {}
neutrality: {}
notice: {}
outcome_ledger: {}
overall_verdicts: {}
price_gbp: {}
ranking: {}
reach: {}
registry_archive: {}
reliability_index: {}
retention_days: {}
retention_notes: {}
schema_version: {}
served: {}
shop_panel: {}
sources: {}
status_distribution: {}
targets: {}
third_party_scanners: {}
tiers: {}
unique_datasets: {}
weekly_snapshots: {}
type: object
description: OK
summary: Agent Observatory summary
tags:
- Agent Observatory
x-license:
covers: aggregate figures
id: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
/v1/free/observatory/targets/{target_id}:
get:
description: Observations and change history for one target (facts at time T, not an assessment).
operationId: getObservatoryTarget
parameters:
- description: Observatory target id
in: path
name: target_id
required: true
schema:
type: string
responses:
'200':
description: Target view
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Target not found
summary: One observed target
tags:
- Agent Observatory
/v1/free/permission:
get:
description: Reads the target site's robots.txt (RFC 9309), Content-Signal and IETF AI-preference lines, RSL licence links…
externalDocs:
url: https://www.gaipagents.com/docs/api#checkPermission
operationId: checkPermission
parameters:
- description: The public https URL your agent wants to fetch
in: query
name: url
required: true
schema:
type: string
- description: Your agent's user-agent token, e.g. GPTBot (default *)
in: query
name: agent
schema:
type: string
responses:
'200':
description: The signed answer
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid input
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Rate limited
summary: May my agent fetch this?
tags:
- Agent Observatory
/v1/free/record/names:
get:
description: First-recorded date, registry, host, lookalike names on record, replies. Facts, not intent.
operationId: getRecordNames
parameters:
- description: Registry name or its last segment
in: query
name: name
schema:
type: string
- description: Instead of name
in: query
name: url
schema:
type: string
responses:
'200':
description: OK
summary: 'Names: since when a registry name is on record, and what looks like it'
tags:
- Agent Observatory
/v1/free/record/names/objection:
post:
description: '{name, owner_challenge}.'
operationId: objectToRecordName
requestBody:
$ref: '#/components/requestBodies/JsonObject'
responses:
'200':
description: OK
summary: A publisher's objection to its name
tags:
- Agent Observatory
/v1/free/record/names/reply:
post:
description: '{name, text, owner_challenge?}.'
operationId: replyAboutRecordName
requestBody:
$ref: '#/components/requestBodies/JsonObject'
responses:
'200':
description: OK
summary: The publisher's reply about a name
tags:
- Agent Observatory
/v1/free/record/tenure:
get:
description: First record date, days recorded and answered, changes, anchors. Not a trust signal.
operationId: getRecordTenure
parameters:
- description: MCP endpoint or agent card URL
in: query
name: url
schema:
type: string
responses:
'200':
description: OK
summary: 'Tenure: since when GAIP has recorded this endpoint'
tags:
- Agent Observatory
/v1/free/state-of-agents:
get:
description: Monthly aggregate figures on what public MCP servers and A2A agents published; page /state-of-agents.
operationId: getStateOfAgents
parameters:
- description: 'Calendar month YYYY-MM (default: this month)'
in: query
name: month
schema:
type: string
responses:
'200':
description: The month's report
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad month
summary: State of Agents monthly report (JSON)
tags:
- Agent Observatory
components:
schemas:
Error:
additionalProperties: true
description: 'Error body returned by GAIP routes: a stable machine code plus optional detail.'
properties:
detail:
description: Optional human-readable detail or structured context.
error:
description: Stable machine-readable error code, e.g. NOT_FOUND.
type: string
failure_class:
description: Optional failure class for storage errors.
type: string
required:
- error
type: object
requestBodies:
JsonObject:
content:
application/json:
schema:
type: object
required: true
externalDocs:
description: Agent-readable guide
url: https://www.gaipagents.com/llms.txt
x-gaip-internal-paths:
description: Served but not part of the public API listing (operations, programme metrics, founder-only plans). No stability commitment.
paths:
- /a2a/buyer-assurance
- /activation-pack.json
- /erc8004/transaction-plan.json
- /examples/art-claix-002.json
- /examples/broker-claix-002.json
- /integration.json
- /measurement.json
- /onboarding.json
- /phase-entry.json
- /phase1-acceleration.json
- /phase1-exit.json
- /phase1-outcome-receipt-schema.json
- /phase1-receipt-verification.json
- /phase1-receipts/preflight
- /phase1-scorecard.json
- /phase1-use-receipt-schema.json
- /progress.json
- /proof.json
- /schemas/counterparty-evidence-request-v1.schema.json
- /schemas/counterparty-evidence-response-v1.schema.json
- /shared-result.json
- /status.json
- /v1/free/adoption/status
- /v1/free/agents/buyer-assurance/operations
- /v1/free/art/evaluate
- /v1/free/broker/preflight
- /v1/free/commercial/capabilities
- /v1/free/commercial/coo-report
- /v1/free/commercial/outcome-value/capabilities
- /v1/free/counterparty-evidence
- /v1/free/delegation-evidence
- /v1/free/design-partner/qualify
- /v1/free/digital-art/evidence-check
- /v1/free/discovery/cohort
- /v1/free/extended-preflight/capabilities
- /v1/free/history/metrics
- /v1/free/incubator/agent-output-assurance
- /v1/free/interoperability/recovery
- /v1/free/loop/run
- /v1/free/outcomes/preflight
- /v1/free/sales/inbound-reply
- /v1/free/sales/outbound-policy
- /v1/free/verify-before-call
- /v1/shadow/services
- /value-outputs.json
x-gaip-native-execution:
automaticEvidenceCredit: false
durableReceiptRequiredBeforeSuccess: true
status: ACTIVE_BOUNDED_FREE
transports:
- A2A_JSONRPC
- MCP_STREAMABLE_HTTP_JSONRPC
- OPENAPI_HTTPS