Z Zero Mcp

io.github.Dempty-glitch由 GitHub 帳號 Dempty-glitch 發布v1.10.4更新於 Oct 29, 2026

Payments for AI agents: gasless USDC on Base + JIT single-use virtual cards, PAN never in context.

概覽

AI 產生的概覽

為 AI 助理提供錢包與支付管道:Base 上免手續費的 USDC 支付,以及用於網頁結帳的一次性虛擬卡,且不暴露卡號。

可以做什麼
  • 檢視錢包與卡片:列出虛擬卡別名與餘額、查詢可用美元餘額、取得 Base 上的 USDC 儲值地址、查看或更換 Passport Key
  • 簽發與管理支付權杖:申請金額鎖定的單次虛擬卡,取消未使用的權杖並即時退款
  • 執行結帳:取得商戶專屬結帳流程提示、探測 UCP 草稿結帳、以兩步流程執行付款並選擇繼續或暫停,或執行全自動結帳
  • 風控與紀錄:請求人工核准、以結構化失敗類別回報結帳失敗、驗證簽章收據
適用情境
適合讓助理在只接受信用卡的網站或 Base 上的加密結帳中完成購買,同時把單筆支出限制在指定金額內,並讓卡號不進入模型上下文。也適合需要可驗證的簽章紀錄來證明買了什麼、授權了什麼的情況。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js v18 或更新版本。需要從服務商後台取得以 zk_live_ 開頭的 Passport Key,透過環境變數 Z_ZERO_API_KEY 提供,並在 Base 上持有 USDC 餘額。需要能連線至服務商代管的 API。
安裝前請注意
此伺服器會動用真實資金:相關工具會簽發卡片並執行付款,自動結帳可在沒有進一步提示的情況下完成購買。將加密貨幣送往從網頁讀取的地址無法撤銷,且除非設定 Z_ZERO_ENABLE_WEB3_PAY,否則預設關閉。Passport Key 是消費憑證,首次連線時會被輪換並存放在本機憑證檔案中,在另一台機器使用會使原機器斷線。結帳資訊與失敗回報會傳送給服務商。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Z Zero Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Z-ZERO MCP — Payment Infrastructure for Agentic Commerce (USDC on Base, gasless)

[MCP Badge] [npm] [License: MIT]

AI Agents today can plan, reason, and code — but they are financially blind. They cannot hold money, make payments, or prove their trustworthiness. Every purchase still requires a human to copy-paste a credit card number.

Z-ZERO fixes that. One MCP server gives your agent (Claude, Cursor, any MCP-compatible client) two payment rails — gasless USDC on Base for crypto-native checkouts, and JIT single-use virtual cards for the 99% of the web that only takes cards — while the model never sees a real card number.

bash
npx z-zero-mcp-server

What makes it different:

  • 🔐 Zero-trust by design — the AI never sees PAN, CVV, or expiry. Card data exists only in RAM, injected via Playwright at the last step, then wiped.
  • ⛽ Gasless USDC on Base — auto-detects crypto checkout (EIP-681) and settles as a gasless USDC transfer sponsored by Coinbase Paymaster. The agent holds only USDC — no ETH, no gas UX. Opt-in: off unless you set Z_ZERO_ENABLE_WEB3_PAY=1, because an on-chain send to an address read off a web page cannot be reversed.
  • 💳 JIT single-use virtual cards — amount-locked, 1-hour TTL, burned after a single use. Fiat fallback for the rest of the web.
  • 🧠 Smart Routing + checkout intelligence — get_merchant_hints serves platform-specific checkout playbooks (Shopify, Etsy, WooCommerce…).
  • ✍️ Linked purpose + outcome — the server signs the criteria the agent records at issuance. Before checkout, execute_payment hands those criteria back and requires a second call with go or pause; a confirmed purchase seals the answer into the signed receipt. The record is inspectable without pretending the platform judged whether the agent told the truth.
  • 🔄 Structured failure labels — failed checkouts are labeled with a fixed 14-class failure_class (automatically, not only when an agent remembers to report) and stored as evidence for the merchant knowledge base. Facts are promoted into shared hints only after a later outcome or review verifies them.

Live on Base Mainnet

  • ✅ Proof — real gasless USDC transfer on Base mainnet: 0xdfd1f2f8…5d7a
  • Onboarding is just "deposit USDC" — no seed phrases in the agent, no native gas token, no exchange account.

