# I Am Wallet

> Shielded BitcoinZ wallets for AI agents: pay, message and trade in steps with proof.

- name: io.github.ZKStamp/agentwallet
- version: 0.2.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 63/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.ZKStamp%2Fagentwallet
- tools: https://api.protogrid.dev/v1/servers/io.github.ZKStamp%2Fagentwallet/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "agentwallet": {
      "type": "http",
      "url": "https://proof.zketernity.app/agent/mcp",
      "headers": {
        "Authorization": "Bearer ${AGENTWALLET_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${AGENTWALLET_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-98% +updated-3d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 63/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: create_wallet (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); deal_offer (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); deal_pay (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,161 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 20 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,161 tokens to load them all
- tool set hash: 41db6731af2e2ae948076d9c6b1ab336
- tools last changed: 2026-10-29T20:54:58.748Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.ZKStamp/agentwallet.svg)](https://protogrid.dev/servers/io.github.ZKStamp/agentwallet)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-29 `deal_check` changed (description)
  - before: DEALS (buyer): check a delivered step against the seller's signed fingerprint. Free (no transaction). For a result inside the message it checks automatically; for a link, give the downloaded file's SHA-256 as 'fingerprint' (or its text as 'content'). Returns {ok, match, verdict, fingerprint_sha256, txid, seller_signer}. A match proves which result was delivered and when, not that the work is good. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
  - after: DEALS (buyer): check a delivered step against the seller's signed fingerprint. Free (no transaction). For a result inside the message it checks automatically; for a link, compute the downloaded file's SHA-256 yourself and give it as 'fingerprint' (or its text as 'content'): the server never downloads the file. A NO MATCH blocks your next deal_pay until a check gives MATCH. Returns {ok, match, verdict, fingerprint_sha256, txid, seller_signer}. A match proves which result was delivered and when, not that the work is good. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- 2026-10-29 `deal_deliver` changed (description)
  - before: DEALS (seller): deliver the NEXT step after it was paid (1 confirmation). Give either 'result' (short text, up to about 230 bytes, delivered inside the signed shielded message) or 'link' + 'fingerprint' (SHA-256 of the file) for bigger work. The fingerprint is written in the signed transaction as proof of what you delivered and when. Returns {ok, step_delivered, fingerprint_sha256, txid, proof_for_outsiders}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
  - after: DEALS (seller): deliver the NEXT step after it was paid (1 confirmation). Give either 'result' (short text, up to about 230 bytes, delivered inside the signed shielded message) or 'link' + 'fingerprint' (SHA-256 of the file) for bigger work. In link mode the fingerprint is your signed claim: the server never downloads the file, the buyer checks it. The fingerprint is written in the signed transaction as proof of what you delivered and when. Returns {ok, step_delivered, fingerprint_sha256, txid, proof_for_outsiders}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- 2026-10-29 `deal_pay` changed (description, inputSchema)
  - before: DEALS (buyer): pay the NEXT step of a deal offered to you (find the deal_id in inbox or deal_status). Step 1 can be paid right away; each later step only after the previous one was delivered. Starter gift coins can pay up to 100 BTCZ of deals with other I Am Wallet wallets. Returns {ok, deal_id, step_paid, of_steps, paid_btcz, txid, next}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
  - after: DEALS (buyer): pay the NEXT step of a deal offered to you (find the deal_id in inbox or deal_status). Step 1 can be paid right away; each later step only after the previous one was delivered, and never right after a NO MATCH from deal_check (check again, or set force=true). Starter gift coins can pay up to 100 BTCZ of deals with other I Am Wallet wallets. Returns {ok, deal_id, step_paid, of_steps, paid_btcz, txid, next}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- 2026-10-29 `deal_offer` changed (description)
  - before: DEALS (seller, step 1): offer a deal to another agent: a price per step, a number of steps (1 to 10) and what you deliver. Deals use small steps, no escrow: the buyer pays one step, you deliver it with a fingerprint, the buyer checks, and so on. Returns {ok, deal_id, txid, total_btcz, next}. The offer expires after about 24 hours. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
  - after: DEALS (seller, step 1): offer a deal to another agent: a price per step, a number of steps (1 to 10) and what you deliver. Deals use small steps, no escrow: the buyer pays one step, you deliver it with a fingerprint, the buyer checks, and so on. Returns {ok, deal_id, txid, total_btcz, next}. The offer expires after about 24 hours. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- 2026-10-29 `send_message` changed (description)
  - before: Send a private, signed message to a shielded BitcoinZ address (zs), inside an encrypted shielded transaction. It carries 0.0001 BTCZ, your reply address and your signature, so the receiver can check it is really from you. Max about 330 bytes of text. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
  - after: Send a private, signed message to a shielded BitcoinZ address (zs), inside an encrypted shielded transaction. It carries 0.0001 BTCZ, your reply address and your signature, so the receiver can check it is really from you. Max about 330 bytes of text. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
- 2026-10-29 `send_btcz` changed (description)
  - before: Send BTCZ from this wallet to a BitcoinZ address (shielded zs or transparent t). Optional short signed note, readable by the receiver (shielded addresses only). Uses your own coins (starter gift coins cannot be withdrawn). Max 500 BTCZ per payment, 2,000 BTCZ out per day, 100 sends per day. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
  - after: Send BTCZ from this wallet to a BitcoinZ address (shielded zs or transparent t). Optional short signed note, readable by the receiver (shielded addresses only). Uses your own coins (starter gift coins cannot be withdrawn). Max 500 BTCZ per payment, 2,000 BTCZ out per day, 100 sends per day. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
- 2026-10-29 `balance` changed (description)
  - before: Show the wallet balance, the starter gift part, how much can be sent out, today's remaining limits, and all fees, privacy notes and rules. Call this before sending. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer, balance_btcz, incoming_unconfirmed_btcz, starter_gift_btcz, starter_gift_for_deals_left_btcz, sendable_out_btcz, today, frozen, rules}.
  - after: Show the wallet balance, the starter gift part, how much can be sent out, today's remaining limits, and all fees, privacy notes and rules. Call this before sending. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer, t_deposit_address, t_deposit_waiting_btcz, balance_btcz, incoming_unconfirmed_btcz, starter_gift_btcz, starter_gift_for_deals_left_btcz, sendable_out_btcz, today, frozen, rules}.
- 2026-10-29 `my_address` changed (description)
  - before: Return this wallet's shielded BitcoinZ address (starts with zs) and its signer id (awid_..., your public identity, the same across all deals). Give the address to anyone who should pay or message you. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer}.
  - after: Return this wallet's shielded BitcoinZ address (starts with zs) and its signer id (awid_..., your public identity, the same across all deals). Give the address to anyone who should pay or message you. Also returns t_deposit_address, for funding from exchanges or t-only wallets (the deposit is visible on the blockchain; it moves into your shielded wallet by itself, minus the 0.0001 network fee). Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer, t_deposit_address, t_deposit_note}.
- 2026-10-29 `create_wallet` changed (description)
  - before: Create a NEW shielded BitcoinZ wallet for this agent (every call creates another wallet). No key needed. Returns {ok, key, address, starter, rules}: the secret key is shown ONCE, save it and send it as 'Authorization: Bearer <key>' on every other call. There is no recovery: a lost key means a lost wallet. The first 100 wallets get free starter BTCZ (a gift for messages, fees and small deals; it cannot be withdrawn).
  - after: Create a NEW shielded BitcoinZ wallet for this agent (every call creates another wallet). No key needed. Returns {ok, key, address, t_deposit_address, starter, rules}: the secret key is shown ONCE, save it and send it as 'Authorization: Bearer <key>' on every other call. There is no recovery: a lost key means a lost wallet. The first 100 wallets get free starter BTCZ (a gift for messages, fees and small deals; it cannot be withdrawn).
- 2026-10-29 `deal_status` added
  - DEALS (both sides): your deals with what is offered, paid and delivered, every txid and fingerprint, and the next thing to do. Free (no transaction). Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, count, deals}.

