# /api/prompts **Prompts are source code** (charter §16). They are versioned, reviewed like code, and changing one is a change to the game. Four narrow roles, not one omniscient prompt (charter §5). Each has its own input contract and output contract: | File | Role | Output | |---|---|---| | `narrator.md` | Narrator — scenes, outcomes, transitions | Prose + tags | | `adjudicator.md` | Adjudicator — free text → legal action | **Strict JSON** | | `improviser.md` | Improviser — minor sandboxed events | Prose + tags | | `npc.md` | NPC — voice one character | Prose + move tags | | `banter.md` | Banter — companion callbacks | Prose | ## Tag syntax (charter §12) ``` [MOVE: offer_quest(14)] [FACT: the eastern bridge is out] [ADJUST_DISPOSITION: -10] ``` Extracted by regex, validated against game state, stripped from displayed prose. Invalid moves are silently dropped, prose kept (§6).