mcpField
A
Agent Bazaar

Agent Bazaar

远程服务
bazaar.saylorinnovations.comAI 与智能体02 周前更新

关于 Agent Bazaar

Agent Bazaar 是面向 AI Agent 的发现市场,收录 API、MCP 工具、数据集和支持 x402 付费的服务。提供者无需账户或身份验证即可发布,客户端可通过兼容 Coinbase Bazaar 发现接口的 API 搜索目录。

主要功能

  1. 01免账户提交清单
  2. 02搜索和筛选资源
  3. 03排序发现与目录统计
  4. 04A2A Agent 卡片注册表
  5. 05资源与提供者详情页

适用场景

  1. 01无需注册发布 x402 服务
  2. 02按网络或价格查找付费 API
  3. 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/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

9
参数类型必填说明
assetstring否
limitinteger否
payTostring否
querystring否自由文本关键词搜索
schemestring否
networkstring否例如:eip155:8453、solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
maxUsdPricenumber否

详细介绍

Agent Bazaar

由 Saylor Innovations 创建

一个开放、无需许可的 AI Agent 市场和发现层,涵盖 API、MCP 工具、数据集以及可通过 x402 付费的服务,让自主软件能够查找、评估并按请求付费。为保持连续性,仓库/软件包名称仍为 open-x402-bazaar;产品名称是 Agent Bazaar。

Coinbase 自家的 x402 Bazaar 很出色,但要在其中上架,必须拥有经过验证的 Coinbase Developer Platform 账户;某些账户注册路径还可能需要进行企业/KYC 验证。对于一个旨在实现无需许可的 Agent 间商务交易的协议来说,这确实是一道门槛。本项目尝试提供一种替代方案:任何人只要拥有有效的 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 付款通过点对点方式结算——由 Agent 直接向 payTo 钱包付款——绝不经过这个 Bazaar。因此,在这里上架不会改变你如何获得付款,只会改变有多少 Agent 能找到需要付款的端点。目前,交易本身不收取平台费用;我们的计划是保持发现功能免费,并在合适时通过精选推荐位或已验证提供者工具等可选服务盈利,而不是对支付路径收费。

列表收录方式

无需注册。对你自己的 .well-known/x402.json(或等效)清单执行 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 限流(每小时 20 次,每天 60 次)——每次尝试都会计入,而不仅是成功的尝试,因此失败的探测也无法绕过限制。

注册 A2A Agent

采用相同模式,但结构不同——A2A Agent 卡片包含 skills[] 而非 accepts[],且没有固有的支付模式,因此会存储在独立的 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(面向 Agent)

字段名称和结构与 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 注册表(其他 Agent 的卡片,不包括 Agent Bazaar 自身)
GET /agents/{slug}.json按提交内容返回完整 A2A Agent 卡片
GET /discovery/featured?limit=当前精选资源(付费展示,见下文)
GET /feature?slug=&days={7,30,90}可通过 x402 付款:直接向 Agent Bazaar 付款,为已收录资源添加精选展示。见下文“精选展示”

所有读取端点均无需 API 密钥——与 Coinbase 相同。

面向 Agent 的文档:/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}某个提供方发布的所有资源
/agents连接 Agent 的快速入门(发现 → 检查 → 付款 → 执行 → 验证),以及已注册 Agent 目录
/agents/{slug}A2A Agent 详情页——技能、提供方、协议版本、卡片 URL
/publish如何以卖家身份发布资源
/docsx402/MCP/A2A 是什么、Agent 如何付款、自托管
/guides、/guides/{slug}11 篇深入且有代码支撑的指南——/docs 常见问题解答的完整版,以及面向提供方和 Agent 构建者的操作指南。每篇指南都有对应的 .json 版本
/categories、/categories/{type}按资源类型浏览(由提供方设置后显示——目录中被镜像的大部分资源未设置类型,因此此处内容较少)。.json 版本(/categories/{type}.json?limit=)会将整个集合作为一个数组返回——方便 Agent 一次调用获取“整个指南库”,而非逐个浏览卡片
/networks、/networks/{network}按 CAIP-2 网络浏览——每项资源都会显示,因为该信息来自 accepts[]
/protocols、/protocols/{x402,mcp,a2a}介绍各协议及 Agent Bazaar 如何使用它们,并显示实时统计数据
/mcpGET:信息页面。POST:通过同一目录提供真正的 MCP 服务(JSON-RPC/Streamable HTTP),包含 search_resources、get_resource、get_pricing、discover_provider、list_resources、get_stats
收录于