How It Works

 User            AI Agent              MCP Tools              Z-ZERO API  │                  │                      │                      │  │ "Buy me this     │                      │                      │  │  Shopify item"   │                      │                      │  ├─────────────────▶│                      │                      │  │                  │ read mcp://resources/sop (MANDATORY)        │  │                  ├─────────────────────▶│                      │  │                  │◀── platform rules ───┤                      │  │                  │    + payment SOP     │                      │  │                  │                      │                      │  │                  │ get_merchant_hints("_platform_shopify")     │  │                  ├─────────────────────▶│  GET /checkout-hints │  │                  │                      ├─────────────────────▶│  │                  │◀── pre_steps+notes ──┤◀──── hints data ─────┤  │                  │                      │                      │  │                  │ (fills shipping form, reaches payment page) │  │                  │                      │                      │  │                  │ request_payment_token(amount, cart, criteria)│  │                  ├─────────────────────▶│                      │  │                  │◀── temp_auth token ──┤   (1-hour TTL)       │  │                  │                      │                      │  │                  │ execute_payment(token, checkout_url)        │  │                  ├─────────────────────▶│                      │  │                  │◀── purpose_check ────┤  (nothing charged)   │  │                  │  compare locked criteria with final page    │  │                  │                      │                      │  │                  │ execute_payment(..., recheck: go | pause)   │  │                  ├─────────────────────▶│                      │  │                  │      pause → no card is filled              │  │                  │      go → Playwright fills + submits,       │  │                  │      then burns token if confirmed 🔥       │  │                  │◀──── ✅ success ─────┤                      │  │ "Done! Your item │                      │                      │  │  is ordered."    │                      │                      │  │◀─────────────────┤                      │                      │

The AI agent never touches card data — it only handles single-use tokens. Real card details are injected by Playwright at the last step and wiped from RAM.

Crypto checkout branch: when auto_pay_checkout detects a crypto-native checkout (EIP-681), it skips the card flow entirely and settles as a gasless USDC transfer on Base — see above. Off by default; enable with Z_ZERO_ENABLE_WEB3_PAY=1.


Why Z-ZERO

Z-ZERO is not a checkout bot — it's payment infrastructure for the agentic-commerce era (agentic transactions are projected to reach $1.5T by 2030 — Juniper Research).

Today, the web is built for humans: agents must fill forms and click buttons, and every purchase still needs a human's card. Z-ZERO solves that now — JIT single-use virtual cards + gasless USDC on Base, with card data isolated from the model. Tomorrow, agent payments become a standardized protocol — and what we build along the way is the long-term value:

  • Shared checkout intelligence — every transaction (and every failure) makes the network smarter.
  • An open standard for agent payments — any agent platform plugs in via MCP; any rail (cards, USDC, x402) can be added.
  • KYA — Know Your Agent — verifiable agent reputation. The question isn't "can this agent pay?" but "should you trust it to?"

📖 Full vision & architecture: The Z-Zero Whitebook


Quick Install (Recommended)

bash
npx z-zero-mcp-server

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

json
{  "mcpServers": {    "z-zero": {      "command": "npx",      "args": ["-y", "z-zero-mcp-server@latest"],      "env": {        "Z_ZERO_API_KEY": "zk_live_your_passport_key_here"      }    }  }}

Get your Passport Key at: z-zero.xyz/dashboard/agents


Security: rotate-on-connect (v1.5.0+)

The key you copy from the dashboard (or paste into a chat) is only a one-time bootstrap ticket. The moment your agent connects with it, the MCP server silently swaps it for a fresh key:

  • The fresh key travels server → MCP process → disk and is stored in ~/.z-zero/credentials (mode 0600). It never appears in any LLM conversation, tool result, or config file.
  • The pasted key is dead within seconds — a copy living in a chat transcript, clipboard, or screenshot can no longer be used by anyone.
  • On startup the MCP loads the key from ~/.z-zero/credentials first; the Z_ZERO_API_KEY env var is only a bootstrap fallback.

One key = one machine. All agents on the same machine (Claude Desktop, Claude Code, Cursor, …) share the same MCP install and the same credentials file — install once, every agent can pay. Connecting a different machine with a copied key rotates it, which instantly disconnects the original machine. That is deliberate: it blocks key sharing and doubles as an intrusion alarm — if your agent suddenly fails auth, someone else used your key; go to the dashboard and revoke.

