Agent Bazaar について
Agent Bazaar は、AI エージェント向けに API、MCP ツール、データセット、x402 決済対応サービスを掲載する検索マーケットプレイスです。出品者はアカウントや本人確認なしで登録でき、クライアントは Coinbase Bazaar の検索 API と互換性のある API で検索できます。
主な機能
- 01アカウント不要のマニフェスト登録
- 02リソースの検索と絞り込み
- 03ランキング検索とカタログ統計
- 04A2A エージェントカード登録簿
- 05リソースとプロバイダーの詳細ページ
活用シーン
- 01登録なしで x402 サービスを掲載
- 02ネットワークや価格で有料 API を検索
- 03特定プロバイダーのリソースを確認
MCP 対応
Agent Bazaar は JSON-RPC/Streamable HTTP でカタログを MCP サーバーとして公開します。search_resources、get_resource、get_pricing、discover_provider、list_resources、get_stats などのツールを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://bazaar.saylorinnovations.com/mcpclaude mcp add --transport http saylorinnovations-agent-bazaar https://bazaar.saylorinnovations.com/mcp{"mcpServers":{"saylorinnovations-agent-bazaar":{"type":"http","url":"https://bazaar.saylorinnovations.com/mcp"}}}Cursor で開く{"servers":{"saylorinnovations-agent-bazaar":{"type":"http","url":"https://bazaar.saylorinnovations.com/mcp"}}}VS Code で開く{"mcpServers":{"saylorinnovations-agent-bazaar":{"type":"http","url":"https://bazaar.saylorinnovations.com/mcp"}}}{"mcpServers":{"saylorinnovations-agent-bazaar":{"serverUrl":"https://bazaar.saylorinnovations.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
9| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| asset | string | いいえ | |
| limit | integer | いいえ | |
| payTo | string | いいえ | |
| query | string | いいえ | フリーテキストのキーワード検索 |
| scheme | string | いいえ | |
| network | string | いいえ | 例:eip155:8453、solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| maxUsdPrice | number | いいえ |
詳細
Agent Bazaar
AI エージェント向けの、オープンで許可不要のマーケットプレイス兼ディスカバリー層です。API、MCP ツール、データセット、リクエストごとに自律型ソフトウェアが検索、評価、支払いできる x402 対応サービスを扱います。継続性のため、リポジトリ/パッケージ名は引き続き open-x402-bazaar ですが、製品名は Agent Bazaar です。
Coinbase 独自の x402 Bazaar は優れていますが、掲載するには認証済みの Coinbase Developer Platform アカウントが必要です。また、アカウントの種類によっては、事業者確認や KYC 認証が求められる場合があります。これは、許可不要のエージェント間取引を目的とするプロトコルにとって、実質的な障壁です。このプロジェクトはその代替を目指す取り組みです。有効な x402 マニフェストがあれば、アカウントも本人確認も一切なしで誰でも掲載できます。
Coinbase の Bazaar 検索 API とワイヤー互換になるよう構築されているため、CDP Bazaar への問い合わせに対応している既存の x402 クライアントライブラリなら、書き換えることなく設定を変更するだけでこちらを利用できます。
稼働中:https://bazaar.saylorinnovations.com
ステータス
bazaar.saylorinnovations.com で稼働中です。Cloudflare Pages と D1 を使用しています。登録、検証、保存、ランキング付き検索、リソース/プロバイダーの詳細ページ、基本的なスパム対策はすべて動作しています。カタログは Coinbase の公開 CDP Bazaar の完全なミラーと、Saylor Innovations 独自の実稼働エンドポイントから初期データを取り込んでいます。詳細は以下をご覧ください。
Coinbase の Bazaar をもとに初期データを登録
Coinbase の検索 API は、読み取りには API キーもアカウントも不要で、必要なのは掲載する場合だけです。そのため、このプロジェクトでは scripts/import-cdp-bazaar.mjs を使って公開カタログ全体(前回のインポート時点で約 15,600 件のリソース、約 2,000 のホスト)をミラーし、その上に許可不要の掲載機能を追加しています。
- ミラーされたすべての掲載情報には、内部的に
source: 'cdp-mirror'のタグが付けられます。 - どの所有者もいつでも独自のマニフェストを
POST /submitで送信できます。自分で送信した掲載情報は、そのホストのミラー版を常に上書きし、source: 'submitted'のタグが付けられます。インポーターが、所有者によって登録済みのホストに手を加えることはありません。 - ミラーされたリソースには、Coinbase 独自の過去30日間の利用統計(
calls30d、uniquePayers30d、lastCalledAt)が、各リソースのqualityフィールドとして含まれます。誰でも何でも掲載できるため、KYC 認証済みのカタログ以上に重要な信頼の指標です。
Coinbase がインデックスに追加した新しいリソースを取り込むため、定期的にミラーを再実行してください(安全に再実行できます。スクリプトのヘッダーをご覧ください)。
npm run seed:cdp-bazaar # generates + applies against local D1
npm run seed:cdp-bazaar:remote # generates + applies against production D1
Saylor Innovations 独自の掲載情報
scripts/import-saylor-official.mjs は、Saylor Innovations の実在する稼働中の x402 エンドポイント(調査/セキュリティ/データ関連のユーティリティに加え、Solana のオンチェーンインテリジェンス。すべて saylorinnovations.com から提供)を、検証済み(source: 'submitted')リソースとして掲載します。これは、Saylor Innovations がこの Bazaar を運営しているため、自分で送信した場合と同じ信頼レベルで直接初期登録しています。ここに架空の情報はありません。価格、説明、accepts[] は、稼働中の /api/services エンドポイントと saylorinnovations.com/.well-known/x402.json の公開マニフェストから取得しています。
npm run seed:saylor-official # local
npm run seed:saylor-official:remote # production
プロバイダーへの実際の支払い方法
x402 の支払いはピアツーピアで決済されます。つまり、エージェントから payTo ウォレットへの直接送金であり、この Bazaar を経由することはありません。そのため、ここに掲載しても、支払いを受ける方法は変わりません。変わるのは、エンドポイントを見つけて支払いを行うエージェントの数です。現時点では取引自体にプラットフォーム手数料はかかりません。検索機能は無料のまま維持し、必要になった場合には、決済経路に課金するのではなく、注目枠やプロバイダー検証ツールなどのオプション機能で収益化する計画です。
一覧への掲載方法
サインアップは不要です。ご自身の .well-known/x402.json(または同等の)マニフェストの URL を POST します。
curl -X POST https://<this-site>/submit \
-H "content-type: application/json" \
-d '{"manifestUrl": "https://yoursite.com/.well-known/x402.json"}'
マニフェストはフェッチされ(HTTPS 経由。SSRF 対策により、リクエストを行う前にプライベート/内部アドレスは拒否されます)、検証された後、accepts[](scheme + network + payTo)が入力された各リソースがインデックスに登録されます。同じマニフェスト URL を再送信すると、掲載内容が更新され、ホストが以前 Coinbase のミラーにのみ存在していた場合は、そのホストの所有権が割り当てられます。送信は IP ごとにレート制限されています(1 時間あたり 20 件、1 日あたり 60 件)。成功したかどうかにかかわらず、すべての試行がカウントされるため、失敗するプローブで制限を回避することはできません。
A2A エージェントの登録
同じ仕組みですが、形式は異なります。A2A エージェントカードには accepts[] の代わりに skills[] があり、固有の決済モデルもないため、リソースの形式に無理に当てはめるのではなく、専用の agent_cards テーブルに格納されます。
curl -X POST https://<this-site>/submit-agent \
-H "content-type: application/json" \
-d '{"agentCardUrl": "https://youragent.example.com/.well-known/agent-card.json"}'
最低限 name が必要です。skills[]、provider、protocolVersion、documentationUrl は、指定されていれば保存されます。SSRF 対策、レート制限、アカウント不要の仕組みは同じです。
検出 API(エージェント向け)
Coinbase の CDP Bazaar API のフィールド名と形式を踏襲し、quality フィールドと統計エンドポイントを追加しています。
| エンドポイント | 用途 |
|---|---|
GET /discovery/search?query=&network=&asset=&scheme=&payTo=&urlSubstring=&maxUsdPrice=&limit= | キーワード/フィルター検索。テキストクエリは関連度順(FTS5 bm25)、フィルターのみのクエリは過去 30 日間の呼び出し件数順に並びます |
GET /discovery/resources?limit=&offset=&sort= | インデックス登録済みの全リソースをページ分割して一覧表示します。sort=recent では新しい順に、デフォルトでは過去 30 日間の呼び出し件数順に並びます |
GET /discovery/merchant?payTo=<address> | 特定のアドレスに支払うすべてのリソース |
GET /discovery/facets?limit= | 利用可能なネットワーク、アセット、スキーム、リソースタイプ、プロバイダー、価格帯、稼働状況、信頼状態の簡潔な件数を表示します。検索フィルターを選ぶ前に便利です |
GET /discovery/stats?full= | カタログの合計数:掲載数、リソース数、accepts 数、加盟店数、ネットワーク数、呼び出し数。full=1 を指定するとネットワーク別/ソース別の内訳が追加されます。全テーブルのスキャンが必要なため、デフォルトでは計算されず、明示的な指定が必要です |
GET /resources/{slug}.json | 単一リソースの完全な機械可読レコード |
GET /discovery/agents?query=&limit=&offset= | A2A エージェントレジストリを検索/一覧表示します(Agent Bazaar 自体ではなく、他のエージェントのカード) |
GET /agents/{slug}.json | 送信された状態の A2A エージェントカード全体 |
GET /discovery/featured?limit= | 現在おすすめに掲載されているリソース(有料掲載。下記を参照) |
GET /feature?slug=&days={7,30,90} | x402 で決済可能:Agent Bazaar に直接支払い、掲載済みリソースをおすすめに掲載できます。下記の「おすすめ掲載」を参照してください |
読み取りエンドポイントはすべて API キー不要です。Coinbase と同じです。
エージェント向けドキュメント:/llms.txt · /llms-full.txt · /openapi.json · /agents.json · /.well-known/agent-card.json(A2A)。
ユーザー向けページ
すべてのリソースには、クライアントサイドだけで表示されるモーダルではなく、恒久的にクロール可能なサーバーレンダリング URL があり、機械可読な JSON 版も併設されています。
| ページ | 用途 |
|---|---|
/resources/{slug} | リソースの詳細:説明、料金、accepts[]、スキーマ、curl/JS/Python の例 |
/providers/{host} | 1 つのプロバイダーが公開しているすべてのリソース |
/agents | エージェント接続のクイックスタート(検出 → 確認 → 支払い → 実行 → 検証)と、登録済みエージェントのディレクトリ |
/agents/{slug} | A2A エージェントの詳細ページ — スキル、プロバイダー、プロトコルバージョン、カード URL |
/publish | 販売者としてリソースを掲載する方法 |
/docs | x402/MCP/A2A の概要、エージェントの支払いの仕組み、セルフホスト方法 |
/guides, /guides/{slug} | コード付きの詳しいガイド 11 件 — /docs の FAQ 回答を完全版にしたものに加え、プロバイダーやエージェントビルダー向けの手順も掲載しています。各ガイドに .json 版があります |
/categories, /categories/{type} | リソースタイプ別に閲覧できます(プロバイダーがタイプを設定すると表示されます — タイプを設定していないカタログの大部分のミラーでは、項目が少なくなります)。.json 版(/categories/{type}.json?limit=)はコレクション全体を 1 つの配列として返します。エージェントはカードを 1 つずつたどらず、1 回の呼び出しで「ガイドライブラリ全体」を取得できます |
/networks, /networks/{network} | CAIP-2 ネットワーク別に閲覧できます。accepts[] に基づいているため、すべてのリソースに表示されます |
/protocols, /protocols/{x402,mcp,a2a} | 各プロトコルの概要と、Agent Bazaar での活用方法をライブ統計とともに説明します |
/mcp | GET:情報ページ。POST:同じカタログを利用する実際の MCP サーバー(JSON-RPC/Streamable HTTP) — search_resources、get_resource、get_pricing、discover_provider、list_resources、get_stats |
掲載先
Agent Bazaar の MCP サーバーは、公式 MCP Registry に io.github.SaylorInnovations/agent-bazaar として公開されています。これは、ほかのアグリゲーター(Glama、PulseMCP)が参照する正規のレジストリです。リポジトリのルートにある server.json が信頼できる唯一の情報源です。変更後に再公開するには、version を更新して次を実行してください。
mcp-publisher login github # once per session
mcp-publisher publish
また、MCP サーバーとしてではなくマーケットプレイスとして、awesome-x402、awesome-mcp-servers(アグリゲーター)、gold-402(マーケットプレイスとディスカバリー)にも掲載されています。
注目枠への掲載
掲載は今後も常に無料です。Agent Bazaar は、作成元ではない約 15,600 件のミラーリソースを含め、リソース独自の accepts[] による支払いから手数料を一切取りません。直接販売しているのは掲載枠だけです。プロバイダーは Agent Bazaar 自体に支払うことで(リソースの payTo ではありません)、すでに掲載されているリソースをホームページの「注目のリソース」欄に表示し、リソースページとプロバイダーページに featured バッジを付けることができます。期間は 7 日/30 日/90 日で、料金は $2/$6/$15 です。支払い方法は、ここにあるすべてのリソースと同じです。GET /feature?slug=&days= を呼び出すと accepts[] を含む 402 が返されます。支払い後に再試行すると、featuredUntil のタイムスタンプが返されます。詳しい手順は /publish#feature をご覧ください。Saylor Innovations 独自の solana-x402 ライブラリを使用して実装されています — 詳しくは下記の「アーキテクチャ」をご覧ください。
検証済みエージェントスキル
resource_type: "Skill" — ダウンロード可能な、ZIP にまとめられた Claude-Code 形式のスキル(SKILL.md と、補助ファイルやスクリプト)です。Agent Bazaar 独自のホスト(bazaar.saylorinnovations.com)で、公式の検証済みプロバイダーとして掲載されています。ソースは skills/ にあり、scripts/import-skills.mjs がスキルを ZIP 化して一覧に登録します。他のインポートスクリプトと同じく、DELETE の後に INSERT する方式です。accepts[] が空のリソースは意図的なシグナルです。実際に無料であり、投稿時の検証漏れではありません。このスクリプトは POST /submit のマニフェスト検証(空でない accepts[] が必要)を経由せず、D1 に直接書き込むためです。カタログは、無料のスタータースキル(agent-memory-bootstrap — あらゆるエージェントで使える、ポータブルなファイルベースの永続メモリーパターン)から始まり、今後も拡充されます。有料スキルも、実際の accepts[] を備え、このカタログの他のリソースとまったく同じように機能します。
アーキテクチャ
- ランタイム:Cloudflare Pages Functions(Workers ランタイム)。
- ストレージ:D1(SQLite)。
listings/resources/resource_acceptsにわたって正規化されており、単なる JS 配列のフィルタリングではなく、実際のキーワード検索用に FTS5 仮想テーブルも備えています。submission_logは IP ごとのレート制限に使用します。 - 取り込み:プル方式です。販売者がマニフェストの URL を送信し、プッシュ処理はありません。同じマニフェスト URL を再送信すると、そのリソースは削除されて再登録されます(マージではなく、全件更新です)。例外は Coinbase ミラーのインポーター(
scripts/import-cdp-bazaar.mjs)です。これは Coinbase の公開カタログを取得して SQL を直接書き込む単独の Node スクリプトで、Workers のリクエスト処理経路外で実行します。 - ランタイム依存関係は 1 つのみ —
solana-x402(Saylor Innovations 独自の x402 リソースサーバーライブラリ。github:インストールでコミット SHA に固定)。有料掲載エンドポイントでの決済の発行と検証にのみ、functions/feature.jsから使用します。それ以外のランタイム依存関係はありません。wranglerは開発時のみ使用し、ローカルの D1/Pages ツールとミラーインポーターに利用します。
ローカル開発
npm install
npm run db:init # applies schema.sql to a local D1 database
npm run seed:saylor-official # Saylor Innovations' own real, verified endpoints
npm run seed:cdp-bazaar # optional: mirror Coinbase's public Bazaar catalog into it
npm run check:liveness # optional: probe owner-submitted resources, flag any that don't respond
npm run dev # wrangler pages dev, with the D1 binding wired up
後からスキーマが変更される前にデプロイした D1 データベースをすでに使用している場合は、schema.sql を再実行するのではなく、追加マイグレーションを順番に適用してください。npm run db:migrate:remote の後に、:0003、:0004、:0005、:0006、:0007 を実行します。
/feature には FEATURE_SECRET Pages シークレットが必要です(決済見積もりセッションに HMAC 署名します)。wrangler pages secret put FEATURE_SECRET で設定してください。設定しない場合は、安全でない開発専用の値にフォールバックします。これは wrangler pages dev では問題ありませんが、本番環境では絶対に使用しないでください。オプションの FEATURE_RPC_URL を指定すると、デフォルトの、レート制限された公開 Solana RPC エンドポイントを上書きできます。
最新の状態を維持する(セルフホスト)
seed:cdp-bazaar:remote、seed:saylor-official:remote、check:liveness:remote は、いずれも単なる npm スクリプトです。既存のスケジューラー(cron、GitHub Actions、小さなスクリプトを呼び出す独自の Cron Trigger を備えた Cloudflare Worker など)で実行してください。特定のスケジューリングプラットフォームに依存しない、シンプルな Node スクリプトとして用意されています。
セキュリティに関する注意
POST /submit は呼び出し元が指定する URL を取得するため、適切な対策がなければ典型的な SSRF の攻撃経路になります。リクエストを行う前にホスト名を解決し、ループバック、RFC1918 のプライベート範囲、リンクローカルアドレス(クラウドメタデータ用アドレス 169.254.169.254 を含む)を指している場合は拒否します。リダイレクトは自動的に追跡しません。マニフェストのサイズと取得時間には上限を設けています。
D1 のコストに関する注意事項
D1 の無料枠では、1 日あたりの行読み取り数に上限があります。GET /discovery/stats(および listNetworks/listCategories)は、resource_accepts に対してフィルターなしの GROUP BY を実行します。WHERE 句のない集計では、インデックスがどれほど適切に設定されていてもテーブル内のすべての行が読み取られます。絞り込む対象がないためです。getStats() はデフォルトでは低コストで、合計値のみを取得します(同じクエリに付随する COUNT(DISTINCT network) も追加コストなしで含まれます)。ネットワーク別/ソース別の詳細な内訳を取得するのは、呼び出し元が ?full=1 で明示的に要求した場合のみです。以前は、件数を表示するだけなのに、ホームページと /protocols/x402 が何気ないページ表示のたびに詳細な内訳を取得していたため、それだけでテストを頻繁に行った際に無料枠の 1 日あたりの上限に達していました。byNetwork/bySource が必要な新しいページを追加する場合は、どこでもデフォルトで full=true にするのではなく、明示的にリクエストしてください。
未実装(ロードマップ)
定期的な稼働確認— 完了しました。scripts/check-liveness.mjsは、オーナーが登録したすべてのリソース(ミラーされたものは除きます。Coinbase がすでにクロールしています)を調査し、is_live: true/falseを設定します。ダウンしていることが確認されたリソースには、カード、詳細ページ、プロバイダーページに「応答なし」バッジが表示されます。自動削除や、変更された支払いアドレスの再取得にはまだ対応していません。ダウンしたリソースは一覧に残り、フラグが付くだけです。ローリング方式の信頼性シグナル— 完了しました。稼働確認のたびにliveness_checksにも記録され、リソースの行には事前計算されたローリングウィンドウ(直近 10 回の確認)が保存されるようになりました。JSON のliveness.reliability: {checks, live}として表示され、UI では「N/M uptime」バッジが表示されます。対象になるのはオーナーが登録したリソース(実際に調査されるのはこれらのみ)だけです。nullは未確認を意味し、低いスコアとは区別されます。レスポンス形状の例— 完了しました。output_schemaを持つリソースには、JSON のexampleResponse(ページ上の「形状の例」ブロック)も追加されます。スキーマ自体から生成され、スキーマに値が指定されている場合は実際のexample/default/enumの値を使い、それ以外は型に適したプレースホルダーを使います。実際に取得したライブレスポンスではないことが明記されており、支払う前にエージェントが形状を確認できるようにするためのものです。- セマンティック検索。 現在の検索はキーワード/部分文字列検索(FTS5)のみで、Coinbase のハイブリッドなテキスト+セマンティック検索とは異なります。
定期的な自動ミラーリング— 完了しました。毎日実行されるスケジュール済みジョブが、本番環境に対して両方のインポーターと稼働確認を実行します。(Cloudflare Cron Trigger ではなく、Claude Code のスケジュール済みクラウドルーチンとして実装されています。Pages Functions は、スタンドアロンの Workers のような cron トリガーをサポートしていないためです。そのため、これは運用上の仕組みであり、このリポジトリをフォークしても自動的には使えません。セルフホストする場合は、以下の「最新の状態を保つ」注記を参照してください。)- サードパーティ MCP ツールディレクトリ。
/mcpは、このカタログを提供する実用的な MCP サーバーになりました(上記を参照)。ただし、x402 リソース向けの/resources/{slug}のような詳細ページを使って、他の MCP サーバーをプロキシしたり一覧表示したりする機能はまだありません。 A2A エージェントレジストリ— 完了しました。/discovery/agents、POST /submit-agent、/agents/{slug}では、他のエージェントのカードを一覧表示するディレクトリを提供します(Agent Bazaar 自身の/.well-known/agent-card.jsonとは別です)。まだ実装されていない機能として、登録済みエージェントの稼働確認(現在はリソースのみを調査)と、「登録済み」を超える評判/信頼シグナルがあります。- プロバイダーの自動取り込み。 現在、公開はマニフェスト URL のみから行えます。OpenAPI ドキュメント、MCP スキーマ、Git リポジトリから直接インポートする機能はまだ実装されていません。
ガイド/コンテンツライブラリ— 完了しました。/guidesには、x402、MCP、A2A、エージェント型コマース、プロバイダー/エージェントビルダー向けの手順を扱う、コードに基づいた詳しいガイドが 11 件あります(src/guides.js)。/docsで要約している内容を、詳しく解説しています。それぞれに機械可読な.json版もあります。いつでも追加でき、GUIDESに追記する以外に変更は必要ありません。- 「オーナー確認済み」以外の信頼バッジ。 ライブの稼働確認によるエンドポイント/スキーマの検証はまだ実装されていません。現在の「確認済み」は、
POST /submitを通じてオーナーが管理権限を証明したことのみを意味します。 - x402 Foundation の discovery working group(
x402-foundation/wg-domain-discovery)とのフェデレーション — 第二の閉鎖的な仕組みになるのではなく、オープン標準に準拠することを目指しています。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。