English Version
← Zurück zur Übersicht
Der MCP-Server storyforge-mcp stellt 95 Tools bereit. Sie sind in den Modulen unter servers/storyforge-server/routers/ definiert. Die Skills rufen sie selbst auf, du musst sie nicht von Hand ansprechen. Ein Fragezeichen hinter einem Parameter bedeutet: optional.
Buch-, Autoren- und Serien-Zustand (Status, Regeln, Canon, Session, Cache) läuft über diese Tools. Die Prosa selbst schreiben Skills direkt mit den Datei-Werkzeugen von Claude Code (Write, Edit), zum Beispiel chapter-writer in die draft.md und export-engineer in die Export-Dateien. Deshalb prüfen die Hooks jede solche Änderung.
| Tool |
Zweck |
list_books() |
Alle Buchprojekte mit Status und Wortzahl |
find_book(query) |
Buch per Slug oder Titel finden (Teiltreffer) |
get_book_full(slug) |
Komplette Buchdaten inklusive Kapitel und Figuren |
get_book_progress(slug) |
Kapitelstatus, Wortzahlen, Fertigstellungsgrad |
list_chapters(book_slug) |
Alle Kapitel mit Status und Wortzahl |
count_words(book_slug, chapter_slug?) |
Wörter eines Kapitels oder des ganzen Buchs |
create_book_structure(title, author?, genres?, book_type?, book_category?, language?, target_word_count?, series_slug?) |
Neues Buchprojekt mit Verzeichnisgerüst; author steht immer im README-Frontmatter; mit series_slug wird eine Slug-Kollision mit einem bereits vorhandenen gleichnamigen Buch an anderer Stelle (Einzelband oder anderer Serienband) abgelehnt |
create_chapter(book_slug, title, number, pov_character?, summary?) |
Neues Kapitelverzeichnis mit README und leerem Draft; bei Fiction wird zusätzlich die Rohfassung des Chapter Writers angelegt |
create_character(book_slug, name, role?, description?) |
Neue Figurendatei (Fiction) |
start_chapter_draft(book_slug, chapter_slug) |
Kapitel als aktiv gedraftet markieren |
| Tool |
Zweck |
get_chapter_writing_brief(book_slug, chapter_slug) |
Gebündeltes JSON für chapter-writer (Story-Anker, Timelines, Figuren, Regeln, Tonregeln, Callbacks, Banlist, Taktik) |
get_review_brief(book_slug, chapter_slug) |
Datenbasis für chapter-reviewer |
get_continuity_brief(book_slug) |
Voller Buchzustand für continuity-checker |
get_canon_brief(book_slug, chapter_slug, pov_character?, scope_chapters?) |
Begrenzter Canon-Auszug für ein Kapitel |
get_current_story_anchor(book_slug, chapter_slug?) |
Story-Zeitanker und Zuordnung relativer Zeitphrasen |
get_recent_chapter_timelines(book_slug, n?) |
Intra-Day-Zeitraster der letzten N Kapitel |
verify_tactical_setup(book_slug, scene_outline_text, characters_present) |
Prüfung von Kampf- und Reiseszenen (Laufordnung) |
register_chapter_promises(book_slug, chapter_slug, promises) |
Setup-Elemente eines Kapitels speichern |
get_chapter_promises(book_slug, chapter_slug) |
Gespeicherte Promises eines Kapitels lesen |
add_canon_fact(book_slug, chapter_num, subject, fact, book_num?, domain?, is_revision?, old_value?, revision_impacts?) |
Canon-Fakt in der Datenbank speichern |
Die meisten dieser Tools liefern ein einheitliches Ergebnis (siehe unten). Ausnahmen sind scan_chapter_ai_tells und check_replacement_text.
| Tool |
Zweck |
validate_chapter(book_slug, chapter_slug) |
Dieselben Regeln wie der Prosa-Hook, als Tool |
scan_manuscript(book_slug, min_occurrences?, write_report?, max_findings_per_category?) |
Kapitelübergreifender Scan auf Wiederholungen und Prosa-Muster |
validate_timeline_consistency(book_slug) |
Zeitdrift zwischen Kapiteln gegen plot/timeline.md |
verify_callbacks(book_slug) |
Callback-Register gegen alle gedrafteten Kapitel |
analyze_plot_logic(book_slug, scope?, chapter_slug?) |
Plot-Hole-Erkennung (siehe Technische Details) |
check_memoir_consent(book_slug) |
Einwilligungsstatus aller Personen im Memoir |
validate_book_structure(book_slug) |
Vollständigkeit der Projektstruktur |
run_pre_export_gates(book_slug) |
Export-Vorprüfung |
run_quality_gates(book_slug) |
Alle Prüfer ausführen und zusammenfassen |
scan_chapter_ai_tells(book_slug, chapter_slug, author_slug?, em_dash_per_1k_limit?) |
Deterministischer Vorab-Scan auf AI-Konstruktionen für chapter-humanizer (eigenes Ergebnisformat, kein GateResult) |
check_replacement_text(book_slug, text, author_slug?) |
Prüft einen Ersatzvorschlag gegen die Humanizer-Muster (eigenes Ergebnisformat, kein GateResult) |
Die Prüf-Tools außer scan_chapter_ai_tells und check_replacement_text liefern ihr Ergebnis unter dem Schlüssel gate, neben ihren tool-spezifischen Feldern. Der Umschlag enthält einen Status PASS, WARN oder FAIL, dazu reasons, findings und metadata. Bei run_pre_export_gates steht außerdem das ältere Feld verdict (READY oder BLOCKED) auf oberster Ebene, es wiederholt sich in gate.metadata. Dazu kommt die Liste der einzelnen Gates.
Der globale Katalog hinter scan_chapter_ai_tells und check_replacement_text gilt nur für Bücher auf Englisch; bei anderer Buchsprache liefern beide eine Warnung und keine Katalog-Treffer. Verbotsmuster aus plot/tone.md werden dabei mitgeprüft, Punkte ohne Backticks erscheinen nur als Hinweis. Details dazu stehen unter Technische Details.
Diese Tools protokollieren geprüfte Review-Entscheidungen und halten Entwurfsstände von Fiction-Kapiteln fest. Aufgerufen werden sie von chapter-voice-harvest und den übrigen Prüf-Skills, du musst sie nicht von Hand ansprechen.
| Tool |
Zweck |
log_review_feedback(book_slug, chapter_slug, source_skill, decision, comment_text?, before_text?, after_text?, proposal_text?, dimension?, direction?, normalized_rule?) |
Eine geprüfte Rückmeldung protokollieren (source_skill: writer, reviewer, fixer, rewriter, humanizer, proofreader oder self_edit; decision: accepted, reworked, rejected oder self_edit); Doppelte werden ignoriert; bei Memoir wird kein Rohtext gespeichert, Einordnung und Regel sind Pflicht |
list_pending_feedback(book_slug, chapter_slug?) |
Offene Einträge des Autors, auch aus früheren Kapiteln und Büchern |
set_feedback_classification(book_slug, feedback_id, dimension, direction, normalized_rule) |
Einen offenen Eintrag nach dem festen Vokabular einordnen |
get_voice_candidates(author_slug, book_slug?) |
Übernahme-Kandidaten, Konflikte und zurückgestellte Muster aus den eingeordneten Einträgen |
mark_feedback_harvested(book_slug, ids) |
Einträge als übernommen schließen |
discard_feedback(book_slug, ids) |
Einträge als verworfen schließen |
get_self_edit_hunks(book_slug, chapter_slug, offset?) |
Deine eigenen Änderungen an draft.md gegenüber der zuletzt von Claude geschriebenen Fassung (höchstens 20 je Aufruf; nur Fiction) |
refresh_draft_baseline(book_slug, chapter_slug) |
Aktuelle draft.md als neue Vergleichsfassung merken |
list_raw_drafts(book_slug) |
Kapitel mit Rohfassung des Chapter Writers auflisten (nur Fiction) |
read_raw_draft(book_slug, chapter_slug) |
Rohfassung eines Kapitels lesen |
Den vollständigen Ablauf beschreibt der Abschnitt Chapter Voice Harvest im Quality System.
Regeln, Workflows und Callbacks eines Buchs liegen in der Datenbank. Die CLAUDE.md im Buchverzeichnis dient als lesbare Ansicht und trägt den Frontmatter-Wert linter_mode.
| Tool |
Zweck |
init_book_claudemd(book_slug, book_title?, pov?, tense?, genre?, writing_mode?, overwrite?) |
CLAUDE.md aus Vorlage anlegen |
get_book_claudemd(book_slug) |
CLAUDE.md lesen |
append_book_rule(book_slug, text, validate?) |
Regel anhängen |
list_book_rules(book_slug) |
Alle Regeln auflisten |
update_book_rule(book_slug, rule_index?, rule_match?, new_text?, delete?, validate?, include_callbacks?) |
Regel ersetzen oder entfernen |
lint_book_rules(book_slug) |
Regeln auf Scanner-Blindstellen prüfen |
append_book_workflow(book_slug, text) |
Workflow-Anweisung anhängen |
append_book_callback(book_slug, text) |
Callback anhängen |
sync_book_claudemd_from_text(book_slug, text) |
Einträge mit Präfix Regel:, Workflow:, Callback: aus Text extrahieren und speichern |
update_character_snapshot(book_slug, character_slug, snapshot_json, book_category?) |
Figurenzustand am Kapitelende speichern |
| Tool |
Zweck |
list_authors() |
Alle Profile |
get_author(slug) |
Vollständiges Profil inklusive Writing Discoveries |
create_author(name, genres?, tone?, voice?, tense?) |
Neues Profil mit Vorlagen-Dateien, legt 19 Standard-AI-Tell-Wörter als donts an; bei DB-Fehler enthält die Antwort ein warning |
update_author(slug, field, value) |
Feld im Profil-Frontmatter ändern; normalisiert author_writing_mode: structured→outliner, accumulative→plantser |
delete_author(slug, force?) |
Profil samt Erkenntnissen löschen; entfernt auch die protokollierten Review-Rückmeldungen des Autors; verweigert, solange Bücher darauf verweisen, außer mit force |
harvest_book_rules(book_slug, author_slug?) |
Regeln eines Buchs als Promotions-Kandidaten klassifizieren |
write_author_discovery(author_slug, section, text, book_slug, year_month?, validate?, example?, genres?, universal?) |
Erkenntnis speichern; bei einem Memoir-Buch ohne example und ohne Namen von Personen aus dem Buch |
write_author_banned_phrase(author_slug, phrase, reason?) |
Verbotene Phrase speichern |
add_vocabulary_entry(author_slug, entry_type, text, source?) |
Vokabular-Eintrag speichern |
delete_discovery(author_slug, discovery_type, text) |
Erkenntnis per Textvergleich entfernen |
update_discovery_metadata(author_slug, book_slug, source_genres) |
source_genres aller Erkenntnisse eines Buchs setzen |
extract_text_from_file(file_path) |
Text aus PDF, EPUB, DOCX, TXT oder MD für die Stilanalyse |
| Tool |
Zweck |
create_idea(title, genres?, logline?, concept?, book_category?) |
Neue Ideen-Datei |
list_ideas(status?, genre?) |
Ideen mit Filtern |
get_idea(slug) |
Inhalt einer Idee |
update_idea(slug, field, value) |
Frontmatter-Feld ändern |
promote_idea(slug, book_slug) |
Idee als promoted markieren und mit dem Buch verknüpfen |
list_genres() |
Alle Genres aus Plugin- und eigenem Verzeichnis, bei gleichem Namen hat das eigene Genre Vorrang |
get_genre(name) |
Genre-README aus Plugin- oder eigenem Verzeichnis, das eigene Genre hat Vorrang |
list_craft_references() |
Alle Craft- und Genre-Referenzen |
get_craft_reference(name) |
Eine Referenz laden, zum Beispiel story-structure; chapter-writer, plot-architect und book-conceptualizer rufen sie zusätzlich je Genre als {genre}-craft auf |
| Tool |
Zweck |
create_person(book_slug, name, relationship, person_category, consent_status?, anonymization?, real_name?, description?) |
Profil einer realen Person im Memoir |
set_memoir_structure_type(book_slug, structure_type) |
Strukturtyp speichern: chronological, thematic, braided oder vignette |
create_scene_list(book_slug, scenes) |
plot/scenes.md anlegen oder überschreiben |
update_scene(book_slug, scene_number, chapter?, pov?, summary?, est_words?, status?) |
Eine Szenenzeile ändern |
import_cover_image(book_slug, source_path, is_final?) |
Extern erzeugtes Cover ins Projekt kopieren |
get_cover_image(book_slug) |
Cover für den Export ermitteln |
get_post_processing_config() |
Konfiguriertes Typografie-Werkzeug |
| Tool |
Zweck |
create_series(title, genres?, planned_books?, author?) |
Serienverzeichnis mit series.yaml |
add_book_to_series(series_slug, book_slug, number, status?) |
Buch einer Serie zuordnen |
create_character_tracker(series_slug, name, slug, role, recurs_in, species?, tracker_type?, book_slug?) |
Serien-Figurentracker aus Vorlage |
list_series_trackers_for_book(series_slug, band) |
Tracker, die im Band vorkommen |
read_character_for_harvest(book_slug, character_slug, book_category?) |
Figurendatei für die Ernte lesen |
write_series_evolution_section(series_slug, tracker_slug, band, kind, content, log_message, date?) |
Start-, Ende- oder geplanten Wert in einen Tracker schreiben |
copy_recurring_chars_to_new_book(series_slug, prev_book_slug, new_book_slug, new_band, book_category?) |
Wiederkehrende Figuren ins neue Buch kopieren |
read_tracker_for_bootstrap(series_slug, tracker_slug, prev_band, new_band, prev_book_slug?) |
Bootstrap-Daten eines Trackers |
bootstrap_character_for_new_book(series_slug, tracker_slug, prev_book_slug, new_book_slug, prev_band, snapshot_json, log_message?, book_category?, date?) |
Wiederkehrende Figur für das neue Buch anlegen |
¶ Zustand und Pfade
| Tool |
Zweck |
get_session() |
Aktuellen Session-Kontext lesen |
update_session(last_book?, last_chapter?, last_phase?, active_author?) |
Session-Kontext speichern |
get_review_handle_config() |
Konfigurierten Review-Handle |
rebuild_state() |
State-Cache aus dem Dateisystem neu aufbauen; hebt den Buchstatus bei Bedarf in der README an |
update_field(file_path, field, value) |
Feld in Markdown-Frontmatter oder YAML-Datei ändern |
resolve_path(book_slug, component?, sub_path?) |
Pfad einer Buchkomponente auflösen |
get_book_category_dir(category) |
Wissensverzeichnis einer Buchkategorie |