From 3cc323ba489fd92c0c011988ffd56e6fa8c5a31e Mon Sep 17 00:00:00 2001 From: Erik van der Boom Date: Mon, 20 Jul 2026 22:02:50 +0200 Subject: [PATCH] Update tool references to include "bindery_" prefix for consistency --- .github/copilot-instructions.md | 42 ++++++++++++++++----------------- README.md | 2 +- mcp-ts/src/tools.ts | 14 +++++------ 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 68b2748..4a73248 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -141,26 +141,26 @@ host-specific UI/activation): | `bindery.addTranslation` | ✅ | ✅ | Add a cross-language glossary entry | | `bindery.addLanguage` | ✅ | ✅ | Add a new language and scaffold its story folder | | `bindery.openTranslations` | ✅ | ✅ | Show path to translations.json (edit in host editor) | -| `bindery.noteList` / `note-list` | ✅ | ✅ | List story notes under the configured notes folder | -| `bindery.noteGet` / `note-get` | ✅ | ✅ | Read a story note by path | -| `bindery.noteCreate` / `note-create` | ✅ | ✅ | Create a story note | -| `bindery.noteAppend` / `note-append` | ✅ | ✅ | Append markdown content to a story note | -| `bindery.characterList` / `character-list` | ✅ | ✅ | List structured character profiles | -| `bindery.characterGet` / `character-get` | ✅ | ✅ | Read a character profile by name | -| `bindery.characterCreate` / `character-create` | ✅ | ✅ | Create a character profile and update the character index | -| `bindery.characterUpdate` / `character-update` | ✅ | ✅ | Update a character profile and refresh the index row | -| `bindery.arcList` / `arc-list` | ✅ | ✅ | List structured arc files | -| `bindery.arcGet` / `arc-get` | ✅ | ✅ | Read an arc file by path | -| `bindery.arcCreate` / `arc-create` | ✅ | ✅ | Create an arc file and update the arc index | -| `bindery.arcUpdate` / `arc-update` | ✅ | ✅ | Update an arc file and refresh the arc index | -| `bindery.memoryList` / `memory-list` | ✅ | ✅ | List durable memory files | -| `bindery.memoryAppend` / `memory-append` | ✅ | ✅ | Append a dated memory entry | -| `bindery.memoryCompact` / `memory-compact` | ✅ | ✅ | Compact a memory file with backup | -| `bindery.sessionFocusShow` / `session-focus-show` | ✅ | ✅ | Show working state from SESSION.md (optionally one section) | -| `bindery.sessionFocusUpdate` / `session-focus-update` | ✅ | ✅ | Update a neutral SESSION.md section (replace/append) | -| `bindery.sessionFocusAppendHandoff` / `session-focus-append-handoff` | ✅ | ✅ | Append a handoff note to SESSION.md | -| `bindery.inboxProcess` / `inbox-process` | ✅ | ✅ | Enumerate Notes/Inbox.md items and propose destinations (read-only) | -| `bindery.inboxResolve` / `inbox-resolve` | ✅ | ✅ | Remove already-routed inbox items by number | +| `bindery.noteList` / `bindery_note-list` | ✅ | ✅ | List story notes under the configured notes folder | +| `bindery.noteGet` / `bindery_note-get` | ✅ | ✅ | Read a story note by path | +| `bindery.noteCreate` / `bindery_note-create` | ✅ | ✅ | Create a story note | +| `bindery.noteAppend` / `bindery_note-append` | ✅ | ✅ | Append markdown content to a story note | +| `bindery.characterList` / `bindery_character-list` | ✅ | ✅ | List structured character profiles | +| `bindery.characterGet` / `bindery_character-get` | ✅ | ✅ | Read a character profile by name | +| `bindery.characterCreate` / `bindery_character-create` | ✅ | ✅ | Create a character profile and update the character index | +| `bindery.characterUpdate` / `bindery_character-update` | ✅ | ✅ | Update a character profile and refresh the index row | +| `bindery.arcList` / `bindery_arc-list` | ✅ | ✅ | List structured arc files | +| `bindery.arcGet` / `bindery_arc-get` | ✅ | ✅ | Read an arc file by path | +| `bindery.arcCreate` / `bindery_arc-create` | ✅ | ✅ | Create an arc file and update the arc index | +| `bindery.arcUpdate` / `bindery_arc-update` | ✅ | ✅ | Update an arc file and refresh the arc index | +| `bindery.memoryList` / `bindery_memory-list` | ✅ | ✅ | List durable memory files | +| `bindery.memoryAppend` / `bindery_memory-append` | ✅ | ✅ | Append a dated memory entry | +| `bindery.memoryCompact` / `bindery_memory-compact` | ✅ | ✅ | Compact a memory file with backup | +| `bindery.sessionFocusShow` / `bindery_session-focus-show` | ✅ | ✅ | Show working state from SESSION.md (optionally one section) | +| `bindery.sessionFocusUpdate` / `bindery_session-focus-update` | ✅ | ✅ | Update a neutral SESSION.md section (replace/append) | +| `bindery.sessionFocusAppendHandoff` / `bindery_session-focus-append-handoff` | ✅ | ✅ | Append a handoff note to SESSION.md | +| `bindery.inboxProcess` / `bindery_inbox-process` | ✅ | ✅ | Enumerate Notes/Inbox.md items and propose destinations (read-only) | +| `bindery.inboxResolve` / `bindery_inbox-resolve` | ✅ | ✅ | Remove already-routed inbox items by number | | `bindery.registerMcp` | ✅ | — | Write .vscode/mcp.json for Claude/Codex MCP discovery (VS Code-only) | | `bindery.showMcpConfig` | — | ✅ | Display MCP configuration snippet (Obsidian-only) | @@ -181,7 +181,7 @@ Skills: `review`, `brainstorm`, `memory`, `translate`, `translation-review`, `st The **memory skill** uses `bindery_memory_list` → `bindery_memory_append` → `bindery_memory_compact` for session decisions and `bindery_note_list` / `bindery_note_get` / `bindery_note_create` / `bindery_note_append` for canonical story notes. Do not fall back to `bindery_get_text` + Edit tool for memory or note writes when a structured tool exists. -The split: durable story/project decisions → `memory_*` (`.bindery/memories/`); ephemeral working state (current focus, next actions, open questions, handoff) → `session_focus_*` (`SESSION.md`); durable working preferences → `PREFERENCES.md` (user-owned, never tool-written — propose changes instead); rough/unsorted/pasted material → `Notes/Inbox.md`, triaged with `bindery_inbox_process` / `bindery_inbox_resolve` (not memory). +The split: durable story/project decisions → `bindery_memory_*` (`.bindery/memories/`); ephemeral working state (current focus, next actions, open questions, handoff) → `bindery_session_focus_*` (`SESSION.md`); durable working preferences → `PREFERENCES.md` (user-owned, never tool-written — propose changes instead); rough/unsorted/pasted material → `Notes/Inbox.md`, triaged with `bindery_inbox_process` / `bindery_inbox_resolve` (not memory). Current authoring-tool boundary: note, character, arc, memory, session-focus, and inbox-triage MCP/LM tools exist and have matching VS Code/Obsidian host command wrappers. `bindery_session_focus_update` only touches neutral SESSION.md sections; `bindery_inbox_process` only proposes and `bindery_inbox_resolve` only removes named items (route confirmed items with the destination tools first). diff --git a/README.md b/README.md index 034f4b6..2886432 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ A [Model Context Protocol](https://modelcontextprotocol.io/) server that exposes - **Multi-book support** — configure one or more books via `--book Name=path` CLI args or `BINDERY_BOOKS` env var; every tool call specifies which book to use by name (agents never see raw paths) - **Container/mount aware** — agents in sandboxed environments (e.g. Cowork) can call `bindery_identify_book` with their working directory to discover their book name, even when mount paths differ from the configured paths -See [mcpb/README.md](mcpb/README.md) for the full 40-tool reference and usage examples. +See [mcpb/README.md](mcpb/README.md) for the full tool reference and usage examples. ### [obsidian-plugin/](obsidian-plugin/) — Obsidian Plugin diff --git a/mcp-ts/src/tools.ts b/mcp-ts/src/tools.ts index c94de5e..113593c 100644 --- a/mcp-ts/src/tools.ts +++ b/mcp-ts/src/tools.ts @@ -2843,7 +2843,7 @@ interface ParsedInbox { preamble: string; items: string[]; } /** * Split Inbox.md into a preamble (H1 + intro paragraph) plus discrete items. - * Deterministic so `inbox_process` and `inbox_resolve` enumerate items identically: + * Deterministic so `bindery_inbox_process` and `bindery_inbox_resolve` enumerate items identically: * if any `## ` headings exist the body is split on them, otherwise on blank-line blocks. */ function parseInboxItems(text: string): ParsedInbox { @@ -2897,14 +2897,14 @@ export function toolInboxProcess(root: string): string { lines.push( '## How to triage', 'Propose a destination for each item, confirm with the user, then route confirmed items with the matching tool:', - '- Story note → `note_create` / `note_append` (World, Scenes, Research, or a custom category)', - '- Character → `character_create` / `character_update`', - '- Arc / structure → `arc_create` / `arc_update`', - '- Durable cross-session decision → `memory_append`', - '- Current focus / next action / handoff → `session_focus_update`', + '- Story note → `bindery_note_create` / `bindery_note_append` (World, Scenes, Research, or a custom category)', + '- Character → `bindery_character_create` / `bindery_character_update`', + '- Arc / structure → `bindery_arc_create` / `bindery_arc_update`', + '- Durable cross-session decision → `bindery_memory_append`', + '- Current focus / next action / handoff → `bindery_session_focus_update`', '', 'Do not move, delete, or categorize anything without the user\'s confirmation. ' + - 'After confirmed items are routed, call `inbox_resolve` with their item numbers to remove them from the inbox. ' + + 'After confirmed items are routed, call `bindery_inbox_resolve` with their item numbers to remove them from the inbox. ' + 'Items left unconfirmed stay in the inbox.', ); return lines.join('\n');