Agent Bazaar 的 MCP 服务已作为 io.github.SaylorInnovations/agent-bazaar 发布到 官方 MCP Registry——这是其他聚合平台(Glama、PulseMCP)拉取数据的权威注册表。仓库根目录下的 server.json 是事实来源;更改后要重新发布,请递增其 version 并运行:

mcp-publisher login github   # once per session
mcp-publisher publish

此外,它还被收录在 awesome-x402、awesome-mcp-servers(聚合平台)和 gold-402(市场与发现)中,但这些收录将其视为市场,而非专门的 MCP 服务。

特色展示位

发布资源始终免费——Agent Bazaar 永远不会从任何资源自身的 accepts[] 付款中抽成,包括它未编写的约 15,600 项镜像资源。它直接出售的只有展示位:提供方可以直接向 Agent Bazaar 付款(而不是支付给资源的 payTo),将已发布的资源放入首页的“特色资源”栏,并在其资源页和提供方页面上标记 featured 徽章,展示时长可选 7/30/90 天($2/$6/$15)。付款方式与这里的其他资源相同——GET /feature?slug=&days= 会返回包含 accepts[] 的 402;付款后重试,即可获得 featuredUntil 时间戳。完整操作步骤请参阅 /publish#feature。此功能使用 Saylor Innovations 自行开发的 solana-x402 库实现——详见下文的架构部分。

已验证的 Agent 技能

resource_type: "Skill" — 可下载、以 zip 打包的 Claude-Code 风格技能(包含 SKILL.md 及其支持文件/脚本),由 Agent Bazaar 自己的主机(bazaar.saylorinnovations.com)列出,并由一方提供商验证。源文件位于 skills/;scripts/import-skills.mjs 会将其打包为 zip 并列出,采用与其他导入脚本相同的先 DELETE 后 INSERT 模式。资源的 accepts[] 为空是有意为之——这表示它确实免费,而不是提交验证的疏漏,因为此脚本直接写入 D1,不经过 POST /submit 的清单验证(该验证要求 accepts[] 非空)。目录从一项免费的入门技能开始(agent-memory-bootstrap——适用于任意 Agent 的可移植、基于文件的持久记忆模式),并会逐步扩充;付费技能在此处的运作方式与其他资源完全相同,具有实际的 accepts[]。

架构

  • 运行时:Cloudflare Pages Functions(Workers 运行时)。
  • 存储:D1(SQLite),采用规范化结构,涉及 listings / resources / resource_accepts,并配有用于真正关键词搜索的 FTS5 虚拟表——而不只是用 JS 数组筛选。submission_log 用于支持按 IP 限流。
  • 数据导入:基于拉取。卖家提交清单 URL;不会推送任何内容。重新提交相同的清单 URL 时,会先删除再重新插入其资源(完整刷新,而非合并)。Coinbase 镜像导入器(scripts/import-cdp-bazaar.mjs)是唯一例外——它是一个独立的 Node 脚本,会获取 Coinbase 的公开目录并直接写入 SQL,在 Workers 请求路径之外运行。
  • 仅有一个运行时依赖——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 需要设置 Pages 密钥 FEATURE_SECRET(用于对其付款报价会话进行 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、运行小型脚本的 Cloudflare Worker 自带的 Cron Trigger 等)。这些脚本有意保持为普通 Node 脚本,不依赖任何特定的调度平台。

安全说明

POST /submit 会获取调用者提供的 URL——如果不加防护,这会构成经典的 SSRF 漏洞。在发起任何请求前,系统会解析主机名;如果它指向回环地址、RFC1918 私有地址范围或链路本地地址空间(包括 169.254.169.254 云元数据地址),就会拒绝该请求。不会自动跟随重定向。清单大小和获取时间均设有上限。

D1 成本说明

