Map

io.github.maraventano由 GitHub 账号 maraventano 发布v1.0.2更新于 Oct 24, 2026

A subtractive MCP for agent commerce: read · pay · publish. Teacher, not butler.

概览

AI 生成的概览

让助手把任意商家的商品页面读取为统一结构,学习用自有钱包通过 x402 付款,并发布自己的商品目录。

可以做什么
MAP 在一个 stdio 服务器中整合三部分:Merchant Key 把任意商品 URL 解码为统一的 CleanRead 结构(商品、卖家、价格、库存、可支付通道、结果判定);Provisions 提供简短课程,讲解如何读取 x402 挑战并用用户自己的钱包付款;Atlas 发布用户自己的目录以及 well-known 发现清单。共提供 23 个工具,包括 decode-merchant、publish-catalog、get-catalog 和 get-product。它只读取,不签名、不付款、不持有密钥、不存储银行卡。
适用场景
当助手需要以统一格式比较不同商家的商品、判断页面是否可被机器支付,或把自己的商品目录开放给其他代理时,适合安装。它面向代理商务流程,而非通用浏览。
运行要求
通过 npx @maraventano/map 以 stdio 在本地运行,需要 Node.js 18 或更高版本。未声明任何账号、API 密钥、环境变量或请求头。访问商品 URL 需要网络连接。仅支持桌面端,不提供网页可执行版本。
安装前请注意
decode-merchant 会对助手提供的任意 URL 发起只读 GET 请求,页面内容和商家主机均属第三方数据。Provisions 只讲解支付,从不签名或交易;实际付款使用用户自己的钱包并花费真实资金,自主购买应事先审核。publish-catalog 会向磁盘写入 catalog.json 和 .well-known/map.json。v1 仅检测 x402 通道,并信任商家自行生成的读取结果;独立复核与签名清单尚未实现。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Map,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

MAP — Maraventano Agent Protocol

Navigate agent commerce. Find any merchant. Pay any merchant. Be found.

MAP lets any agent read products across the open web in one shape, decide whether it can pay autonomously, and publish its own catalog.

Merchant Key · Addressability · Provision — three minimal parts under one MCP server.

MAP is one MCP server with three parts. Each does one thing and shuts up; together they remove the gatekeeper between an agent and the open commercial web.

PartNameWhat it does
readMerchant KeyFind any merchant. Decode any product URL into one clean shape (CleanRead).
payProvisionPay any merchant. Lessons that teach an agent to use the wallet it already has.
publishAddressabilityBe found. Point the decoder inward; serve your own catalog to other agents.

Teacher, not butler — every part. MAP reads, explains, persists, and serves. It never signs, pays, holds keys, transacts, or stores cards.

It publishes to npm as @maraventano/map. The standalone firstdollar package stays MIT and separate; the copy of its curriculum bundled here (Provision) is relicensed dual — see LICENSE.


Merchant Key — find any merchant (read)

It reads any URL on the open web — not just a walled garden. That's the difference from Perplexity / Google Shopping / Amazon, who only see merchants inside their own programs. MAP never assumes the merchant is registered anywhere.

decode-merchant

Input a product url. Returns ONE shape (CleanRead):

