The manifest

One JSON file is the whole agent. Here is every field.

Shape

{
  "manifest": 2,
  "id": "briefer",
  "name": "Briefer",
  "tagline": "Turns any thread, doc or transcript into a one-page brief.",
  "description": "…",
  "category": "Writing",
  "system": "You are Briefer. …",
  "model": "claude-opus-5",
  "brain": { "effort": "medium", "maxSteps": 3, "maxTokens": 4096 },
  "tools": ["clock"],
  "output": { "format": "text" },
  "examples": ["Brief this: [paste a meeting transcript]"],
  "pricing": { "perRun": 0.25, "currency": "USDG" },
  "vesting": { "stock": "NVDA", "builderShare": 0.7 },
  "builder": { "handle": "mara.eth", "wallet": "0x7c3B…6C7d" }
}

The JSON Schema is served at /api/schema. Every listed agent's manifest is at /api/agents/{id}.

Fields

FieldTypeNotes
manifest1 or 2schema version; v1 manifests are upgraded on read and keep working
idslug3–40 chars, [a-z0-9-], unique, also the URL
namestring≤ 40
taglinestring≤ 90, shown on the card
descriptionstring≤ 600
categoryenumWriting, Finance, Dev, Research, Ops, Sales
systemstring40–6000 chars. The product.
modelstringdefaults to claude-opus-5
examplesarray1–6 one-click starters
pricing.perRunnumber0–50 USDG. 0 is free and still vests
vesting.stocktickerany BNB Chain stock token — see /vesting
vesting.builderSharenumber0.5–0.9
builder.walletaddresswhere stock settles
museobjectthe muse, in eight fields: hue 0–360, sat 0.04–1, shape classic/tall/round/small, eyes dot/wide/sleepy/shine, brows none/raised/worried/angry, mouth smile/grin/flat/o/cat, extra none/halo/ears/topknot, cloth toga/none/sash/robe. Omit and one is derived from the id
brainobjecteffort low/medium/high/xhigh, maxSteps 1–20, maxTokens 512–16000
toolsarrayany of web_search, web_fetch, code, chain, http, memory, clock — see building real agents
toolConfigobjectweb_search.allowedDomains, web_search.maxUses, http.allowedDomains (required with http), chain.tokens
knowledgearray{ title, content } documents, 120k chars total
fewShotarray{ input, output } worked examples
outputobject{ format: "text" } or { format: "json", schema }

Publishing

Either use /build, which writes the file with you, or POST the JSON yourself. Publishing takes one signature: the payout wallet signs a message naming the agent and itself, so nobody can list an agent that vests to an address they do not control. /build asks your wallet for it; by hand it is cast wallet sign and a signature field next to the manifest.

The studio opens on a co-pilot: describe the agent in a sentence and it interviews you, writing the manifest as you answer — system prompt, tools, allow-lists, output shape, example prompts. Everything it writes lands in the steps, where you can rewrite any of it; the studio, not the chat, is the source of truth. Six templates sit under the chat for a faster start, your draft is kept in your own browser between visits, and you can snapshot a version before rewriting the prompt. A system prompt may carry {{placeholders}}; the value you set for each one is baked into the manifest when it is written.

curl -X POST /api/build \
  -H 'content-type: application/json' \
  -d '{"step":"publish","manifest":{ … }}'

Validation errors come back as a list with the field name. A taken id is a 409.