Older self-hosted backends without the rotate endpoint keep working — the pasted key simply stays active as before.


Requirements

  • Node.js v18+ — nodejs.org
  • Passport Key — starts with zk_live_, get it from the dashboard above

Available MCP Tools

Group 1 — Wallet Config (Passive)

ToolDescription
list_cardsList all virtual card aliases and balances
check_balanceCheck spendable USD balance for a card alias
get_deposit_addressesGet your Base deposit address to top up with USDC (stablecoin on Base)
set_api_keyActivate a new Passport Key instantly, no restart needed
show_api_key_statusCheck if a Passport Key is currently loaded (prefix only)

Group 2 — Manual Card Payment (Active)

ToolDescription
request_payment_tokenIssue a JIT single-use virtual-card token for a specific amount (1hr TTL). Pass cart, criteria, and ship_to to create the signed issuance record
execute_paymentTwo calls required: first without recheck returns the locked criteria and charges nothing; second supplies recheck: { page_shows, decision: go|pause }. pause does not fill the card; confirmed go returns a signed receipt
cancel_payment_tokenCancel an unused token and refund to wallet
request_human_approvalPause and request human confirmation before proceeding

Group 3 — Smart Autopilot

ToolDescription
auto_pay_checkoutFully autonomous checkout — issues a JIT card and completes payment (crypto checkout only with Z_ZERO_ENABLE_WEB3_PAY=1)
get_merchant_hintsFetch platform-specific checkout playbook (pre-steps + selectors) from Knowledge Base
report_checkout_failReport a failed checkout with a structured failure_class (14-class enum) — feeds the self-healing loop
verify_receiptVerify a signed receipt by id — prove a purchase happened instead of claiming it

📖 Note: Version checking is handled automatically in each API call. No separate tool needed.


Agent primitives (v1.9.0)

Four linked records and controls an agent can use here that it cannot get from a normal virtual card alone.

1. Signed intent — the card knows what it is for

Pass the cart when you request a token:

jsonc
request_payment_token({  card_alias: "Card_01",  amount: 44.00,  merchant: "etsy.com",  cart: [{ title: "Ceramic mug — matte white", qty: 2, unit_price: 18.50 }],  ship_to: "12 Nguyen Hue, District 1, Ho Chi Minh City, VN",  criteria: {    source: "user_described",    items: [      { key: "item", stated: "two matte-white ceramic mugs" },      { key: "max_total", stated: "no more than $44 delivered" }    ]  }})

Z-ZERO signs that statement (EIP-191) during issuance. It is a tamper-evident record of the criteria the agent supplied as the owner's instruction — not an independent proof that the human personally approved every line. The shipping address is stored as a hash, never raw.

Before you request a token, compare the checkout page with what the user actually asked for — same items, same quantity, same variant, same destination. A mismatch you catch there costs nothing. After the token, it costs a card.

2. Purpose check — read first, then declare go or pause

execute_payment is deliberately a two-call tool:

jsonc
// Call 1 — omit recheck. No browser, PAN, or charge.execute_payment({ token, checkout_url, actual_amount: 44.00 })// → { status: "purpose_check", nothing_charged: true, owner_asked_for: ... }
// Call 2 — describe the final page and make an explicit decision.execute_payment({  token,  checkout_url,  actual_amount: 44.00,  recheck: {    page_shows: "2 matte-white mugs, delivered total $44.00",    decision: "go"  }})

Use decision: "pause" when anything differs. The card is not filled and the token remains active and refundable. On go, the checkout runs; if the merchant confirms the order, the declaration is sealed into the signed receipt with the outcome. The platform records what the agent declared; it does not independently inspect the page or certify that the declaration was true.

3. Signed receipt — prove the purchase, don't claim it

On a confirmed payment you get back:

jsonc
"signed_receipt": {  "receipt_id": "8ea36791-…",  "receipt_hash": "0x…",  "match": { "total": "over", "domain": "ok" },  "diff":  [{ "field": "total", "expected": 44.00, "observed": 46.75 }],  "verify_url": "https://z-zero.xyz/receipt/8ea36791-…"}

