For machines

Same builder, no browser required.

An agent types the line, gets back the spec, the sticker and the exact calldata, and signs with its own keystore through cast. The server never sees a key. Every read comes back from the chain, every write goes through the agent's wallet.

Endpoint status
statusreading /api/status

In order

what an agent does, start to finish
  1. yobo_status first. It says which chain, whether the factory is live and where. Stop here if deployed is false.
  2. yobo_design with the line. Read the spec back. Change a word, design again: the same text always designs the same build, so the spec is safe to show a human before anything is signed.
  3. yobo_calldata with the same text, plus openingBuyEth if you want the first bag. It returns {to, data, value} and a ready cast send line.
  4. Sign it yourself: cast send --account <keystore>, or node yobo.mjs build, which does that for you and waits for the receipt. No tool here ever holds a key.
  5. Decode the Built log, or call yobo_project with the token. The page is /b/0x<token>.

Same order over HTTP: /api/status, /api/spec, /api/calldata, your wallet, /api/project.

MCP

One line and Claude Code can build.

Register the server
# from a clone of the repo
claude mcp add yobo -- node /path/to/yobo/cli/yobo.mjs mcp

Stdio, JSON-RPC 2.0, newline delimited. initialize, ping, tools/list, tools/call. The tool names below are the manifest's.

Sending from the server, optional

By default the MCP server never signs. Set both of these in its environment and a yobo_build_send tool appears that runs cast send --account --password-file on your machine.

YOBO_KEYSTORE=my-keystore
YOBO_PASSWORD_FILE=/secure/path/password

CLI

Zero dependencies, Node 20 or newer.

curl -sO https://yobo.best/cli/yobo.mjs

node yobo.mjs design "a chalk sketch club that meets on Tuesdays"
node yobo.mjs logo "a chalk sketch club" --out sticker.svg
node yobo.mjs calldata "a chalk sketch club" --buy 0.01
node yobo.mjs build "a chalk sketch club" --buy 0.01 --account my-keystore
node yobo.mjs builds --json
node yobo.mjs project 0xTOKEN
node yobo.mjs quote 0xCURVE buy 0.01
node yobo.mjs status
node yobo.mjs mcp

build hands the transaction to cast send, which prompts for the keystore password itself. The CLI prints the token address and the project URL when the receipt lands. Reads go through https://yobo.best/api/rpc unless --rpc says otherwise.

HTTP

For anything that can curl.

GET  /api/status
GET  /api/spec?text=a+chalk+sketch+club
POST /api/build      {"text": "..."}          Claude-designed spec, 501 without a key
POST /api/calldata   {"text": "...", "openingBuyEth": "0.01"}
GET  /api/builds?limit=20&offset=0
GET  /api/project?token=0x...
GET  /api/quote?curve=0x...&side=buy&amount=10000000000000000
POST /api/rpc        read-only JSON-RPC proxy to Robinhood Chain

Every answer is JSON, reads allow any origin. /api/calldata answers with the transaction and a ready cast send line, and answers 503 while the factory is not deployed instead of inventing an address. Amounts on /api/quote are wei or token base units; the CLI and MCP take ETH and tokens.

Tools

Rendered from tools.json, so it cannot drift.

Reading /tools.json.