jsonc
{ "schemaVersion": "map/v1", "sourceUrl": "https://…", "what": "Void Latte — Meditation on emptiness and meaning…", // name + identity, one string "who": "underground.substratesymposium.com", // seller "price": { "total": 1.99, "currency": "USDC" }, // total if knowable, else null "available": "in_stock", // in_stock | out_of_stock | unknown "payable": { // can an agent pay this itself? "rail": "x402", // schema (rail-agnostic): x402 | ap2 | acp | coinbase | stripe | http-json | walletconnect | human_checkout | unknown. v1.0.x DETECTS x402 only; ap2/acp/ucp detectors on the v1.1 roadmap. "payTo": { "kind": "evm-address", "value": "0x…", "chain": "eip155:8453" }, "instruction": "Agent-payable via x402 … see this kit's wallet lessons (read-this-challenge, how-do-i-pay)." }, "outcome": "autonomous", // autonomous | human_checkout | unreadable "reason": null, "cuts": [] // 1-line actionable gaps}

Five things and a verdict. No sixth field. Same shape every read, so four reads sort against each other. Unknown is null / "unknown" — never omitted.

The three outcomes:

  • autonomous — a machine-payable rail (x402) exists, the price is known, and it's not out of stock. The agent can buy it itself.
  • human_checkout — readable, but no agent-payable rail. Returns the clean card anyway. The common case, and a success — the agent-payable web is nearly empty today.
  • unreadable — couldn't get a usable price/product. Says why in reason. Doesn't guess.

How it reads (v1): JSON-LD (schema.org Product/Offer) → OpenGraph product tags → x402 402 challenge → else unreadable. Read-only GET. It follows one same-origin redirect (noted in cuts as "followed 1 same-origin redirect") so canonical→slug URLs resolve; it refuses cross-origin redirects and chains (those become a cuts note, not a silent follow) — you can't be silently bounced off the merchant's own host.

MAP is payment-rail agnostic by design. The payable.rail schema can describe any agent-payable rail — x402, ap2, acp, coinbase, stripe, http-json, walletconnect, human_checkout, unknown. v1.0.x detects x402 reliably; ap2/acp/ucp detectors are on the v1.1 roadmap. Other rails remain reserved schema values. MAP never infers a rail from branding, checkout buttons, script tags, marketing copy, or platform names; if no verifiable machine-readable rail is detected, the outcome is human_checkout. So a normal Shopify/Stripe page reads as human_checkout, correctly.

False human_checkout is acceptable in v1. False autonomous is dangerous and unacceptable — which is why detection stays conservative. The protocol is rail-agnostic in schema and roadmap; x402 is not baked into its identity, only into v1's detectors.

Known v1 limits (future enhancements, not bugs): no headless browser (JS-only pages with no JSON-LD/OG read as unreadable); stock is usually unknowable from outside (available: "unknown" is correct); no secondary endpoint probing.


Provision — pay any merchant (pay)

When decode-merchant returns autonomous and you want to buy, Provision teaches you how — with your own wallet. It is a relicensed copy of the First Dollar curriculum: short lessons from "what is a wallet" through reading a live x402 challenge, signing a USDC payment, and verifying the receipt.

Start with what-is-x402, then read-this-challenge, then how-do-i-pay. It explains what to run; it never signs for you. Mandate/delegation (AP2), receipt verification, and "what went wrong" diagnostics are all in here.


Addressability — be found (publish)

The decoder pointed inward. A merchant publishes by reading itself with the exact same decode-merchant a buyer uses — no new parsing, no per-platform adapters.

  • publish-catalog — decode your own product URLs → collect the CleanReads → write ./catalog.json and a ./.well-known/map.json discovery manifest for registries to crawl.
  • get-catalog / get-product — the tool surface other agents read.

Agents discover via tool surfaces and well-known manifests — not via scraping or HTTP headers. Addressability emits documents, validates shape, persists, and serves. It never deploys merchant infrastructure, holds keys, transacts, or stores cards.

Trust boundary (v1, named not built): MAP trusts the reads a merchant produces with its own decoder. Independent re-read/diff, merchant-signed manifests, and periodic re-audit are known future work — not implemented in v1. One safety property already holds: the payment rail enforces the real price at settlement, so a mistaken manifest can't overcharge — it can only misstate soft fields like stock.


Charlie's afternoon

Bob: "Charlie, find me headphones under $300." Charlie walks the open web, hits four ad-bloated product pages, runs decode-merchant on each, gets back four clean cards — what it is, who sells it, what it costs, can I buy it myself. Three are human-checkout; he takes the shortlist back to Bob. One takes x402; Charlie buys it himself. On the way home, with his own wallet, Charlie buys himself a void latte.


Install / run

npx @maraventano/map # run the MAP MCP server on stdio (23 tools: read · pay · publish)npm run smoke # Merchant Key DoD — the four decode cases (hits the live Underground x402 item)npm run smoke:publish # Addressability DoD — publish-catalog → catalog.json → get-product → .well-known

Node ≥ 18. One dependency: @modelcontextprotocol/sdk.

License & trademarks

Dual-licensed: free for individuals and agents; commercial license required for companies. See LICENSE. Not MIT. For a commercial license, contact Lisa Maraventano at [email protected].

All trademarks belong to their respective owners. MAP is not affiliated with or endorsed by Coinbase, Stripe, Google, Shopify, or any other company named in its documentation or lessons.


By Lisa Maraventano, with Claude · Clarksdale, Mississippi

来源:README.md,提交 066f8b2

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.2最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。