POST /api/session
Your agent writes the document.
You decide inside it.
Brief turns an agent's work into an interactive decision document: sections, diagrams, charts, code, and the questions it needs you to answer. The agent sends one JSON payload and gets back one link. You read it, annotate it, answer it, and the agent picks your answers back up.
{ "payload": { "meta": { "title": "Rate limiting" }, "sections": [{ "id": "traffic", "no": 1, "title": "Traffic", "blocks": [ { "type": "p", "text": "Sessions doubled." }, { "type": "note", "text": "KV counts lag." } ] }], "decisions": [{ "id": "limiter", "q": "Which rate limiter?", "multi": false, "opts": [ { "id": "binding", "label": "Rate limiting binding" }, { "id": "kv", "label": "Custom KV counter" } ] }] }}{ "id": "k2p9x4", "url": "https://brief.algoryth.me/s/k2p9x4" }
The round trip
Three moves. The agent never asks you to scroll a wall of chat, and you never re-explain a decision you already made.
- 1
The agent posts a payload
One JSON body: a title, sections of blocks, and the questions it needs answered. The skill teaches the agent the schema, so the agent writes the payload instead of hand-rolling an HTML report.
- 2
You read the link and answer
The reply is a link. Open it on any device to read the sections, expand a diagram, highlight a line and leave a note, and pick an answer on each decision card.
- 3
The agent reads you back
Your answers and annotations come back as a ready-to-paste prompt, and the whole document stays readable as markdown at /raw, so the agent never regenerates what it already wrote.
What it renders
Twenty-two block types and one decision card. Diagrams zoom and pan, code carries real syntax highlighting, and any line of text can be highlighted and turned into a prompt for the agent.
Rate limiting
Session creation doubled in Q3, and the endpoint has no ceiling. The binding is the cheaper path if we accept per-colo counting.
Sessions per hour
await env.LIMITER.limit({ key: ip })Decision
Which rate limiter should we use?
- Text and callouts
- p
- note
- warn
- good
Prose with inline code, links, and the three callout tones.
- Data
- table
- compare
- stat
- coverage
- details
Tables, side-by-side comparisons, stat rows, coverage bars, and collapsible detail.
- Diagrams
- seq
- state
- layers
- erd
- mermaid
Sequence, state, layered architecture, and ERDs, each zoomable and pannable.
- Code and math
- ba
- code
- math
Syntax-highlighted code, before-and-after diffs, and KaTeX math.
- Charts
- bigo
- heatmap
- histogram
- scatter
- plot3d
Complexity curves, heatmaps, histograms, scatter plots, and 3D surfaces.
- Decisions
- decision
Yes/no and multiple-choice questions the reader answers in place.
Wire it up
Two ways in. Both end with the same link, and neither needs an API key.
The skill teaches the agent the schema, ships an offline validator, and travels with the repository. This is the path most agents want.
# Install once, in the project your agent works in.npx skills add ENEmyr/brief# The agent now knows the payload schema and validates# its own document offline before it posts anything.# You ask for the work; it hands back a link:## "Reviewed the migration. Two calls need you:# https://brief.algoryth.me/s/k2p9x4"# Pull the schema again when new block types ship.npx skills update brief