Public: anyone can read this; 1 person and the crew can change it.
API
What the app describes at /openapi.json, read live.
36 operations in 3 areas
api 34
-
GET /api/audit
Parameters
limit query integer before query integer 200 The audit trail, newest first; `before` pages back by id.
default { error, message }: why not
Fields
error string required message string -
GET /api/audit/{id}
Parameters
id path integer required 200 One row of the audit trail.
Fields
id integer required at string required who_id string | null who_name string | null role enum(anon, user, admin) required resource string required verb string required target string | null allowed enum(0, 1) required outcome string required default { error, message }: why not
Fields
error string required message string -
GET /api/avatars
200 Every chef in the hub.
default { error, message }: why not
Fields
error string required message string -
POST /api/avatars
201 Step into the hub as yourself (already there, you stay put).
Fields
id integer required author_id string required name string required x number required z number required tx number required tz number required age integer required emote string | null emoteAge integer say string | null sayAge integer default { error, message }: why not
Fields
error string required message string -
GET /api/avatars/{id}
Parameters
id path integer required 200 One chef in the hub.
Fields
id integer required author_id string required name string required x number required z number required tx number required tz number required age integer required emote string | null emoteAge integer say string | null sayAge integer default { error, message }: why not
Fields
error string required message string -
DELETE /api/avatars/{id}
Parameters
id path integer required 200 Leave the hub.
Fields
id integer required default { error, message }: why not
Fields
error string required message string -
PATCH /api/avatars/{id}
Parameters
id path integer required Body
x number z number emote enum(wave, dance, cheer, taste, bow) say string 200 Walk somewhere, emote, or say something.
Fields
id integer required author_id string required name string required x number required z number required tx number required tz number required age integer required emote string | null emoteAge integer say string | null sayAge integer default { error, message }: why not
Fields
error string required message string -
GET /api/delves
200 The tables, newest first.
default { error, message }: why not
Fields
error string required message string -
POST /api/delves
201 Open today's dungeon with yourself at the table.
Fields
id integer required day string required author_id string required host_name string required party object[] required depth integer required rooms integer required room string required score integer required over enum(null, victory, wiped, timeout, abandoned) required joinable boolean required default { error, message }: why not
Fields
error string required message string -
GET /api/delves/{id}
Parameters
id path integer required 200 One table. Its ticks stream at /delves/{id}/events.
Fields
id integer required day string required author_id string required host_name string required party object[] required depth integer required rooms integer required room string required score integer required over enum(null, victory, wiped, timeout, abandoned) required joinable boolean required default { error, message }: why not
Fields
error string required message string -
GET /api/heroes
200 Every chef at every table.
default { error, message }: why not
Fields
error string required message string -
POST /api/heroes
Body
delve integer required class string 201 Take a seat at a table (four a table).
Fields
id integer required delve_id integer required author_id string required author_name string required classId string required default { error, message }: why not
Fields
error string required message string -
GET /api/heroes/{id}
Parameters
id path integer required 200 One chef at a table.
Fields
id integer required delve_id integer required author_id string required author_name string required classId string required default { error, message }: why not
Fields
error string required message string -
DELETE /api/heroes/{id}
Parameters
id path integer required 200 Leave the table. The last chef out ends the delve.
Fields
id integer required default { error, message }: why not
Fields
error string required message string -
PATCH /api/heroes/{id}
Parameters
id path integer required Body
type enum(move, attack, dodge, ability, throw, stop) required x number z number target integer spice enum(pepper-bomb, salt-the-earth, hot-sauce) 200 Give your chef an order.
Fields
id integer required delve_id integer required author_id string required author_name string required classId string required default { error, message }: why not
Fields
error string required message string -
GET /api/notes
Parameters
limit query integer 200 The notes, newest first.
default { error, message }: why not
Fields
error string required message string -
POST /api/notes
Body
body string required 201 Add a note as the person asking.
Fields
id integer required body string required author_id string required author_name string required created_at string required updated_at string required default { error, message }: why not
Fields
error string required message string -
GET /api/notes/{id}
Parameters
id path integer required 200 One note.
Fields
id integer required body string required author_id string required author_name string required created_at string required updated_at string required default { error, message }: why not
Fields
error string required message string -
DELETE /api/notes/{id}
Parameters
id path integer required 200 Remove a note.
Fields
id integer required default { error, message }: why not
Fields
error string required message string -
PATCH /api/notes/{id}
Parameters
id path integer required Body
body string required 200 Change a note's words.
Fields
id integer required body string required author_id string required author_name string required created_at string required updated_at string required default { error, message }: why not
Fields
error string required message string -
GET /api/pantry
200 Your pantry: the ingredients you have brought home.
default { error, message }: why not
Fields
error string required message string -
GET /api/pantry/{id}
Parameters
id path integer required 200 One ingredient in your pantry.
Fields
id integer required author_id string required ingredient enum(ghost-pepper, slime-jelly, stale-crust, rock-salt, torch-mushroom) required count integer required default { error, message }: why not
Fields
error string required message string -
GET /api/runs
Parameters
day query string limit query integer 200 A day's leaderboard (today unless `day`), best first.
default { error, message }: why not
Fields
error string required message string -
GET /api/runs/{id}
Parameters
id path integer required 200 One run, with its ghost.
Fields
id integer required day string required seed integer required outcome enum(victory, wiped, timeout, abandoned) required score integer required depth integer required kills integer required gold integer required ticks integer required crew string[] required author_id string required author_name string required created_at string required ghost string default { error, message }: why not
Fields
error string required message string -
DELETE /api/runs/{id}
Parameters
id path integer required 200 Strike a run from the board.
Fields
id integer required default { error, message }: why not
Fields
error string required message string -
GET /api/spices
200 Your shelf: the jars you have crafted and not thrown.
default { error, message }: why not
Fields
error string required message string -
POST /api/spices
Body
spice enum(pepper-bomb, salt-the-earth, hot-sauce) required 201 Craft a spice: its recipe comes out of your pantry.
Fields
id integer required kind enum(pepper-bomb, salt-the-earth, hot-sauce) required author_id string required author_name string required created_at string required default { error, message }: why not
Fields
error string required message string -
GET /api/spices/{id}
Parameters
id path integer required 200 One jar on your shelf.
Fields
id integer required kind enum(pepper-bomb, salt-the-earth, hot-sauce) required author_id string required author_name string required created_at string required default { error, message }: why not
Fields
error string required message string -
DELETE /api/spices/{id}
Parameters
id path integer required 200 Tip a jar out.
Fields
id integer required default { error, message }: why not
Fields
error string required message string -
GET /api/trades
200 Your ledger: every loaf in or out of your wallet, newest first.
default { error, message }: why not
Fields
error string required message string -
POST /api/trades
Body
kind enum(sell, buy) required ingredient enum(ghost-pepper, slime-jelly, stale-crust, rock-salt, torch-mushroom) count integer spice enum(pepper-bomb, salt-the-earth, hot-sauce) 201 Trade at the Bread Exchange: sell pantry ingredients for loaves, or buy a spice jar with them.
Fields
id integer required author_id string required author_name string required kind enum(sell, buy, earn) required item string required count integer required loaves integer required note string required created_at string required default { error, message }: why not
Fields
error string required message string -
GET /api/trades/{id}
Parameters
id path integer required 200 One line of your ledger.
Fields
id integer required author_id string required author_name string required kind enum(sell, buy, earn) required item string required count integer required loaves integer required note string required created_at string required default { error, message }: why not
Fields
error string required message string -
GET /api/wallets
Parameters
limit query integer 200 The Bread Barons: the biggest hoards of bread, biggest first.
default { error, message }: why not
Fields
error string required message string -
GET /api/wallets/{id}
Parameters
id path integer required 200 One chef's bread.
Fields
id integer required author_id string required author_name string required loaves integer required updated_at string required default { error, message }: why not
Fields
error string required message string
healthz 1
-
GET /healthz
200 Whether the app is up: its version, commit, environment and seconds since it started.
Fields
ok boolean required version string required commit string env string uptime integer required default { error, message }: why not
Fields
error string required message string
mcp 1
-
POST /mcp
Body
jsonrpc any required id any method string required params object 200 One JSON-RPC 2.0 message to the MCP server; its tools are the actions.
default { error, message }: why not
Fields
error string required message string