diff is the part that matters: it is what the merchant actually did versus what was authorized. Share verify_url with the user — the page is public and anyone can check it. Verification is three checks: the signature is valid, the signer is Z-ZERO, and the fields shown still hash to what was signed (so editing the record afterwards is detectable, including by us).

What a valid receipt does and does not prove. It proves the record is signed by Z-ZERO and unaltered. It does not by itself prove the merchant charged what the receipt says — most fields start life as the agent's reading of a web page. Every receipt therefore carries provenance per field: zzero_issued (the limit we set), issuer_captured (confirmed by the card issuer's capture webhook — settlement evidence), agent_reported (unverified), human_verified. Until the capture webhook lands, this is a signed execution receipt, not settlement proof, and it says so.

4. Structured failure classes — every failure teaches the network

report_checkout_fail takes a fixed enum, not free text:

card_declined_issuer · card_declined_bin_block · avs_mismatch · 3ds_required · bot_detected · form_changed · price_changed · out_of_stock · shipping_unsupported · login_required · timeout · outcome_unconfirmed · intent_mismatch · unknown

Failed runs are also labeled automatically from the browser outcome, so the network learns even when nobody remembers to report. Card numbers are redacted at capture — they never reach a log, screenshot or DOM dump.


REST API Reference

The Z-ZERO backend is hosted at https://z-zero.xyz. All endpoints require a Bearer token using your Passport Key.

⚠️ Use the MCP tools above instead of calling REST directly. If you must call REST, use the exact paths below.

GET /api/tokens/cards

Returns your card list, balance, and deposit addresses.

bash
curl -X GET "https://z-zero.xyz/api/tokens/cards" \  -H "Authorization: Bearer zk_live_your_key"

Aliases (also work):

  • GET /api/v1/cards ← for agents that guess REST-style paths

POST /api/tokens/issue

Issue a JIT payment token.

POST /api/tokens/resolve

Resolve a token to card data (server-side only).

POST /api/tokens/burn

Burn a used token.

POST /api/tokens/cancel

Cancel an unused token (refunds balance).


Troubleshooting

"Z_ZERO_API_KEY is missing"

  1. Go to z-zero.xyz/dashboard/agents
  2. Copy your Passport Key (starts with zk_live_)
  3. Add it to your config as Z_ZERO_API_KEY
  4. Restart Claude Desktop / Cursor

"Invalid API Key" (401)

  • Double-check you copied the full key (e.g. zk_live_c0g3l)
  • Make sure there are no extra spaces or line breaks

"404 Not Found" on /api/v1/cards

  • This is a legacy path alias — it should now work. If not, use /api/tokens/cards directly.

Security: the key you paste is never kept — it rotates the moment your agent first connects, and the fresh key lives only in a local owner-only file (~/.z-zero/credentials, mode 0600), never in any LLM conversation. Card data exists only in volatile RAM during execution.

來源:README.md,提交 e9b4e91

工具

14

list_cards

List Cards

List all available virtual card aliases and their balances. No sensitive data is returned.

無需輸入參數。

check_balance

Check Balance

Check spendable USD balance for a card alias. For active token limits, use list_cards instead.

輸入參數card_alias必填

get_deposit_addresses

Get Deposit Address

Get your Base deposit address to top up your wallet with USDC (or any supported stablecoin on Base).

無需輸入參數。

request_payment_token

Issue JIT Card (spends $0.10 fee)

Request a single-use JIT virtual card ($1–$50) locked to one amount + one store domain. ⚠️ Read mcp://resources/sop first. Only call once the FINAL total is visible — for physical goods that is AFTER shipping is submitted (use get_merchant_hints to navigate there). For digital goods with the price already visible, prefer auto_pay_checkout instead. BEFORE requesting: look at the checkout page one more time and compare it against what the user actually asked for — same items, same quantity, same variant, same destination? If anything differs, do NOT request a token; fix the cart or check with the user first. A mismatch you catch here costs nothing; after this point it costs a card. If you pass `cart`, the server signs your declared intent and binds the card to it — the user gets cryptographic proof of what this card was authorized for. Pass `criteria` too: the few things the owner actually cared about, which this purchase gets scored against at payment time.

輸入參數cartamount必填ship_tocriteriamerchant必填card_alias必填merchant_country

get_merchant_hints

Merchant Checkout Hints

