Kage
Skip to main content

Agent payments,proven in zero-knowledge.

Kage gives AI agents what they need on Stellar: live tools to read wallets, prices and transactions, and a way to pay through a key they can't drain. Each payment settles through a zero-knowledge pool, so the chain never learns who the agent paid.

Groth16PoseidonBN254 pairingMerkle + nullifierverified on-chain

withdraw 3,005 · insert 5,238 constraints · depth-10 tree · Hermez ptau

Kage pool…connecting
Open dashboard

What the chain sees

read live from Stellar

Deposits

…

private payments in

Withdrawals

…

each note spent once

XLM in pool

…

held by the contract

Slots used

…

depth-10 Merkle tree

Latest pool activity (public)
Loading pool activity…
No row names the payer or the payee, and no withdrawal says which deposit it spends.
Groth16 membership proofProve you own a note, not which onePoseidon commitmentsNullifiers stop double-spendBN254 pairing on SorobanNo counterparty on chainPaid to a one-time stealth addressVerified on-chain, not promisedGroth16 membership proofProve you own a note, not which onePoseidon commitmentsNullifiers stop double-spendBN254 pairing on SorobanNo counterparty on chainPaid to a one-time stealth addressVerified on-chain, not promisedGroth16 membership proofProve you own a note, not which onePoseidon commitmentsNullifiers stop double-spendBN254 pairing on SorobanNo counterparty on chainPaid to a one-time stealth addressVerified on-chain, not promisedGroth16 membership proofProve you own a note, not which onePoseidon commitmentsNullifiers stop double-spendBN254 pairing on SorobanNo counterparty on chainPaid to a one-time stealth addressVerified on-chain, not promised

LetanAIagentpayonatransparentchainandyoupublishitseverycounterparty,everyamount,andamapofeverythingyourtreasurytouches.Kagehideswhopaidwhomandboundstheagentsoitcanneverdrainyou,enforcedbymathandthechainratherthanacustodian.

One scan key. Unlimited private payouts.

A payee shares a scan key once; every agent payment lands at a fresh stealth address only they can spend.

Payment

received

Paid to a one-time address. No link back to the agent.

+1,000.00

XLM

What the chain sees

Commitments, random keys, a Merkle root and nullifier hashes. Never an identity.

Ledger view

Agent ↔ payee links

0 visible

CommitmentRoot
Double-spend
RejectedNullifierUsed

ZK is

load-bearing

Remove the pool proof and the whole agent spend graph goes public. The privacy is the proof, not a setting you trust us to keep on.

Real proofs, on-chain

Both circuits prove and verify; the BN254 pairing check passes inside the Soroban contract on mainnet.

Withdraw circuit
3005 constraints
Insert circuit
5238 constraints

The zero-knowledge, at every step of a payment

Stealth notes

Agents pay without ever naming the payee

Note for one payeederived
Recipient scan keyb4800dda…95b12762
Ephemeral key R0bbeaae7…e3446f53announced
Commitment057206e8…2b8466a7on-chain

Only the scan-key holder recomputes the shared secret and finds their payment.

Shielded pool

Deposits and withdrawals no one can link

Kage pool mainnet

Notes in pool

1

Tree depth

10

Merkle root02c0566a…5810ad36on-chain
Commitment057206e8…2b8466a7unlinked
Zero-knowledge withdrawal

Prove you own a note without revealing which

Membership proof verified · BN254
Root02c0566a…5810ad36
Nullifier hash29ac5fdb…06567b77spent
Replay the same nullifierrejected · NullifierUsed
Stealth payout

Funds land at a fresh one-time address

Paid out

1.00 XLM

Stealth address

GABNZK3P…TIN5M72F

Unlinkableno history · no agent link

How it works

Three steps. The agent→payee link never touches the chain. It's broken by a zero-knowledge proof, not by a promise.

View the live contract
  1. Owner delegates a scoped key

    The owner deploys a session account and hands the agent one capped, expiring key that may only pay into the Kage pool. Never the owner's key, never a way to drain or redirect funds. Anything off-policy reverts on-chain.

  2. Agent pays into the pool

    Acting on its own, the agent does ECDH against the payee's scan key, derives a private note, and deposits XLM as a Poseidon commitment in the shielded Merkle pool. The chain sees a commitment, a random ephemeral key and the amount, but not who it is for.

  3. Payee withdraws the funds

    The payee recognises their note, proves in zero-knowledge they own some unspent leaf without revealing which, and is paid at a fresh stealth address. No one links the payout back to the agent.

Agent tools

Give your AI assistant Stellar.

Connect Claude, ChatGPT or Cursor to a Kage MCP server and your assistant can check wallets, read transactions, quote swaps and price tokens on Stellar, live, on mainnet or testnet. 14 abilities, free, no account and no API key.

Stellar Wallets

Lets your AI assistant check any Stellar wallet: balances, recent payments, what it's worth, and whether it can afford a payment.

"What is wallet GCNF…TXX6 worth in dollars?"

"Can wallet GCNF…TXX6 send 5 XLM right now?"

"Summarise the recent activity of wallet GCNF…TXX6."

kageai.me/mcp/stellar-wallets

Stellar Markets

Lets your AI assistant read Stellar's built-in exchange: token prices, swap quotes and token facts.

"Give me a quick update on Stellar right now."

"What is XLM trading at in USDC right now?"

"How much USDC would I get for 100 XLM?"

kageai.me/mcp/stellar-markets

Stellar Network

Lets your AI assistant check transactions, fees and network health, explain a payment, and read the Kage pool.

"Explain transaction 5f3235cc… in plain words."

"Did transaction bd2de9fa… succeed, and what did it do?"

"How much does a Stellar transaction cost right now?"

kageai.me/mcp/stellar-network

Want everything in one connection?

https://kageai.me/mcp/stellar-tools

Try them in the dashboard

Everything converges. Nothing leaks.

What the agent sends
Payments
Settlements
Payouts
How Kage hides it
Stealth notes
ZK pool
Nullifiers
What the payee receives
Stealth address
XLM
Unlinkable
The Kage shielded pool

One pool in. Unlinkable payouts out.

The honest version

Frequently asked questions

Scope, trust assumptions, and why the ZK is the whole point.

Why not just encrypt the payments?

Encryption hides data but trusts whoever holds the key: a server, a custodian, you. Kage makes the agent→payee link unprovable to anyone, enforced by the zk-SNARK and the chain itself. No party holds a secret that could reconstruct who paid whom.