Variable injection vocabulary
Pendraic substitutes {{token}} placeholders in your prompt body at run time. Always uses live state from the database, your prompt body is never a vehicle for stale or tampered data. Unknown tokens stay literal in the rendered prompt so a typo is visible to you instead of silently disappearing.
83 static tokens · 8 parameterized templates · across 10 scopes.
Parameterized templates
These tokens take a number you fill in. e.g. {{prose_last_500}} for the trailing 500 words of prose before your cursor.
{{prose_all}}Full plain text of the active scene.{{prose_last_<N>}}Last N words of prose before the writer's cursor. e.g. {{prose_last_500}} for the trailing 500 words.{{prose_next_<N>}}Next N words of prose after the writer's cursor (within the active scene).{{chapter_<N>}}Full prose of the Nth chapter (1-indexed across the project).{{chapter_<N>_scene_<M>}}Full prose of the Mth scene inside the Nth chapter (both 1-indexed).{{scene_<N>}}Nth scene of the active chapter (1-indexed). Falls back to empty when no chapter is active.{{act_<N>}}Full prose of every scene inside the Nth act (1-indexed).{{series_metadata}}Composite block: every series-level field as a labeled summary (title, logline, shape, POV strategy, continuity, audience, planned books, time span, thematic argument).
Project · 18 tokens
| Token | Description |
|---|---|
| {{title}} | Project title. |
| {{logline}} | One-sentence pitch. |
| {{elevator_pitch}} | Two-to-three-sentence back-cover blurb. |
| {{description}} | Free-form project description. |
| {{format_preset}} | Format preset (e.g. fiction-thriller, memoir). |
| {{structure_preset}} | Structure preset (simple, standard, discovery, heavy). |
| {{status}} | Project status (planning / drafting / revising / finished / published). |
| {{synopsis_1p}} | 1-page synopsis (~2,000 chars). |
| {{synopsis_3p}} | 3-page synopsis (~6,000 chars). |
| {{synopsis_5p}} | 5-page synopsis (~12,000 chars). |
| {{narrative_style}} | Narrative style (linear, non-linear, epistolary, …). |
| {{pov}} | Point of view (first, third limited, omniscient, …). |
| {{tense}} | Past, present, or mixed. |
| {{target_length}} | Target length category (flash, novelette, novel, epic, …). |
| {{target_word_count_floor}} | Lower bound of the target word count. |
| {{target_word_count_ceiling}} | Upper bound of the target word count. |
| {{genre}} | Top-level genre derived from format preset. |
| {{subgenre}} | Subgenre when set (e.g. epic fantasy). |
Series · 13 tokens
| Token | Description |
|---|---|
| {{series_title}} | Series title. |
| {{series_logline}} | One-sentence series pitch. |
| {{series_description}} | Free-form series description. |
| {{series_elevator_pitch}} | Two-to-three-sentence series pitch. |
| {{series_synopsis_1p}} | 1-page series synopsis. |
| {{series_synopsis_3p}} | 3-page series synopsis. |
| {{series_thematic_argument}} | Central thematic argument the saga is making. |
| {{series_time_span}} | In-universe time span the series covers. |
| {{series_shape}} | Trilogy / quartet / planned saga / open saga / serialized / … |
| {{series_pov_strategy}} | Single POV / rotating / multi / one per book / ensemble. |
| {{series_continuity}} | Cliffhanger / arc-complete / standalone / episodic. |
| {{series_audience}} | MG / YA / NA / adult — including age-up paths. |
| {{series_planned_book_count}} | Planned book count (when known). |
World · 14 tokens
| Token | Description |
|---|---|
| {{world_name}} | Active world name. |
| {{world_description}} | Free-form world description. |
| {{world_logline}} | One-sentence world distinctiveness. |
| {{entry_name}} | Active world-index entry name. |
| {{entry_objective}} | Entry's canonical objective description. |
| {{entry_rules}} | Entry's hard rules + tendencies as a bulleted list. |
| {{entry_tags}} | Entry's concept tags, comma-joined. |
| {{entry_aliases}} | Entry's aliases, comma-joined. |
| {{entry_notes}} | Entry's free-form notes. |
| {{world_foundation}} | Foundation-template name applied to the active world (e.g. 'Secondary World Fantasy', 'Hidden World — Masquerade'). Empty when fully custom. |
| {{world_overlays}} | Comma-joined active overlay names (e.g. 'Dragons, Inherited Magic, Mountain Geography, Mythic Lyrical'). Empty when none. |
| {{world_modifiers}} | Human-readable modifier list: tone, tech level, magic mode, religion cosmology, political complexity, portal access, creature ecology, apocalypse history. Empty when none set. |
| {{world_template_lens}} | Prompt-ready block: WORLD FOUNDATION + ACTIVE OVERLAYS + WORLD MODIFIERS + CUSTOM LENS NOTES. Drop directly into a system prompt to anchor LLM output to the world's nature. Empty when fully custom and no modifiers set. |
| {{world_template_custom_lens}} | The writer's free-form lens override (worlds.world_template_custom_lens). Used only when the writer wants their own hand-written framing in addition to (or instead of) the catalog. |
Scene · 5 tokens
| Token | Description |
|---|---|
| {{scene_title}} | Active scene title. |
| {{scene_text}} | Full plain text of the active scene. |
| {{scene_status}} | Scene status (drafting, revising, done, …). |
| {{scene_word_count}} | Live word count of the active scene. |
| {{selection}} | The writer's current text selection. Cheapest scope for paragraph edits. |
Chapter · 4 tokens
| Token | Description |
|---|---|
| {{chapter_title}} | Active chapter title. |
| {{chapter_synopsis}} | Active chapter synopsis. |
| {{chapter_word_count}} | Sum of scene word counts in the chapter. |
| {{chapter_ordinal}} | 1-based chapter position in the project. |
Act · 3 tokens
| Token | Description |
|---|---|
| {{act_title}} | Active act title. |
| {{act_purpose}} | Active act purpose / function. |
| {{act_ordinal}} | 1-based act position in the project. |
Beat / Engine · 5 tokens
| Token | Description |
|---|---|
| {{active_beat_name}} | Name of the beat anchored to the active scene. |
| {{active_beat_role}} | Beat framework role (rising-action, midpoint, climax, …). |
| {{active_beat_description}} | Beat description. |
| {{previous_beat_name}} | Name of the previous beat on the spine. |
| {{next_beat_name}} | Name of the next beat on the spine. |
Story Index in scene · 5 tokens
| Token | Description |
|---|---|
| {{characters_in_scene}} | Comma-joined character names detected in the scene text. Each name appears once regardless of how many times the prose mentions it. |
| {{factions_in_scene}} | Comma-joined factions / organizations detected in the scene. |
| {{locations_in_scene}} | Comma-joined locations detected in the scene. |
| {{relationships_in_scene}} | Story-Index relationships involving any in-scene entry, rendered as bullet lines ("Tom married_to Mary: Mary died..."). Deduplicated; each edge once. |
| {{world_relationships_in_scene}} | World-Index relationships involving any in-scene world entry. Same shape as relationships_in_scene. |
Voice / Anchors · 13 tokens
| Token | Description |
|---|---|
| {{voice_register}} | Project-level voice register. |
| {{voice_tone}} | Primary tone from the voice profile. |
| {{voice_diction}} | Composite diction sliders (formality, density, contractions, latinate). |
| {{voice_taboos}} | Words and patterns the voice profile bans. |
| {{voice_reference_authors}} | Comma-joined reference authors. |
| {{author_persona}} | Composed: 'Age N, [description]'. The author persona applied to this project, resolved through project<series<world inheritance. |
| {{author_persona_age}} | Author age (1-120) applied to this project. Empty when no layer in the inheritance chain has set it. |
| {{author_persona_description}} | Free-form author persona description applied to this project. Up to 1000 chars. Resolved with project<series<world precedence. |
| {{voice_emulation}} | Composed emulation cue: '[target] — [notes]'. Style-level only. |
| {{voice_emulation_target}} | Style descriptor to emulate (e.g. 'tight prose with hard magic limits', 'lyrical historical-fantasy with quiet menace'). Describe the style itself, not a specific author. Style-level only; Pendraic never reproduces copyrighted prose verbatim. |
| {{voice_emulation_notes}} | Specifics of what to emulate from the target: sentence length, dialogue style, image density. Up to 2000 chars. |
| {{ai_writer_persona}} | Position the LLM should write FROM. Distinct from voice_emulation_target (style); this is point-of-view stage direction. Up to 1000 chars. |
| {{voice_block}} | Prompt-ready block assembling AUTHOR PERSONA / STYLE EMULATION / AI WRITER PERSONA with the safe-emulation disclaimer. Drop directly into a system prompt. Empty when no layer has voice fields set. |
Promise / Engine / Nexus · 3 tokens
| Token | Description |
|---|---|
| {{promises_summary}} | Promise rows summarized with stakes + type + statement. |
| {{nexus_summary}} | Nexus rows summarized with weight + type + statement. |
| {{engine_framework}} | Engine framework preset (Save the Cat, Hero's Journey, …). |
Pick the smallest scope that carries the meaning: {{selection}} for paragraph edits is cheaper and sharper than {{scene_text}}, which is cheaper than {{synopsis_5p}}. Match the scope to the job; don't pay for tokens you won't use.

