Research, planning, TTRPG & conlang

51 MCP tools. Each applies to the one project the server was launched with; every mutating call is one undo step and saves immediately.

add_lexicon_words

Adds dictionary entries to a constructed language's lexicon. Each entry needs "word" and "gloss"; "part_of_speech" and "notes" are optional. Words already in the lexicon are skipped, never duplicated.

ParameterTypeRequiredDescription
languagestringyesThe language's name.
wordsarrayyesThe entries to add.

Example call

{
  "name": "add_lexicon_words",
  "arguments": {
    "language": "<language>",
    "words": []
  }
}

add_source

Adds a bibliographic source to the research library: either one source from title/type/citation_key/fields (CSL variable names such as author, issued, container-title, publisher, page, URL), or many at once by passing "bibtex" text (Zotero/Mendeley exports).

ParameterTypeRequiredDescription
bibtexstringnoBibTeX text to import instead of the explicit fields.
citation_keystringnoThe short in-text handle, e.g. "tolkien1954".
fieldsobjectnoCSL variable name -> value map (author, issued, publisher, ...).
titlestringnoThe work's title.
typestringnoThe bibliographic kind token (book, article-journal, webpage, ...); defaults to book.

Example call

{
  "name": "add_source",
  "arguments": {
    "bibtex": "<bibtex>",
    "citation_key": "<citation_key>"
  }
}

apply_beat_template

Chooses the story-structure template the project plots against -- three-act (three-act), the hero's journey (heros-journey), Save the Cat! (save-the-cat), or the Snowflake method (snowflake) -- by id or display name. Then map scenes to its beats with assign_beat. Scene assignments whose beat still exists are preserved.

ParameterTypeRequiredDescription
templatestringyesThe structure's id or display name (e.g. "save-the-cat").

Example call

{
  "name": "apply_beat_template",
  "arguments": {
    "template": "<template>"
  }
}

apply_content_pack

Overlays a content-pack folder onto the project: its categories and objects are added; anything already present (by id) is skipped, so re-applying a pack is idempotent. One undo step.

ParameterTypeRequiredDescription
pack_dirstringyesThe content-pack folder to apply.

Example call

{
  "name": "apply_content_pack",
  "arguments": {
    "pack_dir": "<pack_dir>"
  }
}

assess_encounter

Rates a planned D&D 5e encounter for a party: the XP budgets, the count-adjusted encounter XP, the difficulty band, and a treasure guideline.

ParameterTypeRequiredDescription
foesarrayyesThe foe groups in the encounter.
party_levelintegeryesThe characters' level (1-20).
party_sizeintegeryesHow many characters (at least 1).

Example call

{
  "name": "assess_encounter",
  "arguments": {
    "party_size": 0,
    "party_level": 0,
    "foes": []
  }
}

assign_beat

Assigns a document (scene) to one beat of the applied structure template, or clears the beat with an empty "document".

ParameterTypeRequiredDescription
beatstringyesThe beat's name, e.g. "Catalyst".
documentstringnoThe document to assign; "" clears the beat.

Example call

{
  "name": "assign_beat",
  "arguments": {
    "beat": "<beat>"
  }
}

cite

Formats a citation for one source (addressed by title or citation key): the in-text form and the full bibliography entry, in APA, MLA, or Chicago.

ParameterTypeRequiredDescription
locatorstringnoAn optional page/section reference for the in-text citation.
sourcestringyesThe source's title or citation key.
stylestringnoapa (default), mla, or chicago.

Example call

{
  "name": "cite",
  "arguments": {
    "source": "<source>"
  }
}

create_language

Creates a constructed language (conlang). Only "name" is required; the sound system is seeded with sensible defaults so it can generate words and translate at once. Optional: consonants, vowels, patterns (C=consonant/V=vowel slots, e.g. "CV CVC V"), min_syllables, max_syllables, grammar_notes, and a "lexicon" of starter {word, gloss} entries.