D1 免费层对每日行读取量设有限制。GET /discovery/stats(以及 listNetworks/listCategories)会对 resource_accepts 执行不带筛选条件的 GROUP BY——无论索引多完善,没有 WHERE 子句的聚合操作都会读取表中的每一行,因为没有可供裁剪的条件。getStats() 默认开销很低(仅返回总数,其中 COUNT(DISTINCT network) 会搭便车,在同一查询中免费完成);只有调用方通过 ?full=1 明确请求时,才会产生按网络/来源细分的完整统计开销。此前,首页和 /protocols/x402 每次普通页面浏览都会获取完整细分统计,仅仅为了显示一个计数;在密集测试期间,光这一项就足以耗尽免费层的每日限额。如果你新增的页面需要 byNetwork/bySource,请明确请求这些数据,而不是到处默认使用 full=true。

尚未构建(路线图)

  • 定期存活检查 — 已完成。scripts/check-liveness.mjs 会探测每个所有者提交的资源(不包括镜像资源 — Coinbase 已经会抓取这些资源),并将其标记为 is_live: true/false;确认无法访问的资源会在其卡片、详情页和提供者页面上显示“无响应”徽章。目前还不会自动删除资源,也不会重新获取已更改的付款地址 — 无法访问的资源仍会列出,只是会加上标记。
  • 滚动可靠性指标 — 已完成。每次存活检查现在也会写入 liveness_checks,资源行会存储预先计算的滚动窗口(最近 10 次检查)— JSON 中的 liveness.reliability: {checks, live},以及界面上的“N/M 正常运行时间”徽章。此指标仅适用于所有者提交的资源(目前只有这些资源会实际接受探测);null 表示从未检查过,与低分不同。
  • 示例响应结构 — 已完成。任何具有 output_schema 的资源现在也会在其 JSON 中包含 exampleResponse(页面上也会显示“示例结构”区块),根据 schema 本身生成 — schema 提供真实 example/default/enum 值时使用这些值,否则使用适合相应类型的占位值。明确说明这并非捕获的实时响应;目的是让 Agent 在付费前了解响应结构。
  • 语义搜索。 当前搜索仅支持关键词/子字符串搜索(FTS5),不具备 Coinbase 的文本与语义混合搜索能力。
  • 定时自动镜像 — 已完成,通过每日定时任务运行两个导入器,并对生产环境进行存活检查。(通过定时运行的 Claude Code 云端例程实现,而不是 Cloudflare Cron Trigger — Pages Functions 不像独立 Workers 那样支持 cron 触发器 — 因此这是运维层面的功能,不会由此仓库的分叉自动获得;自托管时请参阅下方“保持内容更新”说明。)
  • 第三方 MCP 工具目录。 /mcp 现在已是一个可用的 MCP 服务,基于本目录运行(见上文),但还不能代理或列出其他 MCP 服务,也没有像 /resources/{slug} 为 x402 资源提供的那种独立详情页。
  • A2A Agent 注册目录 — 已完成。/discovery/agents、POST /submit-agent 和 /agents/{slug} 会列出其他 Agent 的卡片目录(与 /.well-known/agent-card.json 分开,后者属于 Agent Bazaar 自身)。其中尚未实现的功能:对已注册 Agent 进行存活检查(目前只探测资源),以及超出“已注册”状态的声誉/信任指标。
  • 自动导入提供者。 目前只能通过 manifest URL 发布;尚未实现直接从 OpenAPI 文档、MCP schema 或 Git 仓库导入。
  • 指南/内容库 — 已完成。/guides 提供 11 篇深入且配有代码的指南(src/guides.js),涵盖 x402、MCP、A2A、Agent 商务,以及面向提供者和 Agent 构建者的操作指南 — 对 /docs 中仅作概述的内容进行了完整详述。每篇指南都有一个机器可读的 .json 副本。随时可以添加更多指南;只需将其追加到 GUIDES,无需更改其他内容。
  • 除“所有者已验证”之外的信任徽章。 尚未实现通过实时运行时间检查来验证端点/schema;目前“已验证”仅表示“所有者通过 POST /submit 证明了控制权。”
  • 与 x402 Foundation 的发现工作组进行联邦协作(x402-foundation/wg-domain-discovery)— 目标是与开放标准保持一致,而不是再造一个封闭花园。

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。