Get merchant navigation flow for a domain or platform key (e.g. '_platform_etsy'). Returns pre_steps (how to navigate checkout) and platform notes. Call BEFORE starting checkout to understand the multi-step flow.

輸入參數domain必填

ucp_probe_checkout

Probe UCP Checkout (creates draft)

UCP discovery + quote — creates an UNPAID draft checkout; no money moves; NOT a payment rail yet. Checks whether a merchant speaks UCP (Shopify-native agent commerce), lists its declared payment handlers, and — when variant_gid or query is given — creates a DRAFT checkout and returns the merchant's real quote: total_minor (wire units, 8900 = $89.00), total_major, currency, status, blockers, continue_url. NO payment happens; drafts expire server-side. Completing a UCP checkout needs Shopify Token-tier agent auth, which Z-Zero does not hold yet — to PAY, hand the buyer continue_url or use the standard execute_payment flow where permitted. Call this first on Shopify stores: their robots.txt bans scripted checkout, so the UCP lane is the sanctioned path.

輸入參數queryship_toquantityshop_url必填buyer_emailvariant_gid

execute_payment

Execute Payment (charges the card)

Execute a payment with a one-time token. TWO CALLS: call it first WITHOUT `recheck` — nothing is charged and it hands you what the owner actually asked for, locked when the card was issued; look at the page again, then call it a second time with `recheck` to pay or to pause. Then Z-Zero opens a headless browser, injects the card (you NEVER see the PAN), clicks Pay, and watches for a REAL confirmation before reporting success. Returns a `status`: `confirmed` (order placed → token burned, receipt_id may hold a real order #), `declined` (merchant rejected → token kept for refund), `unconfirmed` (submitted but no confirmation seen → do NOT retry blindly, verify first), `not_submitted` (no Pay button → supply a submit_selector hint), or `no_fields`. ALWAYS pass actual_amount so overcharges are blocked and underspend refunded.

輸入參數hintstoken必填recheckcheckout_url必填actual_amount

cancel_payment_token

Cancel Token — Safe Refund

Cancel unused token and refund instantly. Use when user cancels the purchase or to free up a card slot.

輸入參數token必填reason必填

request_human_approval

Show Approval Instructions

Pause and ask the user for approval before risky actions (price mismatch, large amount, unusual request).

輸入參數situation必填current_tokenalternative_actionrecommended_action必填

set_api_key

Change Passport Key (switches identity)

Activate a new Passport Key instantly, no restart needed. Only call when user explicitly provides a key.

輸入參數api_key必填

show_api_key_status

Passport Key Status

Check if Passport Key is configured. Shows prefix only, for debugging.

無需輸入參數。

auto_pay_checkout

Auto-Pay Checkout (charges the card)

⚠️ MANDATORY: Read mcp://resources/sop first. Only use on PAYMENT pages where final total is visible. Issues a JIT card and completes the payment (paying a crypto address found on the page is OFF unless the owner set Z_ZERO_ENABLE_WEB3_PAY=1). For physical goods (Shopify, Etsy), get_merchant_hints first.

輸入參數card_alias必填checkout_url必填

report_checkout_fail

Report Checkout Failure

Report a checkout you could not complete. Pick the failure_class that best matches what you saw — this feeds Z-ZERO's self-healing loop (labeled failures become better merchant hints for the next run). If nothing fits, use 'unknown' and describe what happened in error_message.

輸入參數url必填steperror_messagefailure_class必填remediation_tried

verify_receipt

Verify Receipt

Check where an order ENDED UP, and prove it. Returns TWO separate axes: `order_status` — 'completed' (bought, issuer not reported yet) · 'settled' (issuer confirmed) · 'reversed' (auth voided before clearing — the order does NOT stand) · 'partially_refunded' / 'refunded' (merchant returned money AFTER settlement — the order still happened) — and `funds_status` — 'no_payout_due' · 'payout_pending' (money owed back but not yet confirmed on-chain) · 'returned' (confirmed on-chain). Read BOTH before speaking: 'reversed' or 'refunded' with funds 'payout_pending' means the buyer has NOT got the money back yet — never say they have. If you told the user a purchase was done and a later check returns 'reversed', tell them unprompted.

輸入參數receipt_id必填

版本歷史

4
  1. v1.10.4最新Oct 23, 2026
  2. v1.10.3Oct 23, 2026
  3. v1.10.2Sep 30, 2026
  4. v1.10.1Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分