ParameterTypeRequiredDescription
consonantsstringnoSpace-separated consonant phonemes.
grammar_notesstringnoFree-form grammar notes (Markdown permitted).
lexiconarraynoOptional starter dictionary entries.
max_syllablesintegernoMost syllables per generated word.
min_syllablesintegernoFewest syllables per generated word (>=1).
namestringyesThe language's display name.
patternsstringnoSpace-separated syllable patterns (C/V slots).
vowelsstringnoSpace-separated vowel phonemes.

Example call

{
  "name": "create_language",
  "arguments": {
    "name": "<name>"
  }
}

create_plot_thread

Creates a plot thread or character arc (unique name), with optional color ("#rrggbb"), description, and character (an entity name that makes the thread that character's arc).

ParameterTypeRequiredDescription
characterstringnoThe entity (name or alias) whose arc this thread is.
colorstringnoA CSS hex swatch like "#c0392b".
descriptionstringnoNotes for the thread.
namestringyesThe new thread's name (must not exist yet).

Example call

{
  "name": "create_plot_thread",
  "arguments": {
    "name": "<name>"
  }
}

create_random_table

Creates a weighted random table (encounters, loot, rumours, ...). "entries" is an array of {text, weight} objects (or bare strings, weight 1); a higher weight is more likely. An outcome's text may nest: "[[2d6]]" (any dice expression) is replaced by a rolled total and "[[Other Table]]" rolls on that table, so tables chain into sub-tables. Roll on it with the roll tool.

ParameterTypeRequiredDescription
entriesarraynoThe weighted outcomes.
titlestringyesThe table title.

Example call

{
  "name": "create_random_table",
  "arguments": {
    "title": "<title>"
  }
}

create_statblock

Creates a creature/NPC stat block. An optional template (dnd5e, pathfinder2e, custom) seeds that system's starter fields; provided stats/actions replace the starters, and system/notes are free text.

ParameterTypeRequiredDescription
actionsarraynoNamed actions / attacks / traits.
notesstringnoFreeform tactics / lore notes.
statsarraynoLabelled statistics.
systemstringnoA free game-system label.
templatestringnodnd5e, pathfinder2e, or custom.
titlestringyesThe creature/NPC name.

Example call

{
  "name": "create_statblock",
  "arguments": {
    "title": "<title>"
  }
}

create_task

Creates a task (unique title) with optional description, status (board column), board, priority (low|normal|high|urgent), due date (YYYY-MM-DD), and -- for a submission-tracker task -- submitted_to / submission_type / submitted_on / submission_notes.

ParameterTypeRequiredDescription
boardstringnoThe board to file it on (default board when absent).
descriptionstringnoFree-text details.
duestringnoYYYY-MM-DD.
prioritystringnolow, normal, high, or urgent.
statusstringnoThe board column, e.g. "To Do".
submission_notesstringnoSubmission notes (response, terms, fee).
submission_typestringnoagent, publisher, magazine, contest, or other.
submitted_onstringnoDate submitted (YYYY-MM-DD).
submitted_tostringnoSubmission tracker: who the work was sent to.
titlestringyesThe new task's title (must not exist yet).

Example call

{
  "name": "create_task",
  "arguments": {
    "title": "<title>"
  }
}

delete_plot_thread

Removes a plot thread (or character arc) from the project and untags every object that referenced it -- scenes, timeline events, and entities -- so nothing is left pointing at a deleted thread.

ParameterTypeRequiredDescription
threadstringyesThe thread's name.

Example call

{
  "name": "delete_plot_thread",
  "arguments": {
    "thread": "<thread>"
  }
}

derive_daughter_language

Evolves a language's lexicon through an ordered list of sound-change rules into a new daughter language, added to the project. Each rule is written target -> replacement / environment (SCA2 style): "target" is the sound(s) that change, "replacement" what they become (empty deletes), and "environment" the context with _ for the target slot and # for a word boundary (e.g. V_V, _#). A subset of rules yields a dialect.

ParameterTypeRequiredDescription
daughter_namestringyesA name for the new daughter language.
languagestringyesThe proto-language's name.
rulesarrayyesThe ordered sound-change rules.

Example call

{
  "name": "derive_daughter_language",
  "arguments": {
    "language": "<language>",
    "daughter_name": "<daughter_name>",
    "rules": []
  }
}

export_codex

Compiles the codex world bible to output_path as md or html (chosen by "format" or the file extension). Optional audience. Entities marked "Exclude from AI" are omitted.

ParameterTypeRequiredDescription
audiencestringnoExport only this audience's view.
formatstringnomd or html.
output_pathstringyesWhere to write the file.

Example call

{
  "name": "export_codex",
  "arguments": {
    "output_path": "<output_path>"
  }
}

export_data

Exports a structured JSON slice of the project for migration, diff, or external tooling: "kind" is entities (fields, aliases, references resolved to names, lifespan), timeline (events with dates/participants/locations), sources, plot_threads, or continuity_rules. Names, not UUIDs, throughout; deterministic and diff-friendly. Returns the JSON directly, or writes it to "output_path" when given. "Exclude from AI" objects are omitted. Read-only.

ParameterTypeRequiredDescription
formatstringnojson (the default).
kindstringyesentities, timeline, sources, plot_threads, or continuity_rules.
output_pathstringnoOptional file to write the JSON into (relative = inside the project folder); omit to get it back directly.

Example call

{
  "name": "export_data",
  "arguments": {
    "kind": "<kind>"
  }
}

export_manuscript

Compiles and writes the manuscript to output_path (relative = inside the project folder) as md, html, docx, epub, or rtf (standard "Shunn" manuscript; give author/contact/pen_name). Optional audience and include_synopses. Refused while any document is marked "Exclude from AI". Note: rich-text bodies authored in the desktop editor export as stored; the desktop's rich-text-to-Markdown pass is not available in this headless server.

ParameterTypeRequiredDescription
audiencestringnoExport only this audience's view.
authorstringnortf only: the author's legal name.
contactstringnortf only: the title-page contact block.
formatstringyesmd, html, docx, epub, or rtf.
include_synopsesbooleannoEmit each document's synopsis.
output_pathstringyesWhere to write the file.
pen_namestringnortf only: the byline pen name.
titlestringnoThe book title (default: project name).

Example call

{
  "name": "export_manuscript",
  "arguments": {
    "format": "<format>",
    "output_path": "<output_path>"
  }
}

export_reference_grammar

Compiles the language into a shareable reference grammar as Markdown: sections for its sound inventory, phonotactics, orthography, grammar (typology, word order, paradigm tables, pronouns, numbers), and a sorted lexicon appendix.

ParameterTypeRequiredDescription
languagestringyesThe language's name.

Example call

{
  "name": "export_reference_grammar",
  "arguments": {
    "language": "<language>"
  }
}

export_screenplay

Exports one screenplay document to output_path as Fountain (default) or Final Draft (.fdx). The document's kind must be screenplay; its body is Fountain source.

ParameterTypeRequiredDescription
documentstringyesThe screenplay document's title.
formatstringnofountain (default) or fdx.
output_pathstringyesWhere to write the file (relative = in the project folder).

Example call

{
  "name": "export_screenplay",
  "arguments": {
    "document": "<document>",
    "output_path": "<output_path>"
  }
}

export_website

Builds the browsable static website (index with client-side search, chapter pages, and the world-bible codex pages) into output_dir. Optional audience and site_title. Refused while any document is marked "Exclude from AI"; excluded entities are omitted. Map pages need the desktop exporter and are not generated here.

ParameterTypeRequiredDescription
audiencestringnoPublish only this audience's view.
output_dirstringyesThe folder to write the site into.
site_titlestringnoThe site title (default: project name).

Example call

{
  "name": "export_website",
  "arguments": {
    "output_dir": "<output_dir>"
  }
}

extract_document_text

Returns the plain text of a document file on disk — a PDF, a Word .docx, or a .txt/.md — so you can read a manuscript and build a project from it (create entities for its characters/places/items, add its timeline events, bring in its chapters) using the create_* tools. This does NOT run the app's automatic conversion; you are the intelligence. Reads document text only, never other files.

ParameterTypeRequiredDescription
pathstringyesThe .pdf, .docx, or .txt/.md file to read.

Example call

{
  "name": "extract_document_text",
  "arguments": {
    "path": "<path>"
  }
}

generate_vocabulary

Coins auto-glossed, semantic-field-tagged words for a set of meanings and appends the new ones to the language's lexicon (existing headwords are never duplicated). Give a "meanings" array, or use_swadesh=true to seed the ~100-word Swadesh core vocabulary. Deterministic per "seed".

ParameterTypeRequiredDescription
languagestringyesThe language's name.
meaningsarraynoThe meanings to coin words for.
seedintegernoRandom seed for reproducibility (default 1).
semantic_fieldstringnoA field/tag to record on the coined words.
use_swadeshbooleannoSeed the built-in Swadesh core-vocabulary list.

Example call

{
  "name": "generate_vocabulary",
  "arguments": {
    "language": "<language>"
  }
}

generate_words

Coins candidate words from a language's phonology (structured phonotactics if set, else its consonant/vowel/pattern strings). Deterministic per "seed". The words are NOT added -- pass the ones you keep to add_lexicon_words.

ParameterTypeRequiredDescription
countintegernoHow many words to coin (1-100; default 10).
languagestringyesThe language's name.
seedintegernoRandom seed for reproducibility (default 1).

Example call

{
  "name": "generate_words",
  "arguments": {
    "language": "<language>"
  }
}

get_analytics

Compiles the manuscript-health report as Markdown: word statistics, the dialogue/narration split, readability, point-of-view balance, a style-issue summary, and world-coverage counts (aggregates only -- no prose).

No parameters.

Example call

{
  "name": "get_analytics",
  "arguments": {}
}

get_beat_sheet

Shows the applied story-structure beat sheet: each beat, its target position in the story, and the scene assigned to it (or that it is still unfilled).

No parameters.

Example call

{
  "name": "get_beat_sheet",
  "arguments": {}
}

get_language

With no name, lists the project's constructed languages. With a name, shows the language's phonology, syllable bounds, lexicon size with sample entries, and grammar notes.

ParameterTypeRequiredDescription
namestringnoThe language to detail (omit to list all).

Example call

{
  "name": "get_language",
  "arguments": {
    "name": "<name>"
  }
}

get_random_table

Reads a random table: its title, effective die size, and each weighted outcome with the die range that produces it.

ParameterTypeRequiredDescription
tablestringyesThe random table's title.

Example call

{
  "name": "get_random_table",
  "arguments": {
    "table": "<table>"
  }
}

get_statblock

With no title, lists the creature/NPC stat blocks. With a title, shows the block's game system, statistics, actions, and notes.

ParameterTypeRequiredDescription
titlestringnoThe block to detail (omit to list all).

Example call

{
  "name": "get_statblock",
  "arguments": {
    "title": "<title>"
  }
}

gloss_text

Produces a three-line interlinear (Leipzig) gloss of a passage written in the language: the source words, a morpheme gloss (inflected words show as root-FEATURE using the grammar's paradigms), and a free translation.

ParameterTypeRequiredDescription
languagestringyesThe language's name.
textstringyesA passage written in the language.

Example call

{
  "name": "gloss_text",
  "arguments": {
    "language": "<language>",
    "text": "<text>"
  }
}

import_file

Imports an external file or folder into the manuscript as one undo step: plain text / Markdown, an HTML file (.html/.htm, split into a document tree by headings), a PDF (.pdf, its extracted text), an Obsidian vault, a Notion export, yWriter (.yw6/.yw7), a Scrivener project, a Word document (.docx), a Manuskript project, or BibTeX (.bib, into the source library). "format" overrides auto-detection. "split" controls how a text/HTML/PDF file is broken into documents; "parent" nests the whole import under an existing document.

ParameterTypeRequiredDescription
formatstringnotext, html, pdf, obsidian, ywriter, scrivener, word, notion, manuskript, or bibtex (omit to auto-detect).
parentstringnoTitle of an existing document to nest the import under (the imported root becomes its child).
pathstringyesThe file or folder to import.
splitstringnoFor a text/HTML/PDF file: "none" = one document, "auto" = split at the shallowest heading, or "h1".."h6" = split at that heading level (omit for the format's default). Ignored by folder/project imports.

Example call

{
  "name": "import_file",
  "arguments": {
    "path": "<path>"
  }
}

list_plot_threads

Lists the plot threads and character arcs: colour, the character whose arc a thread is, how many scenes tag it, and its description.

No parameters.

Example call

{
  "name": "list_plot_threads",
  "arguments": {}
}

list_sources

Lists the project's bibliographic sources: title, kind, citation key, author, and date.

No parameters.

Example call

{
  "name": "list_sources",
  "arguments": {}
}

list_tasks

Lists tasks grouped by kanban board: done state, status column, priority, and due date. Optional board filter; pass include_done=false to hide completed tasks.

ParameterTypeRequiredDescription
boardstringnoOnly this board's tasks.
include_donebooleannoInclude completed tasks (default true).

Example call

{
  "name": "list_tasks",
  "arguments": {
    "board": "<board>",
    "include_done": true
  }
}

roll

Rolls dice ("3d6+2", "1d20", "4d6kh3") or on a named random table -- exactly one of dice/table. A table roll expands nested references in the outcome: "[[2d6]]" becomes a rolled total and "[[Other Table]]" rolls on that sub-table (recursively). Deterministic when a seed is given; the seed used is always reported so any roll can be replayed.

ParameterTypeRequiredDescription
dicestringnoA dice expression (NdM, kh/kl, +/-).
seedintegernoA non-negative seed for a replayable roll.
tablestringnoA random table's title.

Example call

{
  "name": "roll",
  "arguments": {
    "dice": "<dice>",
    "seed": 0
  }
}

save_content_pack

Writes the chosen objects (addressed by title) plus every category they reference as a content-pack folder at output_dir, with an optional manifest (name/description/author/version). The project itself is not changed.

ParameterTypeRequiredDescription
authorstringnoWho made it.
descriptionstringnoWhat the pack contains.
namestringnoThe pack's name.
objectsarrayyesTitles of the objects to include.
output_dirstringyesThe folder to write the pack into.
versionstringnoA version label.

Example call

{
  "name": "save_content_pack",
  "arguments": {
    "objects": [],
    "output_dir": "<output_dir>"
  }
}

set_document_threads

Tags a scene (document) with the plot threads it advances, by thread name. The list REPLACES the scene's current threads; pass [] to clear them. Each name must be an existing thread (create_plot_thread first) so a scene never dangles a dead thread.

ParameterTypeRequiredDescription
documentstringyesThe scene/document title.
threadsarrayyesThe plot-thread names to tag it with.

Example call

{
  "name": "set_document_threads",
  "arguments": {
    "document": "<document>",
    "threads": []
  }
}

set_entity_threads

Tags a codex entity with the plot threads it belongs to (a character's arc, a faction's storyline), by thread name. The list REPLACES the entity's current threads; pass [] to clear them. Each name must be an existing thread. Counts toward list_plot_threads.

ParameterTypeRequiredDescription
entitystringyesThe entity's name or alias.
threadsarrayyesThe plot-thread names to tag it with.

Example call

{
  "name": "set_entity_threads",
  "arguments": {
    "entity": "<entity>",
    "threads": []
  }
}

set_event_threads

Tags a timeline event with the plot threads it belongs to, by thread name. The list REPLACES the event's current threads; pass [] to clear them. Each name must be an existing thread (create_plot_thread first). Counts toward list_plot_threads.

ParameterTypeRequiredDescription
eventstringyesThe timeline event's title.
threadsarrayyesThe plot-thread names to tag it with.

Example call

{
  "name": "set_event_threads",
  "arguments": {
    "event": "<event>",
    "threads": []
  }
}

set_grammar

Sets a language's structured grammar (replacing any existing): "typology" (isolating/agglutinative/fusional/polysynthetic), "word_order" (SVO/SOV/VSO/VOS/OVS/OSV/free), "adjective_position" (before/after), free "notes", inflection "paradigms" ({name, applies_to, rules:[{feature, type, affix}]} where type is prefix/suffix/circumfix/replacement/none), "pronouns" ({label, form, gloss}), and a "number_system" ({base, formation_note, digits:[{value, word}]}). gloss_text and spell_number then use it.

ParameterTypeRequiredDescription
adjective_positionstringnobefore or after (the noun).
languagestringyesThe language's name.
notesstringnoFree-form structured-grammar notes.
number_systemobjectno{base, formation_note, digits:[{value, word}]}.
paradigmsarraynoInflection paradigms.
pronounsarraynoPersonal pronouns.
typologystringnoMorphological typology token.
word_orderstringnoConstituent order token (e.g. SOV).

Example call

{
  "name": "set_grammar",
  "arguments": {
    "language": "<language>"
  }
}

set_orthography

Sets a language's romanization schemes (replacing any existing). Each scheme is {name, mappings:[{phoneme, grapheme}]}; an optional "default_scheme" names the preferred one.

ParameterTypeRequiredDescription
default_schemestringnoName of the preferred scheme.
languagestringyesThe language's name.
schemesarrayyesThe romanization schemes.

Example call

{
  "name": "set_orthography",
  "arguments": {
    "language": "<language>",
    "schemes": []
  }
}

set_phonotactics

Sets a language's structured phonotactics (replacing any existing): named sound "categories" ({symbol, members}) that syllable "templates" ({shape, weight}) draw on, plus optional "rewrite_rules" ({match, replacement}), "forbidden_sequences", vowel "harmony_groups" (arrays of vowels), a "dropoff" (equiprobable/slow/medium/fast), and a "monosyllable_weight". generate_words then obeys them.

ParameterTypeRequiredDescription
categoriesarraynoNamed sound categories.
dropoffstringnoequiprobable / slow / medium / fast.
forbidden_sequencesarraynoSubstrings a word may never contain.
harmony_groupsarraynoVowel-harmony groups.
languagestringyesThe language's name.
monosyllable_weightintegernoExtra bias toward one-syllable words.
rewrite_rulesarraynoPost-generation rewrites.
templatesarraynoWeighted syllable templates.

Example call

{
  "name": "set_phonotactics",
  "arguments": {
    "language": "<language>"
  }
}

set_sound_changes

Sets a language's diachronic sound-change rulesets (replacing any existing). Each ruleset is {name, rules:[{target, replacement, environment}]} in SCA2 style; store them here, then evolve a daughter with derive_daughter_language.

ParameterTypeRequiredDescription
languagestringyesThe language's name.
rulesetsarrayyesThe named, ordered sound-change rulesets.

Example call

{
  "name": "set_sound_changes",
  "arguments": {
    "language": "<language>",
    "rulesets": []
  }
}

set_writing_system

Sets a language's constructed script/conscript (replacing any existing): a "name", "direction" (ltr/rtl/ttb), "glyphs" ({name, grapheme, svg_path} -- svg_path is the outline in a 100x100 box), and "ligatures" ({sequence, glyph_name}).

ParameterTypeRequiredDescription
directionstringnoltr / rtl / ttb.
glyphsarraynoThe glyphs.
languagestringyesThe language's name.
ligaturesarraynoLigature rules.
namestringnoThe script's display name.

Example call

{
  "name": "set_writing_system",
  "arguments": {
    "language": "<language>"
  }
}

spell_number

Spells an integer in the language's number system (its base and numeral words), composing multi-digit numbers from the place words.

ParameterTypeRequiredDescription
languagestringyesThe language's name.
valueintegeryesThe non-negative integer to spell.

Example call

{
  "name": "spell_number",
  "arguments": {
    "language": "<language>",
    "value": 0
  }
}

translate

Translates text word-by-word through a constructed language's lexicon. direction: to_conlang (default) or from_conlang. Words missing from the lexicon pass through verbatim and are reported so they can be coined.

ParameterTypeRequiredDescription
directionstringnoto_conlang or from_conlang.
languagestringyesThe language's name.
textstringyesThe passage to translate.

Example call

{
  "name": "translate",
  "arguments": {
    "language": "<language>",
    "text": "<text>"
  }
}

update_language

Edits a language's name, sound system, syllable bounds, or grammar notes. Only the fields given change; new_name renames it. An explicit "lexicon" REPLACES the whole dictionary -- use add_lexicon_words to append without disturbing existing words.

ParameterTypeRequiredDescription
consonantsstringnoSpace-separated consonant phonemes.
grammar_notesstringnoFree-form grammar notes (Markdown permitted).
languagestringyesThe language to edit (its current name).
lexiconarraynoReplaces the whole dictionary (each entry needs word+gloss).
max_syllablesintegernoMost syllables per generated word.
min_syllablesintegernoFewest syllables per generated word (>=1).
new_namestringnoA new display name.
patternsstringnoSpace-separated syllable patterns (C/V slots).
vowelsstringnoSpace-separated vowel phonemes.

Example call

{
  "name": "update_language",
  "arguments": {
    "language": "<language>"
  }
}

update_plot_thread

Updates one plot thread (addressed by name). Sparse: new_name, color ("#rrggbb", "" = default), description, character (an entity name to bind the thread as that character's arc, "" to clear).

ParameterTypeRequiredDescription
characterstringnoThe entity (name or alias) whose arc this thread is.
colorstringnoA CSS hex swatch like "#c0392b".
descriptionstringnoNew notes for the thread.
new_namestringnoA new name.
threadstringyesThe thread's current name.

Example call

{
  "name": "update_plot_thread",
  "arguments": {
    "thread": "<thread>"
  }
}

update_random_table

Sparse update of a random table: "new_title" renames it; "entries" replaces the whole weighted-outcome list. One undo step.

ParameterTypeRequiredDescription
entriesarraynoReplacement weighted outcomes.
new_titlestringnoRename the table to this.
tablestringyesThe table's title.

Example call

{
  "name": "update_random_table",
  "arguments": {
    "table": "<table>"
  }
}

update_source

Updates one source (addressed by citation key or title). Sparse: new_title, type, citation_key replace their values; "fields" merges the provided CSL keys (an empty value removes that key).

ParameterTypeRequiredDescription
citation_keystringnoA new citation key.
fieldsobjectnoCSL variable name -> value edits; "" removes a key.
new_titlestringnoA new title.
sourcestringyesThe source's citation key or title.
typestringnoA new bibliographic kind token.

Example call

{
  "name": "update_source",
  "arguments": {
    "source": "<source>"
  }
}

update_statblock

Edits an existing stat block. Only the fields given change; new_title renames it. A supplied "stats" or "actions" array REPLACES that whole list (omit it to leave the list untouched); system and notes are free text.

ParameterTypeRequiredDescription
actionsarraynoReplaces the named actions / attacks / traits.
new_titlestringnoA new creature/NPC name.
notesstringnoFreeform tactics / lore notes.
statsarraynoReplaces the labelled statistics.
systemstringnoA free game-system label.
titlestringyesThe block to edit (its current name).

Example call

{
  "name": "update_statblock",
  "arguments": {
    "title": "<title>"
  }
}

update_task

Updates one task (addressed by title). Sparse: only the provided keys change -- new_title, description, status (board column), board ("" = the default board), done, priority (low|normal|high|urgent), due (YYYY-MM-DD, "" clears). For a submission-tracker task the submission-pipeline fields submitted_to / submission_type / submitted_on / submission_notes are set here too (the response-due date IS "due" and the pipeline stage IS "status").

ParameterTypeRequiredDescription
boardstringnoThe board to move the task to.
descriptionstringnoNew free-text details.
donebooleannoThe new completion state.
duestringnoYYYY-MM-DD, or "" to clear.
new_titlestringnoA new title.
prioritystringnolow, normal, high, or urgent.
statusstringnoThe new board column, e.g. "Doing".
submission_notesstringnoSubmission notes (response, terms, fee).
submission_typestringnoagent, publisher, magazine, contest, or other.
submitted_onstringnoDate submitted (YYYY-MM-DD, "" clears).
submitted_tostringnoSubmission tracker: who the work was sent to (empty clears).
taskstringyesThe task's current title.

Example call

{
  "name": "update_task",
  "arguments": {
    "task": "<task>"
  }
}