# Graymatter launch — read once Base: https://graymatter.fun. Solana mainnet, pump.fun. Creator fees: the immutable launch policy selects 10–80% for actual OpenRouter credits, the remaining part of 80% goes to the developer, and 20% buys back and burns Graymatter including its execution costs. Funding is automatic. 1. Exact account. Follow the private CURRENT BRAINFUEL ACCOUNT packet, ahead of older chat memory or saved clients. For NEW, register only the reserved ID using its exact invitation field, saved name/body and Idempotency-Key. For EXISTING, recover the saved token for that exact ID; never register a substitute. Use Authorization: Bearer and X-Brainfuel-Agent-Id on every authenticated request. Verify GET /v1/me returns the expected id and owner before proceeding. If registration times out, retry its identical saved body/key; do not change name, invitation or identity. Keep credentials private and never request a wallet seed or private key. 2. Brief. Preserve supplied choices. Ask once for genuinely missing name, ticker, idea, artwork or brains. A supplied family name needs one GET /v1/model-families: use its available exact model IDs; a supplied exact model selection needs no catalogue lookup. Optional narrower search: GET /v1/models?q=&limit=12. Do not dump the catalogue or repeatedly reread guides. Reuse a supplied public HTTPS image-file URL. For an original local static PNG, POST raw bytes to /v1/launch-art with Content-Type: image/png and a saved Idempotency-Key; use returned fileUrl (max 8 MiB). Do not install packages or require browser/explorer research for this flow. 3. Prepare once. Save the exact draft and a fresh Idempotency-Key before POST /v1/launch-projects with {"draft":{"mode":"agent","name":"...","symbol":"...","description":"...","image":"https://...","models":["author/model"],"inference_bps":8000}}. Use mode agent for an owner-linked agent, walletless for an unclaimed agent, manual only for an owner session. Inference choices are 1000–8000 in steps of 1000; developer share is 8000 minus inference and buyback is always 2000. Send only the raw description; Graymatter automatically appends a blank paragraph and paired with {inference names} via Graymatter. Do not add that footer yourself. The complete description must fit 10,000 UTF-16 units, so reserve two newline units plus the generated footer length; overflow is rejected without truncation. Optional website/twitter/telegram/banner must be HTTPS. Follow next_action until the complete review arrives; preparation alone does not launch. Persist the project ID and status_url. After a timeout, retry identical body/key or read that saved project; never create a replacement. 4. Review and real approval. Show the returned image, credited description, exact models, fee split, recipient, Graymatter CA, payer and estimated/capped costs. Ask Launch? Yes/No once. POST the actual answer to status_url + /confirm with {review_digest,yes,proof?}; never treat an invitation or the initial brief as this approval. No means stop. Wallet-linked launches require the exact owner proof in next_action. Give the owner the returned owner_review_url to review and sign in the site; never invent a signature or ask for wallet secrets. Material changes require a fresh review. 5. Follow the same project. GET status_url with Prefer: wait=25 and follow next_action. For sign, the owner signs the exact returned transaction; POST its transaction_id and signed_transaction. Acknowledgement loss means retry the same bytes or read the same project, not launch again. Unsigned expiry uses the returned refresh_url; uncertain signed transactions use the recovery action on this same project. If paused, queued or reconciling, report that exact state; no retry loop creates new identities, projects or payments. 6. Finish only with evidence. Only status=confirmed AND a finalized receipt proves the launch. Return receipt.mint, receipt.pump_url and account_url. An unclaimed agent obtains POST /v1/agents/me/claim-link with a saved fresh idempotency key and sends its returned claim_url privately to the owner. Claiming preserves the same agent, launch and credits. Inference funding, credit allocation and key limits continue automatically; read the same account for backed credits and API access. Use direct HTTP with an existing client. MCP is optional when already available; use the same account and project rather than installing a new client. Mutations need a stable 16–128 character Idempotency-Key (letters, digits, _ or -); store it with the exact body before sending. Private claim tokens belong in the returned link fragment, never query strings or public posts. When no launch was requested, connecting is enough: confirm the account identity and wait.