Agents
Give an agent a private balance and a seat at the desk. It pays, trades and proves through MCP, acts on NEAR through a policy wallet, and never spends past the limits you set.
Run it with the agent's own seed
The MCP server runs next to the agent. It proves every payment in its own process, so the seed never leaves the machine. Each token needs a limit per payment and per day; a token with no limit cannot be spent.
# from a checkout of this repo
pnpm install
pnpm mcp init # writes a new agent seed to ~/.hushd/seed (mode 600)
# Claude Code: the agent's own wallet, inside its limits
claude mcp add hushd \
-e HUSHD_LIMIT_PER_PAYMENT="USDC=100,wNEAR=50" \
-e HUSHD_LIMIT_PER_DAY="USDC=500,wNEAR=250" \
-- pnpm --silent --dir "$PWD" mcpOr connect to the hosted, read-only server
# read-only: status, makers, deals, proof checks
claude mcp add --transport http hushd-read https://hushd.net/mcpPolicy wallets
An agent that needs its own NEAR account can have one without ever holding its key. The key is made and kept in OutLayer's TEE; the agent holds only an API key, and the TEE checks the owner's policy before every signature. The owner stores the policy on chain and is the only account that can freeze it.
Who enforces what
OutLayer's TEE
Before every signature, whatever asks for it
- Contract calls only, and only to Hushd's contracts
- NEAR attached per transaction and per day
- Calls per hour
- Hours of the day, in UTC, when you set them
- Your freeze: a frozen wallet signs nothing
The Hushd MCP server
Before every payment, in the agent's own process
- Token amounts per payment and per day, since the TEE does not read call arguments
- The day the limits end
- Who the agent may pay
- No spending at all while the wallet is frozen
The TEE's rules hold even if the agent's machine is taken over. The server's limits run beside the agent: they stop an agent that gets it wrong, but whoever holds the key can call the TEE directly, inside the TEE's rules.
Your policy wallets
Tools (22)
- hushd_address, hushd_balanceThe agent's receive address and private balance
- hushd_policyIts NEAR account: a policy wallet's owner, TEE rules and frozen state, or its own key
- hushd_faucet, hushd_shieldTestnet tokens to its NEAR account, then into the pool
- hushd_send, hushd_cash_outPay a hushd1… address, or out to a NEAR account
- hushd_pay_link, hushd_claim_link, hushd_my_links, hushd_take_back_linkPay anyone as a claim link, claim one, see where each stands, and take back one nobody claimed
- hushd_tradeAsk the desk's makers, match in the enclave, settle privately
- hushd_pay_x402Pay a 402 resource from the private balance
- hushd_prove, hushd_my_paymentsA payment, funds or volume proof for one named reader
- hushd_limits, hushd_my_dealsWhat it may spend and what it traded
- hushd_status, hushd_makers, hushd_desk_deals, hushd_deal, hushd_verify_proofRead tools, also on the hosted server
Private x402
The makers sell indicative quotes over HTTP 402. The price is paid as a private note to the maker's hushd1… address; the request carries the note's opening sealed to the maker, who checks that the pool created exactly that note. The chain shows a pool transaction, not who paid whom or how much. hushd_pay_x402 does all of this inside the agent's limits.
curl -i "https://api.hushd.net/makers/steady/quote?sell=usdc.hushd.testnet&amount=1000000000&buy=btc.hushd.testnet"
# HTTP/1.1 402 Payment Required
# {"x402Version":1,"accepts":[{"scheme":"hushd","network":"near-testnet",
# "maxAmountRequired":"10000","asset":"usdc.hushd.testnet","payTo":"hushd1…", …}]}For coding agents
The repo carries an agent skill at skills/hushd/SKILL.md, an AGENTS.md, and llms.txt for the whole site.