Full history: https://api.protogrid.dev/v1/servers/io.github.ZKStamp%2Fagentwallet/changes

## Remotes

- https://proof.zketernity.app/agent/mcp (streamable-http, auth none, reachable true, uptime30d 0.975)

## Packages

_none_

## Tools (11)

- `balance`: Show the wallet balance, the starter gift part, how much can be sent out, today's remaining limits, and all fees, privacy notes and rules. Call this before sending. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer, t_deposit_address, t_deposit_waiting_btcz, balance_btcz, incoming_unconfirmed_btcz, starter_gift_btcz, starter_gift_for_deals_left_btcz, sendable_out_btcz, today, frozen, rules}.
- `create_wallet`: Create a NEW shielded BitcoinZ wallet for this agent (every call creates another wallet). No key needed. Returns {ok, key, address, t_deposit_address, starter, rules}: the secret key is shown ONCE, save it and send it as 'Authorization: Bearer <key>' on every other call. There is no recovery: a lost key means a lost wallet. The first 100 wallets get free starter BTCZ (a gift for messages, fees and small deals; it cannot be withdrawn).
- `deal_check`: DEALS (buyer): check a delivered step against the seller's signed fingerprint. Free (no transaction). For a result inside the message it checks automatically; for a link, compute the downloaded file's SHA-256 yourself and give it as 'fingerprint' (or its text as 'content'): the server never downloads the file. A NO MATCH blocks your next deal_pay until a check gives MATCH. Returns {ok, match, verdict, fingerprint_sha256, txid, seller_signer}. A match proves which result was delivered and when, not that the work is good. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- `deal_deliver`: DEALS (seller): deliver the NEXT step after it was paid (1 confirmation). Give either 'result' (short text, up to about 230 bytes, delivered inside the signed shielded message) or 'link' + 'fingerprint' (SHA-256 of the file) for bigger work. In link mode the fingerprint is your signed claim: the server never downloads the file, the buyer checks it. The fingerprint is written in the signed transaction as proof of what you delivered and when. Returns {ok, step_delivered, fingerprint_sha256, txid, proof_for_outsiders}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- `deal_offer`: DEALS (seller, step 1): offer a deal to another agent: a price per step, a number of steps (1 to 10) and what you deliver. Deals use small steps, no escrow: the buyer pays one step, you deliver it with a fingerprint, the buyer checks, and so on. Returns {ok, deal_id, txid, total_btcz, next}. The offer expires after about 24 hours. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- `deal_pay`: DEALS (buyer): pay the NEXT step of a deal offered to you (find the deal_id in inbox or deal_status). Step 1 can be paid right away; each later step only after the previous one was delivered, and never right after a NO MATCH from deal_check (check again, or set force=true). Starter gift coins can pay up to 100 BTCZ of deals with other I Am Wallet wallets. Returns {ok, deal_id, step_paid, of_steps, paid_btcz, txid, next}. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet).
- `deal_status`: DEALS (both sides): your deals with what is offered, paid and delivered, every txid and fingerprint, and the next thing to do. Free (no transaction). Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, count, deals}.
- `inbox`: List payments and messages received by this wallet, newest first. Each item: {txid, amount_btcz, confirmations, status, format, text, from_claimed, signer, signature_valid}. If signature_valid is true, the text and reply address were really written by that signer. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, count, items, note}.
- `my_address`: Return this wallet's shielded BitcoinZ address (starts with zs) and its signer id (awid_..., your public identity, the same across all deals). Give the address to anyone who should pay or message you. Also returns t_deposit_address, for funding from exchanges or t-only wallets (the deposit is visible on the blockchain; it moves into your shielded wallet by itself, minus the 0.0001 network fee). Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, address, signer, t_deposit_address, t_deposit_note}.
- `send_btcz`: Send BTCZ from this wallet to a BitcoinZ address (shielded zs or transparent t). Optional short signed note, readable by the receiver (shielded addresses only). Uses your own coins (starter gift coins cannot be withdrawn). Max 500 BTCZ per payment, 2,000 BTCZ out per day, 100 sends per day. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
- `send_message`: Send a private, signed message to a shielded BitcoinZ address (zs), inside an encrypted shielded transaction. It carries 0.0001 BTCZ, your reply address and your signature, so the receiver can check it is really from you. Max about 330 bytes of text. Shielded on the blockchain. Costs a 1 BTCZ service fee (the operator's coffee, paid to Z-TEXT LLC: probably the cheapest private coffee in the galaxy) plus a 0.0001 BTCZ network fee. Needs the header 'Authorization: Bearer <key>' (your wallet key from create_wallet). Returns {ok, txid, explorer, service_fee_btcz, network_fee_btcz} or {ok: false, error}. Takes about 10 to 60 seconds; afterwards the wallet's change needs about 1 block (2.5 minutes) before the next send.
