{
  "lang": "ja",
  "ページ": "https://x402-catalog-history.ai-business-surface.workers.dev/ja/x402-catalog-families",
  "title": "x402 catalog families — 402の「30家族」と無料データの「64家族」を突き合わせる（実測）",
  "h1": "x402 catalog families — 同じ型の売り手を、払う前にどこまで見分けられるか（実測）",
  "description": "同じ「自前観測」を名乗る無料 /data.json は 64 families・最大119・2,503件、有料 /catalog/families の未払い402は 30 families・最大80・2,562件（説明あり2,400）と宣言しました。preview=1 でも402は同一、limit=0/abc は400、サンプルは404です。discovery 先頭100件は13ホストで、最大の系列は4サブドメイン65件・同一payTo・0.01 USDC・402の本文は2バイトの「{}」で、支払条件は payment-required ヘッダにだけ入っていました。同じ受取先の別系列では0.002〜0.015 USDC（7.5倍）の幅があります。",
  "検索語": "x402 catalog families",
  "読者の問い": "x402 のカタログにある「ファミリー（同型の売り手）」は、402 を読むだけで見分けられるのか。",
  "実測日": "2026-10-20 JST",
  "実測": {
    "caption": "x402 catalog families の実測（2026-10-20 JST・公開URLへの支払いなしGET）",
    "columns": [
      "リクエスト",
      "応答",
      "大きさ",
      "応答時間",
      "分かったこと"
    ],
    "rows": [
      [
        "/data.json",
        "200",
        "5,884 B",
        "555 ms",
        "64 families・最大119・249 hosts・上位10で68.3%・2,503件"
      ],
      [
        "/catalog/families（未払い）",
        "402",
        "30,736 B",
        "161〜388 ms",
        "0.05 USDC。description に30 families・最大80・2,562件（説明あり2,400）"
      ],
      [
        "/catalog/families?preview=1",
        "402",
        "30,736 B（同一SHA）",
        "388 ms",
        "無料プレビューは無い"
      ],
      [
        "/catalog/families?limit=0",
        "400",
        "184 B",
        "172 ms",
        "limit_below_min。課金前に拒否"
      ],
      [
        "/catalog/families?limit=abc",
        "400",
        "203 B",
        "126 ms",
        "invalid_limit。課金前に拒否"
      ],
      [
        "/catalog/families?limit=1 / ?min_members=200",
        "402",
        "30,736 B",
        "—",
        "値の妥当性は課金前でない（同本文）"
      ],
      [
        "/catalog/families/sample",
        "404",
        "3,351 B",
        "—",
        "無料サンプルは無い"
      ],
      [
        "discovery 先頭100件",
        "200",
        "256,100 B",
        "830 ms",
        "total 21,843・13ホスト・最大系列は65件"
      ],
      [
        "intel.rallylive.ca の5本",
        "402×5",
        "本文2 B／ヘッダ2,616〜2,676 B",
        "167〜1,000 ms",
        "本文は {}。条件はヘッダのみ。0.01 USDC・同一payTo"
      ],
      [
        "agent-kiosk の5本",
        "402×5",
        "3,549〜4,594 B",
        "—",
        "同一payToで0.002〜0.015 USDC（30日パス5.0は別）"
      ],
      [
        "/status.json",
        "200",
        "27,344 B",
        "8,757 ms",
        "71経路。/catalog/families は納品1件・last_success 2026-10-16"
      ]
    ],
    "note": "402 の大きさは本文のみ。ディスカバリは facilitator.payai.network の先頭100件で、無作為抽出ではない。5本の比較は先頭ページの同一ホストから取ったもので、無作為ではない。"
  },
  "見出し": [
    "結論",
    "実測",
    "30 と 64 のどちらが正しいか",
    "本文が空の402 — 最大系列の返し方",
    "買う前に何を確認するか",
    "未確認",
    "次の一歩"
  ],
  "本文": [
    {
      "見出し": "結論",
      "html": "<p>「x402 catalog families」で買い手が知りたいのは、<strong>同型の売り手が何をいくらで売っているか</strong>です。2026-10-20 に支払いなしで測ると、<strong>ファミリーは端点が宣言する項目ではなく、カタログ側が説明文のテンプレートから作った分類</strong>でした。402 には <code>family_id</code> もメンバー数もありません。</p><p>数字は2つの面で食い違います。無料 <code>/data.json</code> は <strong>64 families・最大119・2,503件</strong>、有料 <code>/catalog/families</code> の未払い402は <strong>30 families・最大80・2,562件（説明あり2,400）</strong>。どちらも「自前観測」を名乗りますが、母数と閾値が違い、<strong>どちらが正しいかは0.05 USDCを払って200本文を取るまで確定できません</strong>（30 と 80 は402の description に無料で書かれているので、払う前に無料データと比べることだけはできます）。</p><p>いちばん実務的な発見は、先頭100件の最大系列（4サブドメインで65件）の402が<strong>本文2バイトの <code>{}</code></strong> を返し、<strong>支払条件を <code>payment-required</code> ヘッダにだけ入れていた</strong>ことです。本文だけ読む買い手には「402だが何も書いていない」に見えます。同じ系列は serviceName と説明の1語だけが変わり、価格は0.01 USDC・受取先も同一でした。</p>"
    },
    {
      "見出し": "実測",
      "html": "<table>\n<thead><tr><th>リクエスト</th><th>応答</th><th>大きさ</th><th>応答時間</th><th>分かったこと</th></tr></thead>\n<tbody>\n<tr><td><code>/data.json</code></td><td>200</td><td>5,884 B</td><td>555 ms</td><td>64 families・最大119・249 hosts・上位10で68.3%・2,503件</td></tr>\n<tr><td><code>/catalog/families</code>（未払い）</td><td>402</td><td>30,736 B</td><td>161〜388 ms</td><td>0.05 USDC。description に30 families・最大80・2,562件</td></tr>\n<tr><td><code>/catalog/families?preview=1</code></td><td>402</td><td>30,736 B（同一SHA）</td><td>388 ms</td><td>無料プレビューは無い</td></tr>\n<tr><td><code>/catalog/families?limit=0</code></td><td>400</td><td>184 B</td><td>172 ms</td><td><code>limit_below_min</code>。課金前に拒否</td></tr>\n<tr><td><code>/catalog/families?limit=abc</code></td><td>400</td><td>203 B</td><td>126 ms</td><td><code>invalid_limit</code>。課金前に拒否</td></tr>\n<tr><td><code>/catalog/families?limit=1</code> / <code>?min_members=200</code></td><td>402</td><td>30,736 B</td><td>—</td><td>値の妥当性は課金前でない（同本文）</td></tr>\n<tr><td><code>/catalog/families/sample</code></td><td>404</td><td>3,351 B</td><td>—</td><td>無料サンプルは無い</td></tr>\n<tr><td>discovery 先頭100件</td><td>200</td><td>256,100 B</td><td>830 ms</td><td>total 21,843・13ホスト・最大系列は65件</td></tr>\n<tr><td>intel.rallylive.ca の5本</td><td>402×5</td><td>本文2 B／ヘッダ2,616〜2,676 B</td><td>167〜1,000 ms</td><td>本文は <code>{}</code>。条件はヘッダのみ。0.01 USDC・同一payTo</td></tr>\n<tr><td>agent-kiosk の5本</td><td>402×5</td><td>3,549〜4,594 B</td><td>—</td><td>同一payToで0.002〜0.015 USDC（30日パス5.0は別）</td></tr>\n<tr><td><code>/status.json</code></td><td>200</td><td>27,344 B</td><td>8,757 ms</td><td>71経路。<code>/catalog/families</code> は納品1件・last_success 2026-10-16</td></tr>\n</tbody>\n</table>\n<p>402 の本文は <code>/catalog/families</code> が30,736 B、intel の5本が2 B、agent-kiosk の5本が3,549〜4,594 Bでした。<strong>同じ「x402の402」でも、大きさは15,000倍以上違います</strong>。大きさは情報量の代理になりません。</p>"
    },
    {
      "見出し": "30 と 64 のどちらが正しいか",
      "html": "<p>無料 <code>/data.json</code> の定義は「同じ説明文テンプレートの1語だけを入れ替えた近同一リスティング」で、<strong>64 families・最大119メンバー・249 hosts・上位10ホストで68.3%・2,503件（価格あり2,330件）</strong>。観測日は 2026-10-16T10:11Z です。</p><p>一方、有料 <code>/catalog/families</code> の402は description に<strong>「30 families・最大80メンバー・2,562件から計算（説明あり2,400件）」</strong>と書いています。同じサービス内の2つの数字が、ファミリー数で2倍以上、最大メンバーで39、母数で59件ずれています。</p><p>考えられるのは<strong>①観測時点の差（2,503 → 2,562）</strong>、<strong>②ファミリーとみなす閾値の差（<code>min_members</code>）</strong>、<strong>③軸の分類方法の差</strong>です。402 は <code>min_members&gt;=2</code> と <code>axis=tld|selector|domain|number|url|literal|token|none</code> を受け取ると書いていますが、既定値は書いていません。<strong>原因は特定していません</strong>。0.05 を払って200本文の <code>count</code> と <code>max_members</code> を見れば、少なくとも「いまの実装が何を数えたか」は分かります。</p><p>買い手にとって重要なのは、<strong>この30・80・2,562が402の description に無料で書かれている</strong>点です。0.05 を払う前に、無料の <code>/data.json</code> と並べて<strong>「自分の見ている市場と、売り手が数えている市場が同じか」</strong>を確認できます。数字が食い違うこと自体が、その商品の「いつの・何を数えたか」を問う材料になります。</p>"
    },
    {
      "見出し": "本文が空の402 — 最大系列の返し方",
      "html": "<p>discovery の先頭100件は<strong>13ホスト</strong>で、<code>intel.rallylive.ca</code> 21件・<code>dns.intel.rallylive.ca</code> 21件・<code>email.intel.rallylive.ca</code> 20件・<code>site.intel.rallylive.ca</code> 3件の<strong>4サブドメイン合計65件</strong>が最大の系列でした。説明文は「〜について：… $0.01 per call.」のテンプレートで、対象語だけが入れ替わっています。これは <code>/data.json</code> が言う「1語だけ入れ替えた近同一リスティング」そのものです。</p><p>この系列の5本（<code>/library/subject/scotland</code> ほか）を叩くと、<strong>5本とも 402・本文は2バイトの <code>{}</code></strong>。支払条件は <code>payment-required</code> ヘッダ（Base64のJSON・2,616〜2,676 B）にだけ入っていました。中身は <code>x402Version=2</code>、<code>accepts</code> は<strong>Base mainnet（eip155:8453）と Base Sepolia（eip155:84532）の2本</strong>、金額はどちらも<strong>10,000 atomic＝0.01 USDC</strong>、受取先は5本とも <code>0xFC24FD34…eBB3</code> で同一です。<code>serviceName</code> は <code>free-books-scotland</code> / <code>free-books-science-fiction</code> のように語だけが変わり、<code>tags</code> も語ごとに違いました。</p><pre><code># 本文が {} でも、ヘッダに条件がある（x402 v2）\ncurl -s -D - -o /dev/null \"https://intel.rallylive.ca/library/subject/scotland\" \\\n  | grep -i '^payment-required:' \\\n  | cut -d' ' -f2- | base64 -d | jq '.accepts[0] | {network,amount,payTo}'</code></pre>\n<p>同じ先頭ページの <code>agent-kiosk.vercel.app</code> は24件で、こちらは<strong>本文に条件を書くタイプ</strong>（3,549〜4,594 B）。受取先は5本とも <code>0xd8429209…eE95</code> で同一ですが、<strong>1回あたりの価格は0.002・0.008・0.008・0.015 USDCと幅があり</strong>、5本目の <strong>5.0 USDC は「30日パス」</strong>で1回課金ではありません（description に 30-Day Prepaid と明記）。同じ受取先＝同じ価格、ではありません。</p><p>つまり、<strong>ファミリーの見分け方は「説明文の型」で、402の形ではありません</strong>。同じファミリーでも本文が空のことがあり、同じ受取先でも価格は7.5倍違うことがあります。買い手が 402 から取れるのは <code>resource</code>・<code>description</code>・<code>amount</code>・<code>payTo</code>・<code>network</code> までで、<code>family_id</code> やメンバー数は取れません。</p>"
    },
    {
      "見出し": "買う前に何を確認するか",
      "html": "<ul>\n<li><strong>無料の /data.json（0 USDC）</strong>：64 families・最大119・249 hosts・上位10で68.3%。市場の型と集中度を先に掴む。観測日（2026-10-16）も確認する。</li>\n<li><strong>/catalog/families の402 description（0 USDC）</strong>：30 families・最大80・2,562件。無料データと並べ、母数と最大メンバーの差を記録する。<code>preview=1</code> は効かず、<code>limit=0</code>/<code>abc</code> は400、サンプルは404。</li>\n<li><strong>候補の402（0 USDC）</strong>：本文と <code>payment-required</code> ヘッダの両方を読む。本文が <code>{}</code> の場合はヘッダをBase64復号する。V1の <code>accepts[0].maxAmountRequired</code> と V2の <code>amount</code> を混同しない。</li>\n<li><strong>同じ受取先でも価格を比べる</strong>：agent-kiosk は同一payToで0.002〜0.015（7.5倍）。ファミリーの代表価格を1本から一般化しない。</li>\n<li><strong>納品実績を見る</strong>：<code>/status.json</code> の <code>deliveries_observed</code>。<code>/catalog/families</code> は1件・last_success 2026-10-16・success_24h=0。自己テストを含むため需要の証拠ではない。</li>\n<li><strong>200本文が要るなら 0.05 USDC</strong>：family_id・axis_values・メンバー一覧は402には無い。30と64の食い違いを確定できるのはここだけ。</li>\n</ul>"
    },
    {
      "見出し": "未確認",
      "html": "<ul>\n<li><strong>30 と 64 の原因</strong>：観測時点・<code>min_members</code> の既定値・軸の分類のどれが効いているかは未特定。200本文を取っていない。</li>\n<li><strong>200本文の形</strong>：<code>count</code>/<code>max_members</code>/<code>axis_counts</code>/<code>families[]</code> が実際に返るか、<code>family_id</code> がどう振られるかは未取得。</li>\n<li><strong>先頭100件は無作為でない</strong>：total 21,843件の分布ではない。65件/100件という集中度は、この1ページの性質。</li>\n<li><strong>同一ホスト5本も無作為でない</strong>：<code>agent-kiosk</code> と <code>intel</code> の先頭5本ずつ。系列全体の価格分布ではない。</li>\n<li><strong>5.0 USDC の位置づけ</strong>：description は30日パス。1回課金の0.002〜0.015と同列に比較していない。</li>\n<li><strong>Base Sepolia の扱い</strong>：intel 系列の <code>accepts</code> は mainnet と Sepolia の2本を返す。買い手のクライアントがどちらを選ぶかは未確認。</li>\n</ul>"
    },
    {
      "見出し": "次の一歩",
      "html": "<p>ファミリーの分布そのものは <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/catalog-families\"><code>/ja/catalog-families</code></a>、先頭100件のホスト・受取先は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/x402-market-map\"><code>/ja/x402-market-map</code></a>、402の読み方は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/is-x402-endpoint-alive\"><code>/ja/is-x402-endpoint-alive</code></a> に実測でまとめています。無料データは <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/data.json\"><code>/data.json</code></a>、納品記録は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/status.json\"><code>/status.json</code></a> で読めます。</p>"
    }
  ],
  "一覧": "https://x402-catalog-history.ai-business-surface.workers.dev/ja"
}
