{
  "agent_web_index": {
    "citation": "GAIP Agent Web Index, October 2026, gaipagents.com/state-of-agents?month=2026-10, CC BY 4.0",
    "declared_derivations": null,
    "figures": [
      {
        "all_agents": {
          "denominator": "every public MCP server and A2A agent GAIP watched when this copy was built (all sources; hosts an outside caller asked about and GAIP's own agents left out); the agents counted are among them",
          "value": {
            "count": null,
            "of": 12525,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "numerator_by_week": {}
          }
        },
        "denominator": "every member of the frozen panel AGENTS-COHORT-2026-10",
        "id": "tools_changed",
        "label": "Agents whose declared tools changed",
        "panel": {
          "denominator": "every member of the frozen panel AGENTS-COHORT-2026-10",
          "id": "AGENTS-COHORT-2026-10",
          "value": {
            "count": null,
            "of": 4157,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "numerator_by_week": {}
          }
        },
        "source": "capability record change log (classified changes to declared tools)",
        "value": {
          "count": null,
          "of": 4157,
          "share": null,
          "withheld": "under 5"
        }
      },
      {
        "all_agents": {
          "denominator": "every public host whose declared terms GAIP read this month (hosts an outside caller asked about and rows under a method version with a known defect left out)",
          "of_which_x402_prices_changed": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "denominator": "panel hosts whose declared terms GAIP read this month (agent_terms rows)",
        "id": "terms_or_prices_changed",
        "label": "Hosts whose declared terms, limits or prices changed",
        "of_which_x402_prices_changed": {
          "count": null,
          "of": null,
          "share": null,
          "withheld": "under 5"
        },
        "panel": {
          "denominator": "panel hosts whose declared terms GAIP read this month (agent_terms rows)",
          "id": "AGENTS-COHORT-2026-10",
          "of_which_x402_prices_changed": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "source": "agent_terms change log against each host's previous row (a host's earliest row is not a change)",
        "value": {
          "count": null,
          "of": null,
          "share": null,
          "withheld": "under 5"
        }
      },
      {
        "all_agents": {
          "denominator": "every public host whose A2A agent card GAIP read this month (latest read; hosts an outside caller asked about and rows under a method version with a known defect left out)",
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "denominator": "panel hosts whose A2A agent card GAIP read this month (latest read)",
        "id": "signed_agent_cards",
        "label": "Agent cards carrying a signature",
        "panel": {
          "denominator": "panel hosts whose A2A agent card GAIP read this month (latest read)",
          "id": "AGENTS-COHORT-2026-10",
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "source": "agent_keys (signatures on A2A agent cards)",
        "value": {
          "count": null,
          "of": null,
          "share": null,
          "withheld": "under 5"
        }
      },
      {
        "denominator": "front-door gaip_diagnose answers to outside callers this month",
        "frozen": false,
        "id": "failure_types",
        "label": "Most frequent failure types diagnosed for outside callers",
        "outside_diagnoses": null,
        "population": "every outside caller's diagnosis (not a panel figure)",
        "research_consented_witness_checks": {
          "by_verdict": null,
          "checks": null
        },
        "source": "outcome research ledger (diagnosis classes; no error text, URL or caller kept)",
        "top": []
      },
      {
        "all_agents": {
          "denominator": "every agent host whose robots.txt or responses GAIP read this month (latest read; hosts an outside caller asked about and rows under a method version with a known defect left out)",
          "of_which_ietf_aipref": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "denominator": "panel hosts whose robots.txt or responses GAIP read this month (latest read)",
        "id": "ai_preference_adoption",
        "label": "Hosts carrying any AI-preference signal",
        "of_which_ietf_aipref": {
          "count": null,
          "of": null,
          "share": null,
          "withheld": "under 5"
        },
        "panel": {
          "denominator": "panel hosts whose robots.txt or responses GAIP read this month (latest read)",
          "id": "AGENTS-COHORT-2026-10",
          "of_which_ietf_aipref": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "value": {
            "count": null,
            "of": null,
            "share": null,
            "withheld": "under 5"
          },
          "weekly_totals": {
            "denominator_by_week": {},
            "numerator_by_week": {}
          }
        },
        "source": "ai_permissions: IETF AI preferences Content-Usage, RSL, W3C TDMRep, Content Signals (ai_permission_history.monthly_adoption)",
        "value": {
          "count": null,
          "of": null,
          "share": null,
          "withheld": "under 5"
        }
      }
    ],
    "generated_at_utc": "2026-10-03T23:03:40Z",
    "json": "https://www.gaipagents.com/v1/free/agent-web-index?month=2026-10",
    "licence": "CC BY 4.0",
    "licence_url": "https://creativecommons.org/licenses/by/4.0/",
    "minimum_cell_size": 5,
    "month": "2026-10",
    "name": "GAIP Agent Web Index",
    "not_collected_yet": {
      "agent_prices": {
        "collector_on": false,
        "status": "not collected yet (switched off until the founder confirms the source terms)"
      },
      "erc8004_cards": {
        "collector_on": false,
        "status": "not collected yet (switched off until the founder confirms the source terms)"
      }
    },
    "reliability": {
      "cells": [
        {
          "agents": 9702,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 9604,
            "of": 9702,
            "share": 0.9899
          },
          "cohort": "all",
          "protocol": "ALL",
          "response_time_ms": {
            "agents": 6078,
            "p50": 224,
            "p95": 1067,
            "successful_handshakes": 10721
          },
          "visits": 17252,
          "visits_reachable": {
            "count": 17118,
            "of": 17252,
            "share": 0.9922
          }
        },
        {
          "agents": 9229,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 9135,
            "of": 9229,
            "share": 0.9898
          },
          "cohort": "all",
          "protocol": "MCP",
          "response_time_ms": {
            "agents": 5608,
            "p50": 232,
            "p95": 1087,
            "successful_handshakes": 9203
          },
          "visits": 15723,
          "visits_reachable": {
            "count": 15596,
            "of": 15723,
            "share": 0.9919
          }
        },
        {
          "agents": 473,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 469,
            "of": 473,
            "share": 0.9915
          },
          "cohort": "all",
          "protocol": "A2A",
          "response_time_ms": {
            "agents": 470,
            "p50": 158,
            "p95": 810,
            "successful_handshakes": 1518
          },
          "visits": 1529,
          "visits_reachable": {
            "count": 1522,
            "of": 1529,
            "share": 0.9954
          }
        },
        {
          "agents": 3528,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 3505,
            "of": 3528,
            "share": 0.9935
          },
          "cohort": "panel",
          "protocol": "ALL",
          "response_time_ms": {
            "agents": 2256,
            "p50": 222,
            "p95": 1087,
            "successful_handshakes": 6894
          },
          "visits": 11073,
          "visits_reachable": {
            "count": 11014,
            "of": 11073,
            "share": 0.9947
          }
        },
        {
          "agents": 3068,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 3049,
            "of": 3068,
            "share": 0.9938
          },
          "cohort": "panel",
          "protocol": "MCP",
          "response_time_ms": {
            "agents": 1799,
            "p50": 235,
            "p95": 1107,
            "successful_handshakes": 5389
          },
          "visits": 9557,
          "visits_reachable": {
            "count": 9505,
            "of": 9557,
            "share": 0.9946
          }
        },
        {
          "agents": 460,
          "agents_reachable_on_95_percent_of_visits": {
            "count": 456,
            "of": 460,
            "share": 0.9913
          },
          "cohort": "panel",
          "protocol": "A2A",
          "response_time_ms": {
            "agents": 457,
            "p50": 158,
            "p95": 810,
            "successful_handshakes": 1505
          },
          "visits": 1516,
          "visits_reachable": {
            "count": 1509,
            "of": 1516,
            "share": 0.9954
          }
        }
      ],
      "citation": "GAIP Agent Reliability Index, the 30 days to 3 October 2026, gaipagents.com/state-of-agents, CC BY 4.0",
      "download": "https://www.gaipagents.com/data/reliability-index.csv",
      "method": "Built on the Observatory's cycle from the stored status observations of public MCP servers and A2A agents. A visit is an observation in which GAIP sent a request (reachable recorded as true or false); observations where GAIP sent nothing (withdrawn, opted out, robots.txt refused, not active in its source) are not visits. Reachable: the host answered with any HTTP status. A successful handshake is a reachable visit with an HTTP 2xx answer (MCP: the initialize answer; A2A: the agent card), with its response time in milliseconds. Per cell: the share of visits reachable; the share of agents with at least one visit that were reachable on at least 95% of their visits; the p50 and p95 response time of successful handshakes (nearest rank). Cells: protocol MCP, A2A or both, for all public agents GAIP watches and for the frozen reference panel AGENTS-COHORT-2026-10. A cell is shown when it has at least 5 agents (response times: 5 agents with a successful handshake) and any count under 5 is withheld. GAIP's own agents, hosts read because an outside caller asked about them, and withdrawn or unpublished agents are left out. A month runs from the Monday of its earliest ISO week to the Monday after its last (as the Agent Web Index) and is frozen once that window ends; the current block covers the last 30 days and is rebuilt hourly. GAIP keeps the newest 60 raw observations of each agent, so an agent visited more often than that in a window counts its newest 60. Facts as observed; not an assessment of any party.",
      "name": "GAIP Agent Reliability Index",
      "period": {
        "kind": "rolling_30_days",
        "label": "the 30 days to 3 October 2026",
        "rebuilt": "at most hourly",
        "status": "provisional",
        "window_utc": [
          "2026-09-03T22:03:38Z",
          "2026-10-03T22:03:38Z"
        ]
      }
    },
    "reproduce": {
      "queries": "https://www.gaipagents.com/v1/free/agent-web-index/queries",
      "script": "https://www.gaipagents.com/v1/free/agent-web-index/reproduce.py"
    },
    "rules": "Aggregates only: a count is shown only when it and its total are at least 5; no host, agent or caller is named; facts are as observed by GAIP at the stated time and assess no one. A month is final only after it ends; until then it is provisional.",
    "sample_frame": {
      "all_agents": {
        "as_of_utc": "2026-10-03T23:03:40Z",
        "rule": "Each figure's headline counts every public MCP server, A2A agent or host GAIP watched or read in the month, from every source; its denominator is stated beside it. Left out: hosts an outside caller asked about, GAIP's own agents and rows under a method version with a known defect.",
        "watched_public_agents": 12525
      },
      "left_out": "Hosts GAIP read only because an outside caller asked about them, and rows read under a method version with a known defect (https://www.gaipagents.com/v1/free/observatory/methods).",
      "official_mcp_registry": {
        "basis": "No complete walk of the Official MCP Registry was recorded for this month.",
        "entries": {
          "count": null,
          "from": null,
          "meaning": "(a) Server entries the Official MCP Registry listed across every page of GAIP's last complete walk of it (the walk asks for the latest version of each server, so each server name counts once; package-only servers count too).",
          "walk_completed_at_utc": null
        },
        "note": "No complete walk of the registry was recorded for this month.",
        "read_at_utc": null,
        "read_last_7_days": {
          "as_of_utc": "2026-10-03T23:03:40Z",
          "count": 11623,
          "meaning": "(d) Of (c), servers GAIP read (an observation attempt was recorded) in the last 7 days."
        },
        "reconcile_note": "No complete walk of the Official MCP Registry is recorded, so (a) and (b) are unknown; (c) and (d) are GAIP's own counts.",
        "reconciles": null,
        "remote": {
          "count": null,
          "meaning": "(b) Of (a), entries with a remote endpoint GAIP can read: a streamable-http or SSE remote with a public https URL, counted in the same walk."
        },
        "servers_listed": null,
        "walk_in_progress": {
          "entries_read_so_far": 49500,
          "meaning": "The walk now under way has read this many entries so far: a lower bound on the registry's size, not its size. It resumes by cursor at most 20 pages of 100 every 2 hours, and holds on a page while the admission allowance has no room, so a complete walk can take days.",
          "remote_so_far": 37792
        },
        "watched": {
          "as_of_utc": "2026-10-03T23:03:40Z",
          "count": 12032,
          "meaning": "(c) Official MCP Registry servers GAIP watches when this copy was built: active in the registry, inside the 50-per-host cap and not opted out. Admission is limited by the request budget, so (c) can trail (b); servers admitted since the walk ended can also put (c) above (b) until the next complete walk."
        }
      },
      "panel": {
        "cohort": "2026-10",
        "hosts": 3676,
        "id": "AGENTS-COHORT-2026-10",
        "ids": "https://www.gaipagents.com/v1/free/data/releases",
        "issued_at_utc": "2026-10-02T15:52:39Z",
        "mcp_servers_from_official_mcp_registry": 3629,
        "mcp_servers_from_official_mcp_registry_meaning": "Panel members that came from the Official MCP Registry. This is part of the panel, not the registry's size (see official_mcp_registry).",
        "members": 4157,
        "membership_sha256": "2233a448bbd86b8bad7ba29f7cf1532f7dca5bfbe5e851e72d976e4ef7dcb5b5",
        "rule": "Every public MCP server and A2A agent GAIP watched when the panel was frozen (October 2026); none is removed or replaced, so a member that stops answering still counts. Shown beside each figure so the same agents can be followed month to month.",
        "size_at_freeze": 4157
      }
    },
    "schema_version": "gaip.agent-web-index.v1",
    "status": "provisional",
    "title": "GAIP Agent Web Index \u2014 October 2026",
    "weekly_totals_rule": "Each month figure is split into ISO-week parts that add up to it exactly: tools by the week of an agent's first tool change in the month (the denominator is not split); terms by the week of the host's first read in the month; signed cards and AI preferences by the week of the host's latest read in the month. Parts are published only when every one of them (numerator and denominator) is at least 5; otherwise all of that figure's parts are withheld, so no part under 5 can be worked out by subtraction. A week with no part is left out.",
    "weeks": [
      "2026-W41",
      "2026-W42",
      "2026-W43",
      "2026-W44"
    ],
    "window_utc": [
      "2026-10-05",
      "2026-11-02"
    ]
  },
  "aipref_adoption": {
    "agent_hosts": {
      "aipref_content_usage": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "aipref_training_refused": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "any_signal": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "content_signal": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "content_signal_ai_train_no": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "hosts": null,
      "robots_read": null,
      "rsl_licence": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "tdmrep_file": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "tdmrep_header": {
        "count": null,
        "of": null,
        "suppressed": true
      }
    },
    "meaning": "Hosts whose files or responses carried the signal when GAIP last read them in the month, observed at the stated time. Not an assessment of any site and not legal advice.",
    "methods": "/v1/free/observatory/methods",
    "minimum_cell_size": 5,
    "month": "2026-10",
    "parser_follows": {
      "aipref_attach": "draft-ietf-aipref-attach-05 (19 Aug 2026)",
      "aipref_vocab": "draft-ietf-aipref-vocab-08 (14 Sep 2026)",
      "content_signals": "Content Signals Policy (contentsignals.org)",
      "rsl": "RSL 1.0 (RSL-SPEC-1.0, 10 Dec 2025)",
      "tdmrep": "W3C TDM Reservation Protocol, Final Community Group Report"
    },
    "rows_excluded_known_method_defect": 0,
    "shop_panel_hosts": {
      "aipref_content_usage": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "aipref_training_refused": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "any_signal": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "content_signal": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "content_signal_ai_train_no": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "hosts": null,
      "robots_read": null,
      "rsl_licence": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "tdmrep_file": {
        "count": null,
        "of": null,
        "suppressed": true
      },
      "tdmrep_header": {
        "count": null,
        "of": null,
        "suppressed": true
      }
    },
    "signals": {
      "aipref_content_usage": "IETF AI preferences: a Content-Usage line in robots.txt or a Content-Usage header",
      "aipref_training_refused": "IETF AI preferences: a Content-Usage preference with train in its key set to n",
      "any_signal": "Any of the four",
      "content_signal": "Content Signals: a Content-Signal line in robots.txt",
      "content_signal_ai_train_no": "Content Signals: ai-train=no",
      "rsl_licence": "RSL: a licence link (robots.txt License:, Link header or HTML link)",
      "tdmrep_file": "W3C TDMRep: /.well-known/tdmrep.json published (shop hosts only; agent hosts are not asked)",
      "tdmrep_header": "W3C TDMRep: a TDM-Reservation response header seen"
    },
    "weeks": []
  },
  "automatic_evidence_credit": false,
  "capability_change_log": {
    "earlier_pruned_anchor_sha256": null,
    "entries": 9131,
    "head_sha256": "9cc5c7a61a3989d1eeeee04ad4f89ffd6ae4bbfeffbecd95ab5c780672ef620a",
    "last_sequence": 9131
  },
  "citation": "GAIP Agent Observatory, State of public AI agents, October 2026. https://www.gaipagents.com/state-of-agents?month=2026-10 Capability change-log head SHA-256 9cc5c7a61a3989d1eeeee04ad4f89ffd6ae4bbfeffbecd95ab5c780672ef620a (9131 entries).",
  "corrections": "https://www.gaipagents.com/corrections",
  "declaration_drift": null,
  "declared_derivations": null,
  "delivery_outcomes": {
    "boundary": "Aggregate facts about GAIP's own service, observed by GAIP. No caller, input, handle or third party is named or scored. Not a measure of independent adoption.",
    "by_agent": {
      "integration-protocol": {
        "outcomes": {
          "blocked": {
            "count": 6,
            "of": 20,
            "share": 0.3
          },
          "completed": {
            "count": 14,
            "of": 20,
            "share": 0.7
          },
          "error": {
            "count": 0,
            "of": 20,
            "share": null,
            "suppressed": true
          },
          "needs_input": {
            "count": 0,
            "of": 20,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 20
      },
      "listing-observer": {
        "outcomes": {
          "blocked": {
            "count": 1,
            "of": 1,
            "share": null,
            "suppressed": true
          },
          "completed": {
            "count": 0,
            "of": 1,
            "share": null,
            "suppressed": true
          },
          "error": {
            "count": 0,
            "of": 1,
            "share": null,
            "suppressed": true
          },
          "needs_input": {
            "count": 0,
            "of": 1,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 1
      },
      "procurement-verify": {
        "outcomes": {
          "blocked": {
            "count": 284,
            "of": 285,
            "share": 0.9965
          },
          "completed": {
            "count": 1,
            "of": 285,
            "share": null,
            "suppressed": true
          },
          "error": {
            "count": 0,
            "of": 285,
            "share": null,
            "suppressed": true
          },
          "needs_input": {
            "count": 0,
            "of": 285,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 285
      },
      "trust-assurance": {
        "outcomes": {
          "blocked": {
            "count": 2,
            "of": 11,
            "share": null,
            "suppressed": true
          },
          "completed": {
            "count": 9,
            "of": 11,
            "share": 0.8182
          },
          "error": {
            "count": 0,
            "of": 11,
            "share": null,
            "suppressed": true
          },
          "needs_input": {
            "count": 0,
            "of": 11,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 11
      },
      "unattributed": {
        "outcomes": {
          "blocked": {
            "count": 0,
            "of": 456,
            "share": null,
            "suppressed": true
          },
          "completed": {
            "count": 419,
            "of": 456,
            "share": 0.9189
          },
          "error": {
            "count": 37,
            "of": 456,
            "share": 0.0811
          },
          "needs_input": {
            "count": 0,
            "of": 456,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 456
      },
      "witness": {
        "outcomes": {
          "blocked": {
            "count": 4,
            "of": 17,
            "share": null,
            "suppressed": true
          },
          "completed": {
            "count": 11,
            "of": 17,
            "share": 0.6471
          },
          "error": {
            "count": 2,
            "of": 17,
            "share": null,
            "suppressed": true
          },
          "needs_input": {
            "count": 0,
            "of": 17,
            "share": null,
            "suppressed": true
          }
        },
        "outside_calls": 17
      }
    },
    "definitions": {
      "agent": "The GAIP public agent that answered (front-door and unattributed as in /v1/free/north-star).",
      "cells": "Every cell is a count. A share is shown only when both the count and its total are at least 5.",
      "history": "Rows written before 1 Oct 2026 carry no agent and, on Railway /mcp, no post-call outcome; earlier months may overcount completed calls.",
      "outcomes": "completed, needs_input, blocked and error follow funnel_events.outcome_of_result, the one completion rule GAIP uses everywhere.",
      "outside_call": "Caller class UNKNOWN_CALLER and not declared synthetic; Witness checks also need an outside activity origin. Directories, monitors, marketing agents, GAIP's own clients and test runs are left out. It can still include unidentified automated callers.",
      "source": "GAIP's own records only. Call outcomes: the per-call funnel events GET /v1/free/north-star counts (gaip.traction-event.v2 rows named tool_call:<tool> or tool_outcome:<tool>). Delivery verdicts: Witness delivery checks (service WITNESS_DELIVERY) kept in GAIP's history.",
      "verdicts": "met and not_met are the Witness verdict of a delivery against the terms the caller registered; unknown is an INDETERMINATE verdict. A verdict describes one delivery check, not a party."
    },
    "delivery_verdicts": {
      "met": {
        "count": 0,
        "of": 0,
        "share": null,
        "suppressed": true
      },
      "not_met": {
        "count": 0,
        "of": 0,
        "share": null,
        "suppressed": true
      },
      "unknown": {
        "count": 0,
        "of": 0,
        "share": null,
        "suppressed": true
      }
    },
    "licence": "Aggregate figures are licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): reuse them freely with credit to the GAIP Agent Observatory and the citation shown. Founder decision #13, 1 Oct 2026.",
    "licence_url": "https://creativecommons.org/licenses/by/4.0/",
    "minimum_cell_size": 5,
    "month": "2026-10",
    "outcomes": {
      "blocked": {
        "count": 297,
        "of": 790,
        "share": 0.3759
      },
      "completed": {
        "count": 454,
        "of": 790,
        "share": 0.5747
      },
      "error": {
        "count": 39,
        "of": 790,
        "share": 0.0494
      },
      "needs_input": {
        "count": 0,
        "of": 790,
        "share": null,
        "suppressed": true
      }
    },
    "outside_calls": 790,
    "witness_delivery_checks": 0
  },
  "generated_at_utc": "2026-10-03T23:03:40Z",
  "headline": null,
  "licence": "Aggregate figures are licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): reuse them freely with credit to the GAIP Agent Observatory and the citation shown. Founder decision #13, 1 Oct 2026.",
  "licence_url": "https://creativecommons.org/licenses/by/4.0/",
  "method": "https://www.gaipagents.com/methodology",
  "month": "2026-10",
  "note": "No weekly snapshot of this month is frozen yet; the first covers 2026-W40 (28 Sep - 4 Oct 2026) and is frozen on 5 Oct 2026.",
  "notice": "Aggregate facts observed by GAIP at the stated time (UTC). Not an assessment of any named party. Counts under 5 are not turned into shares.",
  "outcome_ledger": {
    "chain": {
      "head_sha256": null,
      "rows": 0,
      "valid": true
    },
    "configured": true,
    "frozen": false,
    "head_sha256": null,
    "month": "2026-10",
    "note": "This month's row is frozen once the month has ended (from 1 November 2026)."
  },
  "price_gbp": 0,
  "reliability_index": {
    "cells": [
      {
        "agents": 9702,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 9604,
          "of": 9702,
          "share": 0.9899
        },
        "cohort": "all",
        "protocol": "ALL",
        "response_time_ms": {
          "agents": 6078,
          "p50": 224,
          "p95": 1067,
          "successful_handshakes": 10721
        },
        "visits": 17252,
        "visits_reachable": {
          "count": 17118,
          "of": 17252,
          "share": 0.9922
        }
      },
      {
        "agents": 9229,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 9135,
          "of": 9229,
          "share": 0.9898
        },
        "cohort": "all",
        "protocol": "MCP",
        "response_time_ms": {
          "agents": 5608,
          "p50": 232,
          "p95": 1087,
          "successful_handshakes": 9203
        },
        "visits": 15723,
        "visits_reachable": {
          "count": 15596,
          "of": 15723,
          "share": 0.9919
        }
      },
      {
        "agents": 473,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 469,
          "of": 473,
          "share": 0.9915
        },
        "cohort": "all",
        "protocol": "A2A",
        "response_time_ms": {
          "agents": 470,
          "p50": 158,
          "p95": 810,
          "successful_handshakes": 1518
        },
        "visits": 1529,
        "visits_reachable": {
          "count": 1522,
          "of": 1529,
          "share": 0.9954
        }
      },
      {
        "agents": 3528,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 3505,
          "of": 3528,
          "share": 0.9935
        },
        "cohort": "panel",
        "protocol": "ALL",
        "response_time_ms": {
          "agents": 2256,
          "p50": 222,
          "p95": 1087,
          "successful_handshakes": 6894
        },
        "visits": 11073,
        "visits_reachable": {
          "count": 11014,
          "of": 11073,
          "share": 0.9947
        }
      },
      {
        "agents": 3068,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 3049,
          "of": 3068,
          "share": 0.9938
        },
        "cohort": "panel",
        "protocol": "MCP",
        "response_time_ms": {
          "agents": 1799,
          "p50": 235,
          "p95": 1107,
          "successful_handshakes": 5389
        },
        "visits": 9557,
        "visits_reachable": {
          "count": 9505,
          "of": 9557,
          "share": 0.9946
        }
      },
      {
        "agents": 460,
        "agents_reachable_on_95_percent_of_visits": {
          "count": 456,
          "of": 460,
          "share": 0.9913
        },
        "cohort": "panel",
        "protocol": "A2A",
        "response_time_ms": {
          "agents": 457,
          "p50": 158,
          "p95": 810,
          "successful_handshakes": 1505
        },
        "visits": 1516,
        "visits_reachable": {
          "count": 1509,
          "of": 1516,
          "share": 0.9954
        }
      }
    ],
    "citation": "GAIP Agent Reliability Index, the 30 days to 3 October 2026, gaipagents.com/state-of-agents, CC BY 4.0",
    "generated_at_utc": "2026-10-03T22:03:38Z",
    "headline": {
      "agents": 9702,
      "agents_reachable_on_95_percent_of_visits": {
        "count": 9604,
        "of": 9702,
        "share": 0.9899
      },
      "cohort": "all",
      "protocol": "ALL",
      "response_time_ms": {
        "agents": 6078,
        "p50": 224,
        "p95": 1067,
        "successful_handshakes": 10721
      },
      "visits": 17252,
      "visits_reachable": {
        "count": 17118,
        "of": 17252,
        "share": 0.9922
      }
    },
    "licence": "CC BY 4.0",
    "method": "Built on the Observatory's cycle from the stored status observations of public MCP servers and A2A agents. A visit is an observation in which GAIP sent a request (reachable recorded as true or false); observations where GAIP sent nothing (withdrawn, opted out, robots.txt refused, not active in its source) are not visits. Reachable: the host answered with any HTTP status. A successful handshake is a reachable visit with an HTTP 2xx answer (MCP: the initialize answer; A2A: the agent card), with its response time in milliseconds. Per cell: the share of visits reachable; the share of agents with at least one visit that were reachable on at least 95% of their visits; the p50 and p95 response time of successful handshakes (nearest rank). Cells: protocol MCP, A2A or both, for all public agents GAIP watches and for the frozen reference panel AGENTS-COHORT-2026-10. A cell is shown when it has at least 5 agents (response times: 5 agents with a successful handshake) and any count under 5 is withheld. GAIP's own agents, hosts read because an outside caller asked about them, and withdrawn or unpublished agents are left out. A month runs from the Monday of its earliest ISO week to the Monday after its last (as the Agent Web Index) and is frozen once that window ends; the current block covers the last 30 days and is rebuilt hourly. GAIP keeps the newest 60 raw observations of each agent, so an agent visited more often than that in a window counts its newest 60. Facts as observed; not an assessment of any party.",
    "methods_file": "https://www.gaipagents.com/v1/free/observatory/methods",
    "minimum_cell_size": 5,
    "name": "GAIP Agent Reliability Index",
    "notice": "Aggregate facts observed by GAIP at the stated times: how often public agents answered and how fast. Not an assessment of any party; no agent or host is named.",
    "panel": {
      "cohort": "2026-10",
      "id": "AGENTS-COHORT-2026-10"
    },
    "period": {
      "kind": "rolling_30_days",
      "label": "the 30 days to 3 October 2026",
      "rebuilt": "at most hourly",
      "status": "provisional",
      "window_utc": [
        "2026-09-03T22:03:38Z",
        "2026-10-03T22:03:38Z"
      ]
    },
    "schema_version": "gaip.reliability-index.v1",
    "served": {
      "age_seconds": 3602,
      "meaning": "STORED: built by the Observatory runtime at stored_at_utc and served from the database (figures are as of that time). stale is true when the stored copy is older than 5400 seconds (the hourly rebuild plus two Observatory cycles).",
      "source": "STORED",
      "stale": false,
      "stale_after_seconds": 5400,
      "stored_at_utc": "2026-10-03T22:03:38Z"
    },
    "shown_because": "the month's final figures are frozen once it ends; until then the latest 30 days are shown",
    "shown_for_month": "2026-10"
  },
  "schema_version": "gaip.state-of-agents.v1",
  "served": {
    "age_seconds": 1752,
    "meaning": "STORED: built by the Observatory runtime at stored_at_utc and served from the database (figures are as of that time). stale is true when the stored copy is older than 5400 seconds (the hourly rebuild plus two Observatory cycles).",
    "source": "STORED",
    "stale": false,
    "stale_after_seconds": 5400,
    "stored_at_utc": "2026-10-03T23:03:40Z"
  },
  "shop_panel": null,
  "snapshots": "https://www.gaipagents.com/v1/free/ecosystem/snapshots",
  "this_week_so_far": {
    "answered_at_least_once": {
      "count": 9687,
      "of": 12125,
      "share": 0.7989
    },
    "declared_in_package_not_observed_live": 21469,
    "mcp_asked_for_credentials": {
      "count": 2834,
      "of": 11623,
      "share": 0.2438
    },
    "mcp_tools_listed_without_credentials": {
      "count": 6380,
      "of": 11623,
      "share": 0.5489
    },
    "meaning": "The current ISO week so far; it is frozen and hash-chained after the week ends.",
    "new_targets": 12544,
    "protocol_versions_reported": {
      "0.3": 16,
      "0.3.0": 258,
      "1.0": 52,
      "1.0.0": 8,
      "2024-11-05": 309,
      "2025-03-26": 283,
      "2025-06-18": 990,
      "2025-11-25": 3938,
      "2026-07-28": 113,
      "other_categories_under_5_each": 8
    },
    "provisional": true,
    "response_time_ms_median": 224,
    "standards_documents": {
      "a2a_agent_card": {
        "count": 31,
        "of": 195,
        "share": 0.159
      },
      "a2a_agent_card_legacy": {
        "count": 23,
        "of": 195,
        "share": 0.1179
      },
      "agentic_resource_discovery": {
        "count": 3,
        "of": 195,
        "share": null,
        "suppressed": true
      },
      "ai_catalog": {
        "count": 8,
        "of": 195,
        "share": 0.041
      },
      "llms_txt": {
        "count": 63,
        "of": 195,
        "share": 0.3231
      },
      "mcp_server_card": {
        "count": 21,
        "of": 195,
        "share": 0.1077
      },
      "oauth_authorization_server": {
        "count": 51,
        "of": 195,
        "share": 0.2615
      },
      "oauth_protected_resource": {
        "count": 56,
        "of": 195,
        "share": 0.2872
      },
      "openid_configuration": {
        "count": 7,
        "of": 195,
        "share": 0.0359
      },
      "web_bot_auth_directory": {
        "count": 0,
        "of": 195,
        "share": null,
        "suppressed": true
      },
      "x402": {
        "count": 8,
        "of": 195,
        "share": 0.041
      }
    },
    "standards_hosts_probed": 195,
    "targets_by_kind": {
      "A2A_CARD": 510,
      "MCP_REMOTE": 12034
    },
    "targets_observed": 12125,
    "targets_public": 12544,
    "targets_with_a_new_manifest_version": 9765,
    "week": "2026-W40",
    "weekly_coverage_known_public_remote_agents": 12549,
    "weekly_coverage_share": 0.9663,
    "weekly_coverage_target_met": true,
    "weekly_coverage_target_share": 0.95
  },
  "title": "State of public AI agents, October 2026",
  "unique_datasets": null,
  "weeks_frozen": []
}