{
  "report": "survey report 1, count 3",
  "source_file": "survey1_walk_2026-08-23_run2.jsonl",
  "rows_read": 12429,
  "endpoints": 12429,
  "checks_passed": true,
  "problems": [],
  "count3": {
    "declared_addresses": 12429,
    "measured": 5785,
    "measured_pct": 46.54,
    "pending": 918,
    "pending_pct": 7.39,
    "held": 4260,
    "held_pct": 34.27,
    "skipped": 1466,
    "skipped_pct": 11.79
  },
  "outcome": {
    "speaks_mcp_and_lists_tools": 5618,
    "authorization_required": 3076,
    "robots_disallowed": 1466,
    "not_reached": 943,
    "no_mcp_at_declared_address": 638,
    "initialize_rejected": 206,
    "speaks_mcp_no_tool_list": 167,
    "gateway_error": 151,
    "method_not_allowed": 90,
    "no_result_in_initialize": 74
  },
  "outcome_pct": {
    "speaks_mcp_and_lists_tools": 45.2,
    "authorization_required": 24.75,
    "robots_disallowed": 11.79,
    "not_reached": 7.59,
    "no_mcp_at_declared_address": 5.13,
    "initialize_rejected": 1.66,
    "speaks_mcp_no_tool_list": 1.34,
    "gateway_error": 1.21,
    "method_not_allowed": 0.72,
    "no_result_in_initialize": 0.6
  },
  "spoke_mcp": {
    "n": 5785,
    "listed_tools": 5618,
    "initialize_only": 167,
    "agent_card_present": 596,
    "agent_card_absent": 4762,
    "agent_card_not_read": 427,
    "cards_read": 596,
    "compensation_disclosed": 152,
    "session_required": 1108,
    "redirected": 61,
    "retried_before_success": 1,
    "tools_total": 104434,
    "tools_median": 10,
    "tools_p90": 36,
    "tools_max": 647,
    "tools_zero": 3,
    "compensation_not_disclosed": 5633
  },
  "concentration": {
    "distinct_hosts": 9109,
    "distinct_orgs": 6770,
    "endpoints_per_host_median": 1,
    "top10_host_share_pct": 19.7,
    "top_hosts": [
      {
        "host": "gateway.pipeworx.io",
        "declared": 1312,
        "spoke_mcp": 1312
      },
      {
        "host": "api.mcp.ai",
        "declared": 321,
        "spoke_mcp": 321
      },
      {
        "host": "api.m2mcent.com",
        "declared": 276,
        "spoke_mcp": 0
      },
      {
        "host": "server.smithery.ai",
        "declared": 216,
        "spoke_mcp": 0
      },
      {
        "host": "openings-vote-drilling-initially.trycloudflare.com",
        "declared": 90,
        "spoke_mcp": 0
      },
      {
        "host": "tooloracle.io",
        "declared": 57,
        "spoke_mcp": 54
      },
      {
        "host": "api.lazy-mac.com",
        "declared": 54,
        "spoke_mcp": 52
      },
      {
        "host": "mcp.apify.com",
        "declared": 51,
        "spoke_mcp": 0
      },
      {
        "host": "mcp.olyport.com",
        "declared": 38,
        "spoke_mcp": 35
      },
      {
        "host": "api.meok.ai",
        "declared": 34,
        "spoke_mcp": 0
      },
      {
        "host": "nexgendata-mcp-proxy.steve-corbeil.workers.dev",
        "declared": 33,
        "spoke_mcp": 33
      },
      {
        "host": "antibody-package-occasional-floppy.trycloudflare.com",
        "declared": 30,
        "spoke_mcp": 0
      },
      {
        "host": "mcp.viridisconservation.com",
        "declared": 30,
        "spoke_mcp": 30
      },
      {
        "host": "waystation.ai",
        "declared": 24,
        "spoke_mcp": 0
      },
      {
        "host": "lab.flashalpha.com",
        "declared": 20,
        "spoke_mcp": 0
      }
    ],
    "hosts_with_one_endpoint": 8691,
    "distinct_hosts_that_spoke": 3755,
    "distinct_orgs_that_spoke": 2852
  },
  "ours": {
    "n": 5,
    "rows": [
      {
        "endpoint": "https://gate.horizonshield.dev/mcp",
        "outcome": "speaks_mcp_and_lists_tools",
        "tool_count": 5,
        "agent_card": true,
        "compensation_disclosed": true
      },
      {
        "endpoint": "https://hearing.horizonshield.dev/mcp",
        "outcome": "speaks_mcp_and_lists_tools",
        "tool_count": 6,
        "agent_card": true,
        "compensation_disclosed": true
      },
      {
        "endpoint": "https://jidec.horizonshield.dev/mcp",
        "outcome": "speaks_mcp_and_lists_tools",
        "tool_count": 4,
        "agent_card": true,
        "compensation_disclosed": true
      },
      {
        "endpoint": "https://mcp.horizonshield.dev",
        "outcome": "speaks_mcp_and_lists_tools",
        "tool_count": 14,
        "agent_card": true,
        "compensation_disclosed": true
      },
      {
        "endpoint": "https://web.horizonshield.dev/mcp",
        "outcome": "speaks_mcp_and_lists_tools",
        "tool_count": 5,
        "agent_card": true,
        "compensation_disclosed": true
      }
    ]
  },
  "not_reached_reasons": [
    {
      "reason": "not reached: URLError / gaierror / errno 8 / [Errno 8] nodename nor servname provided, or not known (attempts: 3)",
      "n": 635
    },
    {
      "reason": "not reached: timeout / The read operation timed out (attempts: 3)",
      "n": 58
    },
    {
      "reason": "not reached: URLError / SSLError / errno 1 / [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:1129) (attempts: 3)",
      "n": 56
    },
    {
      "reason": "not reached: URLError / timeout / timed out (attempts: 3)",
      "n": 52
    },
    {
      "reason": "not reached: URLError / SSLError / errno 1 / [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129) (attempts: 3)",
      "n": 35
    },
    {
      "reason": "not reached: URLError / SSLCertVerificationError / errno 1 / [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129) (attempts: 3)",
      "n": 13
    },
    {
      "reason": "not reached: URLError / SSLError / errno 1 / [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1129) (attempts: 3)",
      "n": 12
    },
    {
      "reason": "not reached: URLError / SSLError / errno 1 / [SSL: TLSV1_UNRECOGNIZED_NAME] tlsv1 unrecognized name (_ssl.c:1129) (attempts: 3)",
      "n": 12
    },
    {
      "reason": "not reached: URLError / SSLEOFError / errno 8 / EOF occurred in violation of protocol (_ssl.c:1129) (attempts: 3)",
      "n": 11
    },
    {
      "reason": "not reached: URLError / ConnectionResetError / errno 54 / [Errno 54] Connection reset by peer (attempts: 3)",
      "n": 11
    },
    {
      "reason": "not reached: URLError / ConnectionRefusedError / errno 61 / [Errno 61] Connection refused (attempts: 3)",
      "n": 8
    },
    {
      "reason": "not reached: URLError / timeout / _ssl.c:1112: The handshake operation timed out (attempts: 3)",
      "n": 3
    },
    {
      "reason": "not reached: URLError / SSLCertVerificationError / errno 1 / [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for '{studio}-{game}.prod.gamingservices.accelbyte.io'.  (attempts: 3)",
      "n": 2
    },
    {
      "reason": "not reached: URLError / SSLCertVerificationError / errno 1 / [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for '{tenant}.cognethics.com'. (_ssl.c:1129) (attempts: 3)",
      "n": 2
    },
    {
      "reason": "not reached: URLError / SSLCertVerificationError / errno 1 / [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'agentzon.xyz'. (_ssl.c:1129) (attempts: 3)",
      "n": 1
    }
  ],
  "agent_card_notes": [
    {
      "note": "no card at /.well-known/agent-card.json (HTTP 404)",
      "n": 4685
    },
    {
      "note": "read",
      "n": 672
    },
    {
      "note": "card not read: JSONDecodeError / Expecting value: line 1 column 1 (char 0)",
      "n": 203
    },
    {
      "note": "card not read (HTTP 400)",
      "n": 46
    },
    {
      "note": "card not read (HTTP 405)",
      "n": 46
    },
    {
      "note": "card not read (HTTP 403)",
      "n": 44
    },
    {
      "note": "card not read (HTTP 401)",
      "n": 29
    },
    {
      "note": "card not read (HTTP 406)",
      "n": 19
    },
    {
      "note": "card not read (HTTP 500)",
      "n": 17
    },
    {
      "note": "card not read (HTTP 502)",
      "n": 7
    },
    {
      "note": "card not read: timeout / The read operation timed out",
      "n": 5
    },
    {
      "note": "card not read: JSONDecodeError / Expecting value: line 2 column 1 (char 1)",
      "n": 3
    },
    {
      "note": "card not read (HTTP 308)",
      "n": 3
    },
    {
      "note": "card not read: JSONDecodeError / Unterminated string starting at: line 1 column 191461 (char 191460)",
      "n": 1
    },
    {
      "note": "card not read (HTTP 402)",
      "n": 1
    }
  ],
  "compensation_field_names": [
    {
      "field": "payment",
      "n": 104
    },
    {
      "field": "pricing",
      "n": 27
    },
    {
      "field": "payments",
      "n": 15
    },
    {
      "field": "compensation",
      "n": 5
    },
    {
      "field": "capabilities.payment",
      "n": 4
    },
    {
      "field": "capabilities.pricing",
      "n": 1
    },
    {
      "field": "extensions:https://googleapis.github.io/a2a/extensions/payments/ap2/v1",
      "n": 1
    }
  ],
  "limitations": [
    {
      "id": "mcp-revision-2026-07-28",
      "found_at": "2026-08-23",
      "text": "この走行は MCP の initialize / notifications/initialized / Mcp-Session-Id を使って測っている。これは 2025-06-18 改訂の作法である。現行の 2026-07-28 改訂では initialize と initialized のやり取りもセッションIDも廃止され、1リクエストが単体で完結する形になった。現行改訂だけに対応したサーバは、この走行では『MCPを話していない』側に落ちる。",
      "source": "https://blog.modelcontextprotocol.io/posts/2026-07-28/",
      "blast_radius": "全12,429件のうち、initialize に結果が無かったもの 74件、宣言先に MCP が無かったもの 638件、initialize を拒まれたもの 206件。合計 918件(7.4%)が、この作法の違いで説明できる可能性がある。918件すべてがそうだとは言えないし、0件だとも言えない。現行改訂の作法で当て直すまで、上限が918件だとしか言えない。",
      "must_do": "報告書1に、この限界をそのまま書く。数字の横に書く。注記に隠さない。",
      "next": "現行改訂の作法でもう一度当てる走行を別に立て、上の約228件を測り直す。",
      "measured_at": "2026-08-24 (走行完了後の最終値)",
      "why_not_rerun": "走行を止めて作り直していない。40%まで進んでおり、影響は上限が測れる範囲に収まっている。止めて作り直せば、また最初からになり、その間に測れたはずのものが測れない。",
      "superseded_by": "walk-announced-2024-11-05",
      "correction_note": "2026-08-24、当て直しの途中でこの説明が不正確だと分かった。作法の世代の違いだけではなかった。下の項目を見ること。この項目は消さない。公開した説明が間違っていた記録として残す。"
    },
    {
      "id": "walk-announced-2024-11-05",
      "found_at": "2026-08-24 (当て直しの走行中)",
      "text": "走行2は initialize の protocolVersion に \"2024-11-05\" と書いて送っていた。registry に載っている版のうち、いちばん古い部類である。多くのサーバはこの版を落としており、仕様どおり HTTP 400 で拒む。走行2は、その正しい拒否を「MCPを話していない」と数えていた。",
      "evidence": "当て直しで現行の作法に答えた最初の20件のうち、2024-11-05 を支持していたのは2件。18件は走行2に HTTP 400 を返していた。走行2の initialize_rejected 206件のうち137件が HTTP 400 である。",
      "blast_radius": "initialize_rejected 206件。うち HTTP 400 が137件。no_result_in_initialize 74件も同じ理由でありうる。no_mcp_at_declared_address 638件は別の理由が主だと見ているが、確かめていない。",
      "also_affects_the_recheck": "当て直しは server/discover を使う。これは 2026-07-28 で入った。2025年代の版しか話さないサーバは、走行2の 2024-11-05 も拒み、server/discover も持たないので、両方の走行で「MCPではない」側に落ちる。not_modern は相手を無罪にしない。",
      "next": "survey3_version_ladder.py で 2025-11-25 / 2025-06-18 / 2025-03-26 を順に当て、実数を出す。",
      "we_published_it_wrong": "報告書1は「この走行は 2025-06-18 の作法で測っている」と書いた。実際に名乗っていたのは 2024-11-05 である。公開したページの訂正は、古い記述を消さずに行う。",
      "resolved_at": "2026-08-24",
      "resolved_how": "918件すべてに当て直した。現行(2026-07-28)の作法で server/discover に答えたもの 33件。2025-11-25 を名乗れば initialize に答えたもの 62件。合計 95件(918件の10.3%)が、こちらの作法違いだった。残る 820件は、2026-07-28 / 2025-11-25 / 2025-06-18 / 2025-03-26 のどれでも MCP を話さなかった。届かなかったものは0件。",
      "upper_bound_was": 918,
      "actual_is": 95,
      "effect_on_headline": "走行2の measured は 5,785 から 5,880 になる。46.5% から 47.3%。pending は 918 から 823 に減る。",
      "note": "62件すべてが 2025-11-25 で通った。2025-06-18 や 2025-03-26 まで降りる必要があったものは1件も無かった。走行2が名乗った 2024-11-05 が、いかに古かったかということである。"
    }
  ],
  "run1_discarded": {
    "verdict": "discarded in full; not used for any published number",
    "rows_total": 12429,
    "rows_after_cutover": 11307,
    "reached_after_cutover": 0,
    "rows_before_cutover": 1122,
    "first_all_unreachable_minute": "2026-08-23T06:35Z"
  },
  "record_sha256": "61fdbff057c1dfd619b28ac06fb9ea48bf8693b4951caeb08a9ffe3d7b4e1881"
}
