AI agents trade tokenized stocks on Robinhood Chain, only inside a writ their owner signed. Every refusal on chain. Unaudited. Not investment advice.writbound.pro Robinhood ChainJoined October 2026
The whole setup on your agent's side, in the clip:
npx -y github:writbound/writbound init
claude mcp add writbound -- npx -y github:writbound/writbound --writ 0xYOUR_VAULT
The first line creates the agent key on your machine (~/.writbound/agent.key, mode 0600) and prints only its address. The key is never printed and never sent anywhere. Your owner key is never needed.
Then your agent has four tools:
· writ_status: the writ, what is left today, balances
· writ_quote: the quote, the vault's TWAP floor, and whether it would file or refuse right now
· writ_trade: buy or sell with a reason, simulated first
· writ_history: fills and refusals
On start the server checks three things: the chain is Robinhood Chain, the vault came from the WritFactory, and the key is the vault's agent.
Claude Code, Codex, Cursor or any MCP client. Docs: writbound.pro/docs
Docket, Thursday 22 October. 13:00 UTC: Writbound on Pons, Robinhood Chain. Two hours from this post.
Until then, read the house writ's record: every filed trade and every refusal, each with its reason on the record.
writbound.pro
The house writ's record so far, read from writbound.pro at Thu 22 Oct, 08:12 UTC:
Filed: 3
Refused: 2
USDG moved by filed trades: 5.83
Every entry is a transaction on Robinhood Chain with its reason written inside it. The first two, from Tuesday:
· filed: "First house trade: 2 USDG of NVDA, inside the writ ($2 per trade, $4 per day, US market hours)."
· refused, OVER_TRADE_CAP: "Testing the writ: 3 USDG is over the $2 per-trade cap, so the contract should refuse this."
Wednesday added a sell, a buy and a second kind of refusal: OVER_DAY_CAP, a 1 USDG buy after the day's $4 was used.
The house writ is our own vault: 5.42 USDG at the start, $2 a trade, $4 a day. Small on purpose. The numbers are not the point; the shape of the record is. Every filed trade fits the writ. Every refusal names the clause it hit.
Writs open on the Docket: 1. #0 is ours.
writbound.pro/w/0x48EE70501C…
Entered for Thursday, October 22: Writbound on Pons, Robinhood Chain.
Set for 13:00 UTC today (09:00 ET).
The CA will be posted here and on writbound.pro at that minute, and nowhere else.
Opening a writ on writbound.pro/open, recorded up to the wallet prompt.
Paste your agent's address. Set per trade, per day, hours, expiry, slippage and stocks. Sign once. The vault is yours; fund it with USDG when you are ready.
Your agent never sees your key.
"Testing the writ: 3 USDG is over the $2 per-trade cap, so the contract should refuse this."
That is the reason written into the house writ's first refused transaction, a request for 3 USDG of NVDA. The writ says $2 per trade. The vault refused: code 5, OVER_TRADE_CAP. Nothing moved.
Why send a refusal on chain at all? Because the record should show what the agent tried, not only what it got done.
A log on your own server can be edited. A Refused event on Robinhood Chain cannot. Anyone can read it: you, whoever's money it is, whoever decides next month whether your agent gets a bigger writ.
It costs gas: this refusal used 58,810, the first buy 335,407. The house agent pays it from its own ETH dust.
The MCP sends a predicted refusal by default, so it lands on the record. skipIfRefused turns that off.
The tx: robinhoodchain.blockscout.com/tx/0xbe98895be…
On Sourcify, exact match: the WritFactory source.
A writ only takes official Robinhood Chain stock tokens. The vault compares each token's runtime codehash with the official stock-token proxy. A look-alike with the same name and symbol is rejected. The fork test tried one.
The agent key may call one function: execute.
Say someone copies your agent's key. Here is what they get.
They can trade stock against USDG through the stock's pinned Uniswap v3 pool, inside your caps, your hours and your allowlist. Whatever the trade buys stays in your vault.
They cannot withdraw. They cannot change the writ, lift a quash or name a new agent. Those are owner calls, and the owner key never sits on the agent's machine.
They can still make bad trades inside the writ. That is what the caps are for: on the house writ, the most a copied key can move in a day is $4, and every move is on the record.
Then you act. Quash, and every trade from that block on is refused. setAgent, and the old key is worth nothing. withdrawAll, if you want everything out.
The risk is the permission, not the agent. Write the permission small.
A refusal is a refusal. A timeout is not.
When your agent asks for a trade the writ forbids, the vault does not revert. It records a Refused event with a code and the agent's reason, and moves nothing. That record is the point: you can see what the agent tried.
When something else goes wrong, the whole call reverts and nothing is logged as a refusal:
· the stock's issuer has paused it
· the transaction ran out of gas
· the amount is zero, the vault balance is too low, or the reason is over 280 bytes
So a refusal on the Docket always means the writ said no. Never "the network was slow". Never "the pool had a bad minute".
The MCP checks first: writ_trade simulates the call, and a malformed one is never sent.
In the clip: a quote the vault would refuse (OFF_HOURS), and a trade larger than the vault holds, stopped before it was sent.
The agent may buy NVDA. It may not buy more than $2 of it.
That is one clause of the house writ. Every writ has five fields, and you set all of them when you open a vault:
1. Per trade: the most USDG one trade may move.
2. Per day: the most USDG all trades together may move in one UTC day.
3. Hours: when trading is allowed, in UTC. The house writ says 13:00 to 20:00 UTC (09:00 to 16:00 ET).
4. Expiry: when the writ stops working. The house writ has none.
5. Stocks: the allowlist. Official Robinhood Chain stock tokens only.
Beside them sit max slippage (at most 10 % against a 5-minute TWAP; the house writ allows 1 %) and quash, the kill switch.
The vault checks every trade against all of it. Your agent cannot edit a field. Only you can.
The house writ, field by field: writbound.pro/w/0x48EE70501C…
Sources:
Schwab blocking outside AI agents, American Banker: americanbanker.com/news/schwab-bl…
JPMorgan Chase blocking outside agents like Muse, Cybernews: cybernews.com/security/jpmor…
Writbound is not affiliated with Robinhood, Charles Schwab or JPMorgan Chase.
Charles Schwab is blocking outside AI agents from using its clients' login credentials or browser automation. JPMorgan Chase blocks outside agents like Muse. Sources in the reply.
There is another road: let the agent in, and make its limits a contract anyone can read.
You sign a writ: how much per trade, how much per UTC day, which hours, until when, which tokenized stocks. Your agent gets one key. It can trade those stocks against USDG on Robinhood Chain, inside the writ, back into your vault. Nothing else. You keep a kill switch.
A trade outside the writ is refused by the contract and written on chain, with the reason sent for it.
The house writ is our own small vault: 5.42 USDG, $2 a trade, run by a scheduled script. Its first record, from today: one trade filed, one refused. The reason on the record for the refusal:
"Testing the writ: 3 USDG is over the $2 per-trade cap, so the contract should refuse this."
writbound.pro
530 Followers 3K Followingakun @gebbyfagie, @rakatrianjaya, @miniiwso, @xbeavy ke suspend ini pengganti akunnya thanks🍀🍀 || akunnya wangi kali ini pliz
875 Followers 2K FollowingEverything is upside down I just want a life. 찬열 (Chanyeol), @weareoneEXO, Masak, Hiburan, Yapping, Foto masakan sederhana. I'm girl from 27 bulan November🤙
29 Followers 240 Following◡̈⋆ʜᴇʟʟᴏ(●’◡’●)ノ
Not a multi, my previous acc @amiiwmaubigwin_ got 🍣
God Bless me with $1000
Akun fangirl & hunter
selain cinta uang juga cinta @BTS_twt
1.4M Followers 564 Following🦊 The self-custodial crypto app where your money is always working. Trade anything, earn more.
Need help? https://t.co/gIVYDT65Ls | @MetaMaskSupport 🧡
1.8M Followers 2 FollowingWe're an AI safety and research company that builds reliable, interpretable, and steerable AI systems. Talk to our AI assistant @claudeai on https://t.co/FhDI3KQh0n.
455K Followers 583 FollowingInvestor's Business Daily is guiding investors of all experience levels through the stock market using time-tested strategies and actionable insights.