Primitives / Arenas
Arenas
A topic in, a sourced, fact-checked outline out.
A research agent that gathers sources, weighs competing theses and fact-checks every claim. Each arena is one versioned file, like a kernel.
- Unit
- Arena
- A run produces
- an outline with its sources, direction, stat ledger and paper trail
- In the app
- /arenas
- API reference
- All arenas tools
Try it
run_arena over REST: POST /api/arena/ingest/{arena_id}. Needs an API key with arena:write.
curl -X POST https://app.letterstory.com/api/arena/ingest/<arena_id> \
-H "x-integrations-key: ls_..." \
-H "content-type: application/json" \
-d '{
"template": {},
"depth": "...",
"direction_gate": false,
"provider": "...",
"verify": false,
"unresolved_claims": "...",
"mention_degree": "...",
"context": {},
"blocked_mentions": [],
"blocked_domains": [],
"preferred_sources": [],
"topic": "...",
"source_urls": [],
"must_include": [],
"shape": {},
"direction": "...",
"existing_content": "...",
"article_id": "...",
"target_word_count": 0
}'1. Constraints: what you configure
namemodeldepthproviderdirectionGateverifyunresolvedClaimsmentionDegreecontextblockedtemplateruleseffortadvancedOnly name is required; the rest uses platform settings, and every save is a new, unchangeable version. model is the research model; rules sets each source-policy call to enforce, measure or off. Use ours, copy it, or bring your own.
namedefaults.depthdefaults.direction_gatedefaults.providerdefaults.verifydefaults.contextdefaults.templatetopicsource_urlsmust_includedepthdirection_gateproviderverifyblocked_mentionsblocked_domainspreferred_sourcesshapeprovider is native, exa, youcom or context-dev. Anything you leave undeclared inherits your organization's settings.
2. Mechanism: what always happens
- 1Gather from the live web, then read the page behind every citation, with one extra gather per named subject the outline turns up.
- 2Pick a direction: an agent chooses the thesis, or, with the direction gate on, proposes three and pauses for you.
- 3Synthesize against a stat ledger: only figures actually found in the sources may be stated precisely. Blocked names are scrubbed.
- 4Fact-check every claim against the sources and the web. A failing phase is marked failed with its reason, and the run carries on.
3. Intelligence: who picks values
An API key or the Studio controls everything. Letterstory decides nothing.
Auto-Pen, the planner and the phantom orchestrator supply the post's title, a seer's source URLs, the template's sections, the collection's depth and its preferred sources.
4. Verification: did it hold
| Check | Reads back | Rule |
|---|---|---|
sourced | mechanism | At least one source has a real page behind it. |
read | mechanism | At least one page was read. |
grounded | mechanism | Every stated figure is tied to a source. |
direction | direction_gate | A thesis was decided. |
shape | shape | Every required section is planned. |
fact_checked | verify | The verify phase completed. |
Report-only; an unfinished run reads back as skipped on all six.
Surfaces
Same call over MCP (tools/call) and REST.
| Job | MCP tool | REST |
|---|---|---|
| Run | run_arena | POST /api/arena/ingest/{arena_id} |
| Poll a run | get_arena_run | GET /api/arena/ingest/{arena_id}/runs/{run_id} |
list_arena_runs | POST /api/integrations/tools/list_arena_runs | |
| Steer | submit_arena_direction | POST /api/arena/ingest/{arena_id}/runs/{run_id}/direction |
cancel_arena_run | POST /api/arena/ingest/{arena_id}/runs/{run_id}/cancel | |
| Arenas | list_arenas | POST /api/integrations/tools/list_arenas |
create_arena | POST /api/integrations/tools/create_arena | |
delete_arena | POST /api/integrations/tools/delete_arena | |
| Arena config | get_arena_config | POST /api/integrations/tools/get_arena_config |
set_arena_config | POST /api/integrations/tools/set_arena_config | |
| The arena file | get_arena_file | POST /api/integrations/tools/get_arena_file |
save_arena_file | POST /api/integrations/tools/save_arena_file | |
promote_arena_version | POST /api/integrations/tools/promote_arena_version | |
list_arena_versions | POST /api/integrations/tools/list_arena_versions | |
pin_arena_version | POST /api/integrations/tools/pin_arena_version | |
accept_arena_offer | POST /api/integrations/tools/accept_arena_offer | |
| Balance | get_arena_run_balance | POST /api/integrations/tools/get_arena_run_balance |
CLI: letterstory arena run --topic …
Direct runs draw arena run credits; errored and cancelled runs are free. Runs Auto-Pen makes for you are not billed.