# io.github.flukeatzerocool/holonovel (npm · holonovel)

Holonovel MCP server: world-model base for tabletop RPG play (rooms, parser, narrative tools).

- Trust score: 75/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `holonovel`: 75/100 (this document), [markdown](https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel.md), [page](https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel)

## Channel facts

- Registry: `npm`
- Package: `holonovel`
- Version: `2026.9.7`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 95 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to flukeatzerocool/holonovel).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 9 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 53/100
  - 14% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6095 tokens (~103/item across 59 items; 28 tools + 31 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: the tool surface changed between 2026.8.22 and 2026.9.7: 109 tool removals, 0 breaking changes, 22 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "command" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.flukeatzerocool/holonovel MCP server?

io.github.flukeatzerocool/holonovel runs locally as an npm package, launched with npx -y holonovel. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add flukeatzerocool-holonovel -- npx -y holonovel
```

### Cursor

```json
{
  "mcpServers": {
    "flukeatzerocool-holonovel": {
      "command": "npx",
      "args": [
        "-y",
        "holonovel"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "flukeatzerocool-holonovel": {
      "command": "npx",
      "args": [
        "-y",
        "holonovel"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add flukeatzerocool-holonovel -- npx -y holonovel
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "flukeatzerocool-holonovel": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "holonovel"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add flukeatzerocool-holonovel --command npx --arg -y --arg holonovel
```

### Hermes

```yaml
mcp_servers:
  flukeatzerocool-holonovel:
    command: "npx"
    args: ["-y", "holonovel"]
```

### Netclaw

```json
{
  "McpServers": {
    "flukeatzerocool-holonovel": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "holonovel"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add flukeatzerocool-holonovel -t stdio -c npx -a -y holonovel
```

### Other

```json
{
  "mcpServers": {
    "flukeatzerocool-holonovel": {
      "command": "npx",
      "args": [
        "-y",
        "holonovel"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-07 (score 75, 0)

- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: 14 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 2026.9.4 → 2026.9.7

### 2026-09-04 (score 75, +15)

- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: 14 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: pass → fail
- [functional] Package version: 2026.9.3 → 2026.9.4

### 2026-09-03 (score 60, +6)

- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional regression] Schema quality: 67 → 91
- [functional improvement] Dependency health: unverified → 0.85
- [functional] Schema quality: excellent → good
- [functional] Package version: 2026.9.2 → 2026.9.3

### 2026-09-02 (score 54, −10)

- [security regression] Malware scan: pass → unverified
- [security regression] Known CVEs: pass → unverified
- [security regression] Stability: 0.27 → fail
- [security improvement] Provenance: fail → pass
- [security] The attested source repository moved: flukeatzerocool/holonovel
- [functional regression] Schema quality: 33 → 67
- [functional regression] Dependency health: 0.85 → unverified
- [functional improvement] Tool coverage: 0% → 100%
- [functional] Schema quality: fair → excellent
- [functional] Package version: 2026.8.22 → 2026.9.2

### 2026-09-01 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-31 (score 63, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-26 (score 60, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-08-25 (score 59, +15)

- [security improvement] Malware scan: unverified → pass

## MCP tools (28)

### `set_badge` (~91 tokens)

Set Active Badge

Switch the active badge to player, game_master, observer, or none (Editor), gating tool access server-side for the session; always callable. Use when: entering the story, spectating, or stepping away to edit. Do NOT use when: answering a pending workflow decision — use respond.

Input parameters:

- `badge` (string, required): The badge to activate: player, game_master, observer, or none (Editor).

### `respond` (~104 tokens)

Respond to Workflow Decision

Answer a pending workflow decision, atomically draining it and persisting the outcome to the Novel. Use when: the server emitted a [NEED_INPUT] prompt and the caller must choose. Do NOT use when: no decision is pending — use set_badge or a state tool instead.

Input parameters:

- `decision` (string, required): The canonical decision text the workflow is waiting on.
- `option` (string, required): The chosen option, or 'cancel' to abort the workflow and restore its snapshot.

### `undo` (~47 tokens)

Undo

Undo the most recent state mutation, restoring the prior per-badge snapshot. Use when: reverting a mistaken or unwanted change. Do NOT use when: re-applying an undone change — use redo.

### `redo` (~55 tokens)

Redo

Re-apply the most recently undone mutation, restoring the per-badge snapshot that undo removed. Use when: an undo was issued by mistake and the change should be restored. Do NOT use when: reverting a new change — use undo.

### `help` (~148 tokens)

Help and Tool Discovery

Show the available tools grouped by category (badge-filtered) or reassign a tool's category. Use when: the caller needs to discover tools, find one by keyword, or override a tool's category for a session. Do NOT use when: reading the current badge's guidance — use the badge_briefing prompt.

Input parameters:

- `action` (string): list (default) or category (reassign a tool's category).
- `category` (string|null): New category label, or null/empty to restore default (category).
- `query` (string): Optional search term matched against tool name, description, and title.
- `tool_name` (string): Registered tool name to reassign (category).

### `character` (~406 tokens)

Character

Manage player characters: create (quick or step-by-step), stage to roster, import, render a sheet, set the active entity, set personality/voice, send player signals, remove, or list roster characters. Use when: working with player characters. Do NOT use when: managing NPCs — use npc.

Input parameters:

- `ability_scores`: Ability scores (create).
- `action` (string, required): create, stage, import, sheet, set_active, personality, voice, signal, remove, roster_remove, or roster_list.
- `background` (string): Backstory (create/personality).
- `classes`: Class levels (create).
- `description` (string): Narrative description (create/personality).
- `details` (object): Grouped mechanical details (create).
- `entity_id` (string): Entity identifier (stage/sheet/set_active/personality/voice/remove).
- `equipment`: Starting equipment (create).
- `examples` (array): Voice examples (voice).
- `feats`: Feats (create).
- `format` (string): Output format (sheet).
- `goals` (string): Character goals (create/personality).
- `name` (string): Character name; omit (create) to begin step-by-step.
- `personality` (object): Grouped personality fields (create).
- `pov` (string): Point-of-view mode (set_active).
- `roster_id` (string): Roster identifier (import/roster_remove).
- `seed` (string): Deterministic seed (create).
- `signal` (string): Feedback category (signal).
- `skills`: Trained skills (create).
- `species` (string): Species (create).
- `stage_to_roster` (boolean): Also stage into the roster (create).
- `stat_method` (string): Stat-generation method (create).
- `talents`: Talents (create).
- `value` (string): Feedback text (signal).
- `voice` (string): Voice and speech pattern (create/personality).

### `command` (~150 tokens)

Command

Execute a parser command, resolve a spatial intent, or suggest actions from intent. Use when: a player or narrator takes a physical action (execute), needs the outcome of a movement without mutating state (resolve), or wants intent mapped to tool calls (suggest). Do NOT use when: the GM inspects the model directly — use world or lore.

Input parameters:

- `action` (string): execute (parser), resolve (non-mutating intent), or suggest (intent → tool calls). Defaults to execute.
- `command` (string): The natural-language command (execute).
- `entity_id` (string): Optional entity context (suggest).
- `intent` (string): The intent to resolve or map (resolve/suggest).

### `world` (~574 tokens)

World

Manage the world model — rooms, things, and exits. Use when: creating, updating, removing, or bulk-converting locations and objects. Do NOT use when: navigating the world — use command (action: execute) or command (action: resolve).

Input parameters:

- `action` (string, required): create_room, update_room, remove_room, create_thing, update_thing, remove_thing, create_exit, remove_exit, convert, or generate.
- `climbable` (boolean): When true the thing can be climbed (create_thing/update_thing).
- `description` (string): Optional description (create/update).
- `direction` (string): Direction (create_exit/remove_exit).
- `drinkable` (boolean): When true the thing can be drunk (create_thing/update_thing).
- `edible` (boolean): When true the thing can be eaten (create_thing/update_thing).
- `enterable` (boolean): When true the thing can be entered (create_thing/update_thing).
- `fixed` (boolean): When true the thing cannot be taken (create_thing/update_thing).
- `kind` (string): Optional thing kind (create_thing).
- `lit` (boolean): When true the thing is lit (create_thing/update_thing).
- `location` (string): Optional containing room or thing (create_thing/update_thing).
- `location_type` (string): Where the thing is placed (create_thing).
- `lockable` (boolean): When true the thing can be locked (create_thing/update_thing).
- `locked` (boolean): When true the thing starts locked (create_thing/update_thing).
- `name` (string): Room/thing name (create/update/remove).
- `openable` (boolean): When true the thing can be opened (create_thing/update_thing).
- `read_text` (string): Text revealed when the thing is read (create_thing/update_thing).
- `readable` (boolean): When true the thing can be read (create_thing/update_thing).
- `room` (string): Source room (create_exit/remove_exit).
- `room_a` (string): Source room (create_exit).
- `room_b` (string): Destination room (create_exit).
- `seed` (string): Deterministic seed (generate).
- `source` (string): Hybrid world-model source text (convert).
- `switchable` (boolean): When true the thing can be switched (create_thing/update_thing).
- `switched_on` (boolean): When true the thing is switched on (create_thing/update_thing).
- `transparent` (boolean): When true the thing is transparent (create_thing/update_thing).
- `wearable` (boolean): When true the thing can be worn (create_thing/update_thing).

### `combat` (~142 tokens)

Combat

Manage combat encounters in the active Novel. Use when: starting, advancing, ending a fight, or changing its participants. Do NOT use when: applying a status effect — use condition (action: apply).

Input parameters:

- `action` (string, required): init, advance, end, add_participant, remove_participant, or status.
- `dangers` (array): Optional non-entity combatants (init).
- `outcome` (string): Optional text describing how combat ended (end).
- `participant_id` (string): Entity identifier (add_participant/remove_participant).
- `participants` (array): Entity identifiers participating (init).
- `seed` (string): Optional deterministic seed (init).

### `scene` (~367 tokens)

Scene

Manage the active scene and its narrative framing. Use when: setting scene state (description, location, type), the narrative directive, party presence, AI autonomy, or when offering choices or resolving an oracle roll. Do NOT use when: recording a story beat — use story (action: record).

Input parameters:

- `action` (string, required): set, directive, presence, autonomy, choices, or oracle.
- `adventure_scene` (string|null): Adventure-scene waypoint anchor; empty or null clears (set).
- `allow_freeform` (boolean): Allow free-form response (choices).
- `atmosphere` (string): Atmosphere (set).
- `beat` (string): Story-beat tag (set).
- `choices` (array): List of choices (choices).
- `confirmation` (string): Confirmation mode (autonomy).
- `context` (object): Context for the choice (choices).
- `creativity` (string): Creativity (autonomy).
- `description` (string): Scene description (set).
- `directive` (string): Narrative directive (directive).
- `entity_ids` (array): Entities present (presence).
- `fast_forward` (object): Narrative fast-forward (set).
- `level` (string): Autonomy level (autonomy).
- `likelihood` (string): Likelihood tier (oracle).
- `location` (string): Scene location (set).
- `prompt` (string): Choice prompt (choices).
- `question` (string): Question to resolve (oracle).
- `safety` (string): Safety tier (autonomy).
- `scene_type`: Scene-type tag or array (set).
- `seed` (string): Deterministic seed (oracle).
- `skip_transition_hook` (boolean): Skip the scene-transition hook (set).
- `time_of_day` (string): Time of day (set).

### `npc` (~162 tokens)

NPC

Manage non-player characters in the active Novel. Use when: introducing, revising, removing, listing, or reading NPCs. Do NOT use when: managing player characters — use character (action: create/import/sheet).

Input parameters:

- `action` (string, required): create, update, remove, list, or get.
- `description` (string): Optional description.
- `disposition` (string): Optional disposition.
- `goals` (string): Optional goals.
- `location` (string): Optional location.
- `mind` (object): Optional GM-only NPC mind (create/update).
- `name` (string): NPC name (create).
- `npc_id` (string): NPC identifier (update/remove/get).
- `ruleset_reference` (string): Optional ruleset stat-block reference (create).

### `countdown` (~176 tokens)

Countdown

Manage countdown timers in the active Novel. Use when: starting, advancing, removing, or listing clocks. Do NOT use when: tracking a vow's progress — use vow (action: milestone).

Input parameters:

- `action` (string, required): set, advance, remove, or list.
- `direction` (string): Optional direction: increment or decrement (set).
- `name` (string): Countdown name (set/advance/remove).
- `on_scene_transition` (boolean): When true, advance on each scene transition (set).
- `scope` (string): Optional scope name (set).
- `ticks` (number): Starting ticks (set).
- `triggers` (array): Optional world-model triggers (set).
- `type` (string): round or narrative (set).
- `world_effect` (object): Optional world-model effect applied when the countdown fires (set).

### `lore` (~283 tokens)

Lore

Manage the active Novel's lore entries (world facts the narrator recalls). Use when: creating, revising, removing, toggling, grouping, suggesting, listing, exporting, or importing lore. Do NOT use when: recording a story beat — use story (action: record).

Input parameters:

- `action` (string, required): set, update, remove, toggle, group, suggest, list, get, export, import, set_secret, reveal, secret_list, or knowledge.
- `badge_scope` (string): game_master or shared (set/update).
- `content` (string): Lore content (set/update).
- `data` (string): JSON or Markdown lorebook data (import).
- `entity_id` (string): Entity to reveal to / whose knowledge to read (reveal/knowledge).
- `format` (string): Optional output format (export).
- `group` (string|null): Group name, or null to clear (set/update/group).
- `key` (string): Lore key (set/update/remove/toggle/group/get).
- `mode` (string): dry-run, merge, or replace (import).
- `priority` (number): Optional priority (set/update).
- `sticky` (number): Optional sticky weight (set/update).
- `triggers` (array): Optional recall triggers (set/update).
- `world_target` (string): Optional world-model target reference (set/set_secret).

### `condition` (~100 tokens)

Condition

Manage mechanical or narrative conditions on entities. Use when: applying, removing, or listing conditions. Do NOT use when: recording damage or combat state — use combat (action: init/advance).

Input parameters:

- `action` (string, required): apply, remove, or list.
- `condition` (string): The condition name (apply/remove).
- `entity_id` (string): The entity to affect (apply/remove).
- `rounds` (number): Optional duration in rounds (apply).

### `faction` (~130 tokens)

Faction

Manage organizations in the active Novel. Use when: creating, revising, removing, or listing factions and their progress clocks. Do NOT use when: tracking a faction's territory rooms — use world (action: create_room).

Input parameters:

- `action` (string, required): create, update, remove, or list.
- `description` (string): Optional description.
- `faction_id` (string): Faction identifier (update/remove).
- `goals` (array): Optional goals.
- `name` (string): Faction name (create).
- `resources` (string): Optional resources.
- `territory` (array): Optional territory names.

### `relationship` (~131 tokens)

Relationship

Manage directed relationships between entities, NPCs, or factions. Use when: setting or reading how two parties relate. Do NOT use when: tracking faction progress — use faction (action: update).

Input parameters:

- `action` (string, required): set or get.
- `description` (string): Optional description (set).
- `entity_a` (string): The source entity (set).
- `entity_b` (string): The target entity (set).
- `entity_id` (string): Entity whose relationships to list (get).
- `type` (string): Relationship type (set).
- `value` (number): Optional relationship strength (set).

### `vow` (~199 tokens)

Vow

Track narrative vows, quests, and obligations with milestones. Use when: setting, advancing, resolving, forsaking, or listing vows. Do NOT use when: starting a clock timer — use countdown (action: set).

Input parameters:

- `action` (string, required): set, milestone, resolve, forsake, or list.
- `consequences` (string): Optional consequences (resolve).
- `description` (string): Vow description (set).
- `difficulty` (string): troublesome, dangerous, formidable, extreme, or epic (set).
- `name` (string): Vow name (set).
- `outcome` (string): The resolution outcome (resolve).
- `parties` (array): Parties bound by the vow (set).
- `reason` (string): The reason for abandoning (forsake).
- `scope` (string): gm, shared, faction, or party (set).
- `vow_name` (string): Vow name (milestone/resolve/forsake).

### `fate` (~361 tokens)

Fate

Resolve Fate-style actions with Fudge dice, aspects, Fate points, and stress. Use when: rolling 4dF against a difficulty, invoking or compelling aspects, spending or refreshing Fate points, or marking stress and consequences. Do NOT use when: resolving a d20 skill check — use the bound ruleset's roll tools or command (action: resolve).

Input parameters:

- `action` (string, required): roll, aspect, fate_point, or stress.
- `amount` (number): Fate points to spend or grant (fate_point); defaults to 1.
- `consequence` (string): Consequence to record or clear (stress).
- `dice` (string): Fudge dice notation (roll), e.g. '4dF'; defaults to 4dF.
- `difficulty` (number): Opposition to beat (roll); defaults to 0.
- `entity_id` (string): Entity or NPC id (aspect/fate_point/stress).
- `modifier` (number): Skill rating added to the roll (roll).
- `name` (string): Aspect name (aspect); consequence label (stress).
- `op` (string): Sub-operation: aspect (create, invoke, compel, remove, list), fate_point (spend, grant, refresh, list), or stress (mark, clear, list).
- `seed` (string): Deterministic seed (roll).
- `shifts` (number): Shifts to mark on a stress track (stress); defaults to 1.
- `skill` (string): Skill name for the roll label (roll).
- `target` (string): Aspect target: 'scene' or an entity/NPC id (aspect); defaults to 'scene'.
- `track` (string): Stress track to mark or clear (stress).

### `ironsworn` (~248 tokens)

Ironsworn

Resolve Ironsworn-style actions: momentum, the action-roll move framework, and progress tracks. Use when: setting or burning momentum, rolling a move against two challenge dice, or marking and testing a progress track. Do NOT use when: managing vows — use vow (action: set).

Input parameters:

- `action` (string, required): momentum, move, or progress.
- `adds` (number): Stat and bonuses added to the action die (move).
- `amount` (number): Amount to set/gain/lose (momentum); defaults to 1.
- `burn` (boolean): Burn momentum to replace the action score (move).
- `entity_id` (string): Entity or NPC id (momentum, move burn).
- `name` (string): Move name (move) or progress-track name (progress).
- `op` (string): Sub-operation: momentum (set, gain, lose, reset, list), progress (create, mark, test, list).
- `rank` (string): Progress-track rank (progress).
- `seed` (string): Deterministic seed (move, progress test).
- `ticks` (number): Progress to mark (progress); defaults to 1.

### `forged` (~252 tokens)

Forged in the Dark

Resolve Blades in the Dark-style actions: action rolls with position and effect, stress and trauma with resistance, and downtime recovery. Use when: rolling an action against the highest die, marking or resisting stress, or recovering during downtime. Do NOT use when: tracking a progress clock — use countdown (action: set).

Input parameters:

- `action` (string, required): action_roll, stress, or downtime.
- `amount` (number): Stress to mark or clear (stress/downtime); defaults to 1.
- `cost` (number): Stress cost to resist (stress); defaults to 2.
- `dice` (number): Dice pool size (action_roll); defaults to 2.
- `effect` (string): Effect (action_roll); defaults to standard.
- `entity_id` (string): Entity or NPC id (stress/downtime).
- `name` (string): Action name (action_roll) or consequence label (stress resist).
- `op` (string): Sub-operation: stress (mark, clear, resist, list), downtime (recover, indulge_vice, list).
- `position` (string): Position (action_roll); defaults to risky.
- `seed` (string): Deterministic seed (action_roll).

### `story` (~167 tokens)

Story

Manage the story journal — typed narrative memories (decision, moment, revelation, bond, consequence). Use when: recording, editing, removing, listing, or promoting story beats. Do NOT use when: recording a durable world fact — use lore (action: set).

Input parameters:

- `action` (string, required): record, update, remove, list, or promote.
- `entry` (string): Story entry text (record/update).
- `filter` (string): Optional type filter (list).
- `index` (number): Story entry index (update/remove/promote).
- `key` (string): Optional lore key (promote).
- `limit` (number): Optional page size (list).
- `offset` (number): Optional pagination offset (list).
- `type` (string): Story entry type (record/update).

### `note` (~140 tokens)

Note

Manage Novel-scoped scratch notes, badge-scoped to game_master (default), player, or shared. Use when: storing scratch state the caller will reuse. Do NOT use when: recording durable world facts — use lore (action: set).

Input parameters:

- `action` (string, required): set, remove, list, set_server, remove_server, or list_server.
- `badge_scope` (string): game_master, player, or shared (set).
- `content` (string): The note content (set/set_server).
- `key` (string): The note key (set/remove/set_server/remove_server).
- `narrative_tag` (string): Optional narrative tag (set_server).

### `session` (~169 tokens)

Session

Manage session-level surfaces and diagnostics. Use when: recapping recent activity (recap), setting output verbosity (verbosity), reordering briefing sections (briefing_order), compressing the audit log (compress), or reporting server health (health). Do NOT use when: recording story content — use story (action: record).

Input parameters:

- `action` (string, required): recap, verbosity, briefing_order, compress, health, or subscribe.
- `gm_notes` (string): GM-only free-text notes returned only to the Game Master badge (recap).
- `max_entries` (number): Maximum audit entries (compress).
- `mode` (string): normal or terse (verbosity).
- `sections` (array): Ordered list of briefing sections (briefing_order).
- `topics` (array): Notification topics to subscribe to (subscribe).

### `adventure` (~136 tokens)

Adventure

Generate, load, or list adventure content. Use when: the GM wants a new adventure scaffold, a single encounter, or to load a prepared module. Do NOT use when: recording a story beat — use story (action: record).

Input parameters:

- `action` (string, required): generate, generate_encounter, load, or list.
- `context` (string): Scene context (generate_encounter).
- `filter` (string): Optional genre filter (list).
- `premise` (string): Adventure premise (generate).
- `slug` (string): Adventure module slug (load).
- `target` (string): novel, codex, or both (generate).

### `novel` (~472 tokens)

Novel

Manage Novel save files: create, resume, switch, end, export, import, rename, describe, list, archive, unarchive, info, genre, clone, save_context, get_context, or checkpoint. Use when: handling a campaign's lifecycle, interchange, or return points. Do NOT use when: managing content inside the Novel — use the entity tools (npc, lore, faction, vow, story, note, etc.).

Input parameters:

- `action` (string, required): create, resume, switch, end, export, import, rename, description, list, archive, unarchive, info, genre, clone, save_context, get_context, checkpoint_set, checkpoint_list, checkpoint_restore, or chec…
- `codex_adventure` (string): Codex adventure to seed from (create).
- `current_scene` (string): Current-scene summary (save_context).
- `data` (string): Exported Novel JSON (import).
- `description` (string): Description (create/description).
- `detail` (boolean): Return full metadata (list).
- `filter` (string): active, archived, or all (list).
- `format` (string): Output format (export).
- `genre` (string): Genre tag (create/genre).
- `immediate_situation` (string): Immediate situation (save_context).
- `label` (string): Checkpoint label (checkpoint_set/list/restore/remove).
- `long_term_plans` (string): Long-term plans (save_context).
- `mode` (string): dry-run, merge, or replace (import).
- `name` (string): Novel name (create).
- `new_name` (string): Name for the copy (clone).
- `new_slug` (string): New slug (rename).
- `pending_player_action` (string): Pending player action (save_context).
- `player_goals` (string): Player goals (save_context).
- `ruleset` (string): Ruleset slug (create).
- `scope` (string): Export scope (export).
- `short_term_plans` (string): Short-term plans (save_context).
- `slug` (string): Novel slug (resume/switch/archive/unarchive/info).
- `source_slug` (string): Novel to copy (clone).
- `strict` (boolean): Fail on any cross-reference mismatch (import).

### `ruleset` (~251 tokens)

Ruleset

Manage ruleset packages: search a bound ruleset's index, install or remove a package, list installed packages, bind a Novel to a ruleset, or roll on a generation table. Use when: searching rules content, installing/removing/listing packages, binding a Novel, or rolling a table (roll). Do NOT use when: the Novel is ruleset-free — use command (action: suggest) or session (action: health). install/remove mutate installed-package state and are audited; search and roll are read-only.

Input parameters:

- `action` (string, required): search, install, remove, list, bind, or roll.
- `index`: Search index (install).
- `manifest`: Package manifest (install).
- `max_results` (number): Maximum results (search).
- `model`: Extraction model (install).
- `prompts`: Prompts (install).
- `query` (string): Search query (search).
- `resources`: Resources (install).
- `seed` (string): Deterministic seed (roll).
- `slug` (string): Ruleset slug (install/remove/bind).
- `table` (string): Generation table to roll on (roll).
- `tools`: Tool schemas (install).

### `codex` (~234 tokens)

Codex

Manage the cross-Novels codex library of reusable content (NPCs, factions, rooms, spells, adventures, voice profiles). Use when: storing reusable content for later import, or enumerating/reading/deleting it. Do NOT use when: storing Novel-scoped content — use lore (action: set) or note (action: set).

Input parameters:

- `action` (string, required): set (create/update), list, get, capture (voice profile), import (into active Novel), or delete.
- `content`: Entry content (for set).
- `description` (string): Optional description (for set).
- `entity_id` (string): Entity whose voice to capture (for capture).
- `entry_id` (string): Entry identifier (for get/import/delete).
- `kind` (string): Entry kind (for set/list/capture).
- `name` (string): Entry name (for set).
- `tags` (array): Optional tags (for set).
- `update_source` (boolean): When true, update the source entity too (for capture).
- `visibility` (string): library, shared, or private (for set).

### `synthesis` (~218 tokens)

Synthesis

Manage synthesis content (voice examples, lore templates, action patterns, and other Ruleset Wisdom). Use when: running, reverting, listing, activating, deactivating, toggling, or player-authoring synthesis items. Do NOT use when: browsing the codex — use codex (action: list).

Input parameters:

- `action` (string, required): run, revert, list, activate, deactivate, toggle, toggle_action, player_add, player_remove, or player_list.
- `badge_scope` (string): shared or player (player_add).
- `content` (string): Item content (player_add).
- `detail` (boolean): Return full entries (list).
- `enabled` (boolean): Enable or disable (toggle).
- `force` (boolean): Re-run even if unchanged (run).
- `key` (string|number): Item key (activate: number; player_add/player_remove: string).
- `module` (string): Synthesis module (activate/deactivate/toggle/player_*/list).
- `triggers` (array): Recall triggers (player_add).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel#diagnostics

## Score history

- 2026-09-20: 75
- 2026-09-19: 75
- 2026-09-18: 75
- 2026-09-17: 75
- 2026-09-16: 75
- 2026-09-15: 75
- 2026-09-14: 75
- 2026-09-13: 75
- 2026-09-12: 75
- 2026-09-11: 75
- 2026-09-10: 75
- 2026-09-09: 75
- 2026-09-08: 75
- 2026-09-07: 75
- 2026-09-06: 75
- 2026-09-05: 75
- 2026-09-04: 75
- 2026-09-03: 60
- 2026-09-02: 54
- 2026-09-01: 64
- 2026-08-31: 63
- 2026-08-30: 60
- 2026-08-29: 60
- 2026-08-28: 60
- 2026-08-27: 60
- 2026-08-26: 60
- 2026-08-25: 59
- 2026-08-24: 44

## Common questions

### What is the io.github.flukeatzerocool/holonovel MCP server?

io.github.flukeatzerocool/holonovel is an MCP server listed in the public MCP registry as io.github.flukeatzerocool/holonovel. Holonovel MCP server: world-model base for tabletop RPG play (rooms, parser, narrative tools). This page covers its npm package (holonovel).

### Is the io.github.flukeatzerocool/holonovel MCP server safe to use?

io.github.flukeatzerocool/holonovel scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.flukeatzerocool/holonovel MCP server expose?

io.github.flukeatzerocool/holonovel exposes 28 tools: set_badge, respond, undo, redo, help, and 23 more. Their descriptions and schemas cost roughly 5,913 tokens of context every time the server is loaded.

### Is the io.github.flukeatzerocool/holonovel MCP server still maintained?

io.github.flukeatzerocool/holonovel is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.flukeatzerocool/holonovel MCP server under?

io.github.flukeatzerocool/holonovel declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/holonovel
- Socket report: https://socket.dev/npm/package/holonovel
- Repository: https://github.com/flukeatzerocool/holonovel
- Changelog RSS feed: https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel.xml
- Changelog JSON feed: https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel.json
- HTML version of this page: https://verifymcp.io/servers/flukeatzerocool-holonovel/holonovel
