Recap Raven

offiziell

Discord-D&D-Notiznehmer: Durchsuche und zitiere deine TTRPG-Sitzungszusammenfassungen, Quests, NSCs und Transkripte von jeder KI. Erfordert einen Recap Raven API-Schlüssel.

Was kann man mit Recap Raven MCP machen?

  • Kampagnen und Sitzungen auflisten — Bitte deine KI, deine Kampagnen aufzulisten und eine Sitzungsnummer der richtigen Zusammenfassung zuzuordnen, bevor Details abgerufen werden.
  • Transkripte und Beats durchsuchen — Führe exakte Stichwortsuche über Transkript-Turns oder Szenen-Beats aus, um zu finden, wo ein Name, Gegenstand oder Ort vorkam.
  • Zusammenfassungen und Transkriptfenster lesen — Rufe eine spielersichere Zusammenfassung oder einen positionsbasierten Ausschnitt der gespeicherten Turns einer Sitzung nach Indexbereich ab.
  • Vorbereitung und offene Hooks prüfen — Hole ungelöste narrative Hooks, ein Vorbereitungspaket für die nächste Sitzung und eine „Bisher geschah"-Zusammenfassung für eine Kampagne.
  • Entitäten und Lore nachschlagen — Erhalte das Entitätenverzeichnis oder eine einzelne Entitätenkarte sowie Lore-Dokumente und Lexikoneinträge.
  • Engagement und Quests prüfen — Lies Teilnahmetrends pro Sprecher, das spielersichtbare Quest-Log und deinen Ask-Guthabenverbrauch.

Gehosteter MCP-Server

npx add-mcp 'https://mcp.recapraven.com/mcp'

Installiert in Claude Code, Codex, Cursor und mehr

Dokumentation

Für individuelle KI-Workflows

Deine Kampagnen-Tools in einem kompatiblen KI-Client.

Lies deine Zusammenfassungen und Kampagnendaten über MCP. Der bestehende API-Key-Zugriff funktioniert mit kompatiblen Clients. Melde dich aus einer KI-App an, die eine öffentliche Client-Identität unterstützt; prüfe die Anforderungen deines Clients unten, bevor du dich verbindest.

Was ist MCP?

MCP ermöglicht kompatiblen KI-Apps, Recap Raven-Tools direkt aufzurufen. Statt Zusammenfassungen in eine andere KI zu kopieren, kann deine KI Recap Raven nach Sitzungen, Transkriptfenstern, Hooks, Entitäten, Zitaten und Kampagnenantworten fragen.

Erste Schritte

Ravens Remote-MCP-Endpunkt ist https://mcp.recapraven.com/mcp . Wähle einen Client für die Einrichtungsanleitung. Premium umfasst deterministische Lesezugriffe; Searchable Memory ist für die Speichersuche und KI-Antworten erforderlich.


MCP-Endpunkt

https://mcp.recapraven.com/mcp

ChatGPT-Einrichtung

  1. Öffne auf der ChatGPT-Website Plugins, wähle + und dann Add custom MCP server. Gib „Recap Raven“ und die unten stehende Server-URL ein.
  2. Wenn die Raven-Anmeldung aktiviert ist, wähle OAuth und die Option für veröffentlichte Client-Identität (CIMD) mit Public-Client-Authentifizierung. Es ist kein Client-Secret und kein Raven-API-Key erforderlich. Die automatische Client-Registrierung wird von Raven nicht unterstützt.
  3. Erstelle das Plugin, installiere es und melde dich dann bei Raven an, um die App-Identität und den angeforderten Zugriff zu prüfen. Genehmige nur eine Verbindung, die du selbst gestartet hast.
  4. Wähle in einer Unterhaltung Recap Raven mit @ aus und frage: „Use Recap Raven to list my campaigns.“
  5. Lese- und Schreib-Tools hängen von deinen Berechtigungen und Bestätigungen ab. Wenn die Einrichtung fehlt, prüfe die Workspace-Einschränkungen und die offizielle ChatGPT-Einrichtungsanleitung für deine App.

Remote-Server-URL für ChatGPT

https://mcp.recapraven.com/mcp

Hilfe zu Einwilligung und Verbindung

Eine Raven-Anmeldeverbindung fragt nach der Erlaubnis, auf deine Kampagnen, Transkripte und GM-exklusive Informationen zuzugreifen. Tool-Ergebnisse gehen an deinen gewählten KI-Anbieter, und kostenpflichtige Tools verbrauchen deine bestehenden Ask-Credits.

Wenn du Hintergrundzugriff genehmigst, kann die App ihre Verbindung bis zu 30 Tage lang erneuern, auch wenn du bei Raven abgemeldet bist. Nach Ablauf oder Widerruf verbinde dich erneut und genehmige erneut. In den Kontoeinstellungen kannst du genehmigte KI-Verbindungen prüfen und eine Verbindung trennen oder Disconnect all AI connections verwenden. API-Keys werden separat verwaltet.

Leere Ergebnisse? Prüfe, ob du dich beim Raven-Konto angemeldet hast, dem deine Kampagnen gehören. Eine Planänderung kann den Tool-Zugriff entfernen; KI-Antworten benötigen außerdem verfügbare Credits. Wenn die Einwilligung abläuft oder fehlschlägt, starte die Verbindung vom Client aus neu.

Fehlende Menüs oder ein nicht unterstützter Workspace lassen sich nicht durch Ändern deines Raven-Keys beheben. Prüfe die verlinkten Anbieteranforderungen oder kontaktiere unsere Discord-Community mit App-Name, Version und Fehlermeldung. Sende keine Tokens oder Keys.

Verfügbar bei Premium und Searchable Memory

Premium umfasst API-Keys und Zugriff auf deine verfügbaren Zusammenfassungen, Transkripte und manuellen World-Daten. Searchable Memory ist für Speicher-Tools, Kampagnensuche und KI-Antworten erforderlich. Semantische Suche und KI-Antworten verbrauchen deine bestehenden Ask-Credits.

MCP-Verfügbarkeit nach Plan

Free-TarifNicht verfügbar
PremiumAPI-Keys, verfügbare Zusammenfassungen, Transkripte und manuelle World-Daten. Speicher-Tools sind nicht enthalten.
Pläne mit SpeicherDeterministische Tools ohne Zusatzkosten; search_corpus verbraucht wenige Chat-Credits pro Suche, und zitierte Ask-Tools verbrauchen Ask-Credits.
API-KeyErstelle einen persönlichen API-Key unter API Keys. Jederzeit widerrufbar; der MCP-Zugriff endet, wenn das Konto zum Free-Tarif zurückkehrt.

Fair Use & Ratenlimits

Der MCP-Server ist eine gemeinsam genutzte, abgerechnete Oberfläche. Um ihn nachhaltig zu betreiben (und zu verhindern, dass eine außer Kontrolle geratene Agent-Schleife eine ganze Lizenz in Minuten verbraucht), ist jeder API-Key zusätzlich zu deinem Ask-Kontingent ratenbegrenzt.

MCP-Ratenlimits

Server-Fair-UseObergrenze für Anfragen pro API-Key auf dem MCP-Server selbst (alle Tool-Aufrufe zusammen) — verhindert, dass ein einzelner Key den Endpunkt überflutet. Antworten über dem Limit liefern 429 mit Retry-After.
Premium · alle Pläne / Memory · 5 Sitzungen15 Anfragen/Minute und 150 Anfragen/Stunde.
Memory · 10 Sitzungen30 Anfragen/Minute und 450 Anfragen/Stunde.
Memory · 20 Sitzungen60 Anfragen/Minute und 1200 Anfragen/Stunde.
Kostenlose ToolsPro API-Key ratenbegrenzt. Deterministische Lesezugriffe und Stichwortsuche (search_transcript, search_facts) kosten keine Credits. Semantische search_corpus ist hier nicht enthalten; sie verbraucht wenige Chat-Credits pro abgeschlossener Suche.
Chat-Credit-Toolssearch_corpus (wenige Chat-Credits) und zitierte Ask-Tools sind durch sowohl dein Ask-Kontingent als auch ein Ratenlimit pro Key begrenzt. Die Nutzungssperre stoppt Ausgaben, wenn das Kontingent erschöpft ist; das Ratenlimit verhindert, dass ein Ausbruch es sofort leert. Kein separates MCP-Kontingent — dein Agent verbraucht dieselben Chat-Credits pro Lizenz, die er auch in der App nutzt.

Ohne Zusatzkosten enthalten

Deterministische Lese-Tools — Sitzungen, Entitäten und das Ledger, Hooks, Mechaniken, Engagement, Transkript- und Beats-Suche, Zusammenfassungen, Lore und Lexikon. Sie liefern gespeicherte Kampagnendaten ohne KI-Inferenz, sodass verfügbare Tools keine Credits kosten. Speicher-Tools erfordern weiterhin Searchable Memory. Semantische search_corpus ist in dieser Liste nicht enthalten; sie verbraucht wenige Chat-Credits. Erweitere ein beliebiges Tool für Beispiel-Eingabe, Beispiel-Ausgabe und Feldreferenz.

list_campaigns Keine zusätzlichen Tool-Kosten

Discovery-Tool: listet die für deinen MCP-Key verfügbaren Kampagnen auf, damit andere Tools die richtige campaign_id verwenden können.

Beispiel-Eingabe

{}

Beispiel-Ausgabe

{
  "campaigns": [
    {
      "campaign_id": "a1b2c3d4-…",
      "name": "The White Moose",
      "module": "Dolmenwood"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
campaignsarrayKampagnen, die deinem Konto gehören.
campaigns[].campaign_idstring (uuid)Verwende diese ID mit kampagnenbezogenen MCP-Tools.
campaigns[].namestringKampagnenname.
campaigns[].modulestring | nullOptionales Modul-/System-Label.

list_sessions Keine zusätzlichen Tool-Kosten

Discovery-Tool: listet bereite Sitzungen mit ihrer session_number und ihrem Titel auf, damit ein Agent „Sitzung 12“ der richtigen recap_id zuordnen kann.

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid) | weggelassenOptionaler Kampagnenfilter.

Beispiel-Ausgabe

{
  "recaps": [
    {
      "recap_id": "r1e2c3a4-…",
      "campaign_id": "a1b2c3d4-…",
      "session_number": 12,
      "title": "The Choosing",
      "status": "ready"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
recapsarrayBereite Sitzungen, die für dein Konto sichtbar sind.
recaps[].recap_idstring (uuid)Verwende diese ID mit get_recap, get_transcript_window und get_mechanics_events.
recaps[].campaign_idstring (uuid) | nullKampagne, der die Sitzung gehört.
recaps[].session_numberinteger | nullDie eigene 1-basierte Sitzungsnummerierung des GM (DM-editierbar), sofern festgelegt.
recaps[].titlestring | nullSitzungstitel.
recaps[].statusstringEs werden nur bereite Sitzungen aufgelistet.

get_engagement Keine zusätzlichen Tool-Kosten

Das Kampagnen-Engagement-Dashboard: Teilnahmetrend pro Sprecher und die zwischengespeicherte sitzungsübergreifende Synthese (Zusammenfassung + Zeitleiste der Schlüsselereignisse).

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne. Muss deinem Konto gehören.

Beispiel-Ausgabe

{
  "sessions": [
    {
      "recap_id": "…",
      "session_ref": "S01AB",
      "session_at": "2026-06-20T19:00:00Z"
    }
  ],
  "players": [
    {
      "speaker": "Mira",
      "points": [
        {
          "session_ref": "S01AB",
          "participation_pct": 28.4,
          "turn_count": 42,
          "talk_time_seconds": 612,
          "word_count": 1840
        }
      ]
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
sessionsarrayEin Eintrag pro bereiter Sitzung in der Kampagne.
sessions[].recap_idstring (uuid)Die Recap-/Sitzungs-ID.
sessions[].session_refstringKurze menschenlesbare Referenz, z. B. S01AB.
sessions[].session_atstring (ISO 8601)Wann die Sitzung begann (UTC).
playersarrayEin Eintrag pro erkanntem Sprecher.
players[].speakerstringAnzeigename des Sprechers.
players[].pointsarrayMetriken pro Sitzung für diesen Sprecher.
players[].points[].participation_pctnumberAnteil an der Unterhaltung, 0–100.
players[].points[].turn_countintegerAnzahl der Sprechbeiträge.
players[].points[].talk_time_secondsintegerGesamte Sprechzeit in Sekunden.
players[].points[].word_countintegerGesamtzahl gesprochener Wörter.

get_credit_balance Keine zusätzlichen Tool-Kosten

Dein Ask-Kontingent als genutzter Prozentsatz, plus ein Feed der letzten Aktivitäten. Rohe Kontingentzahlen werden MCP-Clients nicht offengelegt.

Beispiel-Eingabe

{}

Beispiel-Ausgabe

{
  "usage": {
    "percent_used": 29
  },
  "recent_activity": [
    {
      "type": "recap_ready",
      "label": "Session S01AB recap is ready",
      "date": "2026-06-21T08:02:00Z",
      "recap_id": "…"
    },
    {
      "type": "credit",
      "label": "Asked your campaign",
      "date": "2026-06-21T08:05:00Z"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
usage.percent_usedintegerGanzzahlige Ask-Nutzung von 0 bis 100.
recent_activityarrayFeed, neueste zuerst (session-recorded-, recap-ready-, credit-ledger-Ereignisse).
recent_activity[].typestringEreignisart.
Werte: recap_ready | session_recorded | credit
recent_activity[].labelstringMenschenlesbare Zusammenfassung.
recent_activity[].datestring (ISO 8601)Wann das Ereignis stattfand.
recent_activity[].recap_idstring (uuid) | nullVorhanden bei recap-/sitzungsbezogenen Ereignissen.

get_memory_overview Keine zusätzlichen Tool-Kosten

Reichhaltigster GM-Situationsbewusstseins-Blob: Verteilung, Engagement-Trend + Gesamtwert, Teilnahme pro Sitzung, Säulen des Spiels.

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispiel-Ausgabe

{
  "distribution": [
    {
      "label": "Roleplay",
      "pct": 58
    }
  ],
  "engagement": {
    "overall": {
      "score": 74,
      "label": "Playful / tense"
    }
  },
  "pillars": [
    "The green-eyed stranger",
    "The old inn",
    "The white moose hunt"
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
distributionarrayAnteil des Spiels nach Kategorie.
distribution[].labelstringKategoriename.
distribution[].pctnumberAnteil, 0–100.
engagement.overall.scorenumber | nullZusammengesetzter Engagement-Wert, 0–100.
engagement.overall.labelstring | nullQualitatives Label, z. B. „Verspielt / angespannt“.
pillarsstring[] | nullWiederkehrende Themen / Säulen des Spiels.

get_quest_log Keine zusätzlichen Tool-Kosten

Das für Spieler sichtbare Quest-Log. GM-Ergänzungen und -Bearbeitungen werden über Discord /questlog mit der Gruppe geteilt. Halte GM-Geheimnisse fern.

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…",
  "page": 1
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Deine zu lesende Kampagne.
pageintegerOptional, beginnend bei 1. Zehn Quests pro Seite.

Beispiel-Ausgabe

{
  "quests": [
    {
      "id": "d4e5f6a7-…",
      "title": "Find the missing courier",
      "objective": "Follow the trail from the bridge.",
      "status": "active",
      "progress": "The party found a torn satchel."
    }
  ],
  "page": 1,
  "has_more": false
}

Feldbeschreibungen

FeldTypBeschreibung
questsarrayAktive/veraltete zuerst, dann abgeschlossene/aufgegebene. Interne Bearbeitungsmetadaten und Quelllinks sind ausgeschlossen.
quests[].idstring (uuid)Quest-Bezeichner.
quests[].titlestringQuest-Titel.
quests[].objectivestringDas Ziel der Gruppe.
quests[].statusstringactive, stale, completed oder abandoned.
quests[].progressstringZuletzt gespeicherter Fortschritt.
pageintegerAktuelle Seite.
has_morebooleanFordere die nächste Seite an, wenn true.

get_open_hooks Keine zusätzlichen Tool-Kosten

Ungelöste erzählerische Hooks — was für die nächste Sitzung vorzubereiten ist.

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispiel-Ausgabe

{
  "hooks": [
    {
      "text": "Nobody bypasses the Choosing.",
      "session_ref": "S01AB",
      "session_date": "2026-06-20"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
hooksarrayDerzeit offene erzählerische Hooks.
hooks[].textstringDie Hook-Beschreibung.
hooks[].session_refstringSitzung, in der der Hook eingeführt wurde.
hooks[].session_datestring (YYYY-MM-DD)Datum dieser Sitzung.

get_previously_on Keine zusätzlichen Tool-Kosten

„Previously on“-Kontext für die Kampagne, aufgebaut aus eigentümerbezogenem Speicher.

Beispiel-Eingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispiel-Ausgabe

{
  "sections": [
    {
      "title": "Last time",
      "bullets": [
        "The party followed the white moose into the mist."
      ]
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
sectionsarrayKampagnenspeicher-Abschnitte für Recap/Kontext.
sections[].titlestringAbschnittsüberschrift.
sections[].bulletsstring[]Prägnante Speicher-Stichpunkte.

get_next_session_prep_pack Keine zusätzlichen Tool-Kosten

Nur für Spielleiter gedachte Vorbereitungsempfehlung für die nächste Sitzung aus dem Vorbereitungs-Cache von Recap Raven. Sie kann einmal generiert werden und bleibt dann im Cache, bis das nächste Recap aufgenommen wird. Gibt credit_cost: 0 zurück.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die Kampagne, für die vorbereitet werden soll. Muss Ihrem Konto gehören.

Beispielausgabe

{
  "likely_directions": [
    {
      "title": "Return to the inn",
      "detail": "The unresolved clue points back to the old inn."
    }
  ],
  "threads_to_watch": [
    "Who opened the moonstone gate?"
  ],
  "prep_suggestions": [
    "Review the innkeeper and the gate password."
  ],
  "credit_cost": 0,
  "cache_policy": "cached_until_next_recap_ingested"
}

Feldbeschreibungen

FeldTypBeschreibung
likely_directionsarrayWahrscheinliche nächste Richtungen aus Sicht des Spielleiters.
threads_to_watchstring[]Handlungsfäden, die der Spielleiter im Auge behalten sollte.
prep_suggestionsstring[]Konkrete Vorbereitungsimpulse für den Spielleiter.
credit_costnumberFür dieses MCP-Tool immer 0.
cache_policystringcached_until_next_recap_ingested.

get_chronicle Keine zusätzlichen Tool-Kosten

Szenen-pro-Sitzung-Karte — die strukturierte Kampagnenchronik.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispielausgabe

{
  "sessions": [
    {
      "recap_id": "…",
      "session_ref": "S01AB",
      "scenes": [
        "The market",
        "The hunt",
        "The banshee fight"
      ]
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
sessionsarrayEin Eintrag pro Sitzung.
sessions[].recap_idstring (uuid)Die Recap-/Sitzungs-ID.
sessions[].scenesstring[]Geordnete Szenenbezeichnungen für diese Sitzung.

get_entity Keine zusätzlichen Tool-Kosten

Das für Spieler sichtbare Entitätsverzeichnis, abgeleitet aus aufgezeichneten Sitzungen; privat hochgeladene Lore ist ausgeschlossen. Ohne Namen wird die Liste zurückgegeben. Mit einem Namen oder Alias wird die passende Karte, Interaktionshistorie, Transkript-Zugverweise, Beziehungen oder Mehrdeutigkeitskandidaten zurückgegeben.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "name": "Captain Vale"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.
namestring | omittedEntitätsname/Alias, der zu einer einzelnen Karte aufgelöst werden soll. Weglassen für die Liste.

Beispielausgabe

{
  "entity": {
    "id": "…",
    "canonical_name": "Captain Vale",
    "kind": "npc",
    "aliases": [
      "Vale"
    ],
    "search_aliases": [],
    "interactions": [
      {
        "recap_id": "…",
        "summary": "Vale warned the party.",
        "turn_start": 12,
        "turn_end": 16
      }
    ],
    "relations": [
      {
        "subject": "Captain Vale",
        "predicate": "located_in",
        "object": "Saltmoor Harbour",
        "recap_id": "…",
        "turn_start": 41,
        "turn_end": 44,
        "visibility": "player_known",
        "session_date": "2026-05-01T00:00:00Z",
        "is_current": true,
        "predicate_class": "stateful"
      }
    ]
  }
}

Feldbeschreibungen

FeldTypBeschreibung
entitiesarray (roster mode)Wenn kein Name angegeben ist: {canonical_name, kind, aliases, search_aliases} für jede Entität.
entityobject | null (card mode)Wenn ein Name angegeben ist: die aufgelöste Entitätskarte oder null, wenn der Name zu nichts passt.
candidatesarrayMögliche Entitätskarten, wenn ein Alias mehrdeutig ist; leer, wenn die Auflösung eindeutig ist.
entity.idstring (uuid)Stabile Kampagnen-Entitäts-ID.
entity.canonical_namestringKanonischer Entitätsname.
entity.kindstringEntitätsart.
Werte: pc | npc | creature | place | item | faction | deity | other
entity.aliasesstring[]Anzeige-Aliase.
entity.search_aliasesstring[]Nur für die Suche verwendete Aliase.
entity.interactionsarrayBelegte Historieneinträge mit Recap- und Transkript-Zugverweisen.
entity.interactions[].recap_idstring (uuid)Sitzung, die die Interaktion enthält.
entity.interactions[].turn_startinteger | nullErster Transkript-Zug für den Belegverweis.
entity.interactions[].turn_endinteger | nullLetzter Transkript-Zug für den Belegverweis.
entity.interactions[].identity_matchstringconfirmed oder suggested; suggested-Verweise sind mögliche Alias-Treffer, keine kanonischen Identitätsaussagen.
Werte: confirmed | suggested
entity.relationsarrayBeziehungsgraph (älteste → neueste).
entity.relations[].predicatestringz. B. located_in, ally_of, owns.
entity.relations[].recap_idstring (uuid)Sitzung, die die Beziehung belegt.
entity.relations[].visibilitystringSichtbarkeit der Kante aus Sicht des Spielleiters. Ältere Daten vor der Beleg-Erfassung können dm_only-Kanten enthalten — nicht an Spieler weitergeben.
Werte: player_known | dm_only
entity.relations[].is_currentbooleanDer aktive Teil eines zustandsbehafteten Prädikats.

get_mechanics_events Keine zusätzlichen Tool-Kosten

Zugverankerte Mechanik-Ereignisse (Angriffe, Zauber, Schaden, Rasten, Zustände) für eine Sitzung — dieselben Daten wie im Mechanik-Tab.

Beispieleingabe

{
  "recap_id": "…"
}

Feldbeschreibungen

FeldTypBeschreibung
recap_idstring (uuid)Die zu lesende Sitzung. Verwenden Sie list_sessions, um IDs zu ermitteln.

Beispielausgabe

{
  "recap_id": "…",
  "mechanics": [
    {
      "action": "attack",
      "actor": "Mira",
      "target": "Goblin",
      "damage_amount": 7,
      "damage_type": "slashing",
      "evidence_turn_start": 41,
      "evidence_turn_end": 41
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
recap_idstring (uuid)Die Sitzung, zu der diese Ereignisse gehören.
mechanicsarrayZugverankerte Mechanik-Ereignisse.
mechanics[].actionstringEreignisart.
Werte: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed
mechanics[].actorstringWer gehandelt hat.
mechanics[].evidence_turn_startintegerErster Zug, der das Ereignis belegt.
mechanics[].evidence_turn_endintegerLetzter Zug, der das Ereignis belegt.

get_lore_documents Keine zusätzlichen Tool-Kosten

Die Liste der Lore-Dokumente für die Kampagne.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispielausgabe

{
  "documents": [
    {
      "id": "…",
      "title": "The Choosing",
      "updated_at": "2026-06-20"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
documentsarrayLore-Dokumente.
documents[].idstring (uuid)Dokumentbezeichner.
documents[].titlestringDokumenttitel.

get_lore_document Keine zusätzlichen Tool-Kosten

Ein einzelnes Lore-Dokument mit seinem vollständigen Inhalt.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "doc_id": "…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.
doc_idstring (uuid)Das abzurufende Lore-Dokument.

Beispielausgabe

{
  "document": {
    "id": "…",
    "title": "The Choosing",
    "body": "…"
  }
}

Feldbeschreibungen

FeldTypBeschreibung
document.idstring (uuid)Dokumentbezeichner.
document.titlestringDokumenttitel.
document.bodystringVollständiger Dokumentinhalt (Markdown).

get_lexicon Keine zusätzlichen Tool-Kosten

Lexikon-Einträge (kanonische Namen, Aliase, Typ, Konfidenz).

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu lesende Kampagne.

Beispielausgabe

{
  "entries": [
    {
      "id": "…",
      "canonical": "Sol’Thun",
      "type": "npc",
      "aliases": [
        "the archmage"
      ],
      "confidence": 0.92,
      "enabled": true
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
entriesarrayLexikon-Einträge.
entries[].canonicalstringKanonischer Name.
entries[].typestringEntitätsart.
Werte: npc | place | item | creature | other
entries[].aliasesstring[]Alternative Namen / Aliase.
entries[].confidencenumberExtraktionskonfidenz, 0–1.
entries[].enabledbooleanOb dieser Eintrag aktiv ist.

get_transcript_window Keine zusätzlichen Tool-Kosten

Ein positionsbasierter Ausschnitt der gespeicherten Züge einer Sitzung (keine Inhaltssuche — nur von/bis-Zugindizes).

Beispieleingabe

{
  "recap_id": "…",
  "from": 0,
  "to": 20
}

Feldbeschreibungen

FeldTypBeschreibung
recap_idstring (uuid)Das zu lesende Recap/die Sitzung. Verwenden Sie list_sessions, um IDs zu ermitteln.
fromintegerStart-Zugindex (inklusive, Standard 0).
tointegerEnd-Zugindex. Weglassen für ein Fenster von 50 Zügen ab dem Startindex.

Beispielausgabe

{
  "recap_id": "…",
  "total_turns": 184,
  "from": 0,
  "to": 20,
  "turns": [
    {
      "index": 0,
      "t": "~00:01",
      "speaker": "GM",
      "text": "…"
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
total_turnsintegerGesamtzahl der Züge in der Sitzung.
fromintegerZurückgegebener Startindex.
tointegerZurückgegebener Endindex.
turnsarrayZüge im angeforderten Fenster.
turns[].indexintegerPositionsindex in der Sitzung.
turns[].tstringRelativer Zeitstempel, z. B. ~00:01.
turns[].speakerstringAnzeigename des Sprechers.
turns[].textstringDer gesprochene Text.

get_recap Keine zusätzlichen Tool-Kosten

Das spielersichere Recap-HTML für ein fertiges Recap. Der Artefakttyp wird vom Server festgelegt; es gibt keine Typ-Eingabe.

Beispieleingabe

{
  "recap_id": "…"
}

Feldbeschreibungen

FeldTypBeschreibung
recap_idstring (uuid)Das Recap/die Sitzung, dessen/deren spielersicheres Recap abgerufen werden soll.

Beispielausgabe

{
  "recap": {
    "recap_id": "…",
    "content_type": "player_recap_html",
    "html": "<!doctype html>…",
    "truncated": false
  }
}

Feldbeschreibungen

FeldTypBeschreibung
recap.recap_idstring (uuid)Die Recap-/Sitzungs-ID.
recap.content_typestringImmer player_recap_html.
Werte: player_recap_html
recap.htmlstringDas spielersichere Recap-HTML.
recap.truncatedbooleanTrue, wenn die MCP-Antwortgrenze das HTML gekürzt hat.

search_transcript Keine zusätzlichen Tool-Kosten

Exakte Stichwortsuche (Volltext) über die Transkript-Züge Ihrer Kampagne. Gibt Züge zurück, die die exakte Phrase enthalten, mit ihrer Sitzung, ihrem Sprecher und Zeitstempel — kein LLM, kein Embedding, keine Credits.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "query": "white moose",
  "recap_id": "r1e2c3a4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu durchsuchende Kampagne.
querystringExakte Phrase, die übereinstimmen soll (Volltextsuche gegen den Transkripttext).
recap_idstring (uuid) | omittedOptionaler Sitzungsbereich. Verwenden Sie list_sessions, um Recap-IDs zu ermitteln.

Beispielausgabe

{
  "query": "white moose",
  "matches": [
    {
      "recap_id": "…",
      "speaker": "GM",
      "t": "~01:04",
      "text": "All you know is that it’s a white moose."
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
querystringEcho der übermittelten Suchanfrage.
matchesarrayTranskript-Züge, die die exakte Phrase enthalten, bester Treffer zuerst.
matches[].recap_idstring (uuid)Recap/Sitzung, aus der der Treffer stammt.
matches[].speakerstringSprecher des gefundenen Zugs.
matches[].tstringRelativer Zeitstempel, z. B. ~01:04.
matches[].textstringDer gefundene Transkripttext.

search_facts Keine zusätzlichen Tool-Kosten

Stichwort-Volltextsuche über die Szenen-Beats Ihrer Kampagne — die dichten, Beat-für-Beat-Zusammenfassungen, über die der Chat-Pfad schlussfolgert. Am besten für exakte Begriffe (ein Name, ein Gegenstand, ein Ort). Gibt Beat-Text mit seinem Szenen-/Sitzungskontext und Zugbereich zurück, sodass ein Agent den Moment lokalisieren und als Nächstes das exakte Transkript-Fenster abrufen kann. Kein LLM, kein Embedding, keine Credits. Für natürlichsprachliche, bedeutungsbasierte Suche verwenden Sie search_corpus.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "query": "white moose hunt",
  "recap_id": "r1e2c3a4-…"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu durchsuchende Kampagne.
querystringStichwörter, die gegen den Beat-Text abgeglichen werden sollen (Volltextsuche).
recap_idstring (uuid) | omittedOptionaler Sitzungsbereich. Verwenden Sie list_sessions, um Recap-IDs zu ermitteln.

Beispielausgabe

{
  "matches": [
    {
      "recap_id": "…",
      "session_number": 12,
      "session_title": "The Choosing",
      "scene_title": "The hunt",
      "beat_index": 3,
      "turn_start": 120,
      "turn_end": 168,
      "text": "The party tracked the white moose north of the old inn…",
      "truncated": false
    }
  ]
}

Feldbeschreibungen

FeldTypBeschreibung
matchesarrayPassende Beats, bester Treffer zuerst.
matches[].recap_idstring (uuid)Sitzung, aus der der Beat stammt.
matches[].session_numberinteger | nullDie Sitzungsnummer des Spielleiters, sofern gesetzt.
matches[].session_titlestring | nullDer Titel der Sitzung, sofern gesetzt.
matches[].scene_titlestring | nullTitel der Szene, zu der der Beat gehört.
matches[].beat_indexintegerDie Position des Beats innerhalb seiner Szene.
matches[].turn_startintegerErster Zug des Beat-Fensters (an get_transcript_window übergeben).
matches[].turn_endintegerLetzter Zug des Beat-Fensters.
matches[].textstringDer Beat-Text (auf 1200 Zeichen begrenzt).
matches[].truncatedbooleanTrue, wenn der Beat-Text gekürzt wurde.

Verbraucht Chat-Credits

Drei Tools verbrauchen abgerechnete Chat-Credits. Denken Sie an Finder vs. Antwort: search_corpus (wenige Chat-Credits) liefert Ihnen die stärksten Treffer als strukturierte Belege, über die Ihr eigenes Modell schlussfolgern kann — ein schneller Finder, kein erschöpfender Index; ask_campaign_cited beantwortet eine Frage aus Sicht des Spielleiters mit wörtlichen Transkriptzitaten und Zugverweisen; und ask_player_campaign_cited liefert die kürzere, spielergerichtete Version über den Spieler-Pfad. Alle sind zusätzlich zu Ihrem Guthaben pro API-Schlüssel ratenbegrenzt.

search_corpus Verbraucht wenige Chat-Credits search_corpus findet relevante Kampagnenmomente, auch wenn du den genauen Wortlaut nicht kennst. Es nutzt semantische Suche und Reranking, um die stärksten Belegtreffer zurückzugeben, einschließlich Zusammenfassung, Sitzungskontext und Zugbereichen. Es ist ein Finder, kein vollständiger Index: Nur die besten Treffer kommen zurück, behandle ein leeres oder dünnes Ergebnis also als „nichts Starkes aufgetaucht“, nicht als Beweis, dass nichts existiert. Nutze die Treffer, um die tatsächlichen Begriffe oder Namen zu entdecken, die die Tabelle verwendet hat, und führe dann eine vollständige kostenlose Stichwortsuche mit search_facts / search_transcript durch, oder nimm die Zugbereiche direkt zu get_transcript_window für das wörtliche Segment. Für eine definitive, verifizierte Antwort auf eine Frage — wörtliche Zitate und Belege — verwende stattdessen ask_campaign_cited (teurer, eine schriftliche Antwort statt strukturierter Zeilen). Setze player_safe: true, um GM-only-Inhalte aus den Suchergebnissen auszuschließen. Es verbraucht wenige Chat-Credits pro Suche, berechnet bei jeder abgeschlossenen Suche, auch bei einer ohne Treffer.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "query": "when did the party first distrust the mayor?",
  "player_safe": false
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die zu durchsuchende Kampagne.
querystringEine natürlichsprachliche Beschreibung dessen, wonach du suchst.
player_safeboolean (Standard false)Wenn true, ist der Abruf sichtbarkeitsgefiltert — GM-only-, abgeleitete und spekulative Erinnerungen sowie vom GM eingegebene Lore werden ausgeschlossen. Verwende dies für alles, was Spieler sehen werden.

Beispielausgabe

{
  "matches": [
    {
      "object_id": "…",
      "type": "plot_event",
      "visibility": "player_known",
      "recap_id": "…",
      "session_number": 8,
      "session_title": "The Mayor’s Bargain",
      "turn_start": 212,
      "turn_end": 240,
      "text": "The party noticed the mayor’s story about the missing caravan didn’t add up…",
      "truncated": false
    }
  ],
  "credit_cost": "<chat credits charged for this search>"
}

Feldbeschreibungen

FeldTypBeschreibung
matchesarrayGereihte Erinnerungstreffer, bester Treffer zuerst.
matches[].object_idstring (uuid)Die id des Erinnerungsobjekts.
matches[].typestringDie Art der Erinnerung (z. B. plot_event, npc_fact).
matches[].visibilitystringWer dies weiß. Bei einer player_safe-Suche ist es immer nur spielersichtbar.
matches[].recap_idstring (uuid) | nullDie Sitzung, aus der die Erinnerung stammt.
matches[].session_numberinteger | nullDie Sitzungsnummer des GM, sofern gesetzt.
matches[].session_titlestring | nullDer Titel der Sitzung, sofern gesetzt.
matches[].turn_startinteger | nullErster Zug des Belegfensters (einspeisen in get_transcript_window).
matches[].turn_endinteger | nullLetzter Zug des Belegfensters.
matches[].textstringDie Erinnerungszusammenfassung (begrenzt auf 1200 Zeichen).
matches[].truncatedbooleanTrue, wenn die Zusammenfassung gekürzt wurde.
credit_costnumberFür diese abgeschlossene Suche berechnete Chat-Credits.

ask_campaign_cited Verbraucht Chat-Credits

Stelle deiner Kampagne eine GM-orientierte Faktenfrage und erhalte die KI-Antwort — dieselbe Beats-Antwortmaschine wie im In-App-Chat, mit wörtlichen Transkriptzitaten und Zugbelegen. Verbraucht GM-Chat-Credits, dieselben Kosten wie im In-App-Chat. Zusätzlich zu deinem Guthaben pro API-Schlüssel ratenbegrenzt.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "question": "Where did the hunter see the moose?"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die Kampagne, die du fragst.
questionstringDeine Frage.
clarificationobject | omittedOptional: Beantworte eine Rückfrage, die die Engine gestellt hat (nur GM-Lane).
clarification.questionstringDie Rückfrage der Engine.
clarification.answerstringDeine Antwort auf diese Frage.
supersedesstring | omittedNachrichten-id einer früheren Antwort, die ersetzt werden soll (nur GM-Lane).

Beispielausgabe

{
  "answer_markdown": "The hunter reported seeing the white moose near the old inn to the north of town [1].",
  "quotes": [
    {
      "turn": 104,
      "speaker": "Skoll",
      "text": "All you know is that it’s a white moose.",
      "recap_id": "…"
    }
  ],
  "confidence_label": "high",
  "credit_cost": 1
}

Feldbeschreibungen

FeldTypBeschreibung
answer_markdownstringDie belegte Antwort, mit Inline-[n]-Markern.
citationsarrayBeleg-Metadaten, die jeden Marker stützen.
quotesarrayWörtliche Transkriptzitate, die als Beleg verwendet werden.
confidence_labelstringGrobes Konfidenzband.
Werte: high | medium | low
credit_costnumberFür diese Antwort berechnete Credits.
quotes[].turnintegerDer belegte Zugindex.
quotes[].recap_idstring (uuid) | nullDie Sitzung, aus der das Zitat stammt.

ask_player_campaign_cited Verbraucht Chat-Credits

Stelle eine spielerorientierte faktische Kampagnenfrage und erhalte eine kurze, spielersichere Antwort mit Transkriptbelegen. GM-only-Inhalte werden durch die serverseitige Player-Lane ausgeschlossen. Verbraucht Spieler-Chat-Credits.

Beispieleingabe

{
  "campaign_id": "a1b2c3d4-…",
  "question": "What do we know about the harbour?"
}

Feldbeschreibungen

FeldTypBeschreibung
campaign_idstring (uuid)Die Kampagne, die du fragst.
questionstringDeine Frage.

Beispielausgabe

{
  "answer_markdown": "The party knows the harbourmaster helped them find the missing crate [1].",
  "quotes": [
    {
      "turn": 104,
      "speaker": "Skoll",
      "text": "The harbourmaster pointed us to the crate.",
      "recap_id": "…"
    }
  ],
  "confidence_label": "medium",
  "credit_cost": 1
}

Feldbeschreibungen

FeldTypBeschreibung
answer_markdownstringDie belegte Antwort, mit Inline-[n]-Markern.
citationsarrayBeleg-Metadaten, die jeden Marker stützen.
quotesarrayWörtliche Transkriptzitate, die als Beleg verwendet werden.
confidence_labelstringGrobes Konfidenzband.
Werte: high | medium | low
credit_costnumberFür diese Antwort berechnete Credits.

Spielersicheres Beispiel

Baust du einen spielerorientierten Bot oder ein Overlay? Verwende das Player-Cited-Tool, damit die Antwort aus der Player-Lane kommt, deren sichtbarkeitsgefiltertes Ledger niemals GM-only-Inhalte enthält:

{
  "tool": "ask_player_campaign_cited",
  "arguments": {
    "campaign_id": "a1b2c3d4-…",
    "question": "What do we know about the harbour?"
  }
}

Wohin deine Daten gehen

Wenn du einen MCP-Client verbindest und diese Tools verwendest, wird dein Kampagneninhalt an den von dir gewählten KI-Client gesendet — zum Beispiel ChatGPT, Claude oder Gemini. Die Datenverwendungs- und Trainingsbedingungen dieses Anbieters gelten für das, was du ihm sendest, nicht für unsere.

Die No-Training-Garantie von Recap Raven deckt unsere eigene Pipeline und die von uns offengelegten Modellanbieter ab. Sie kann einen von dir verbundenen Client nicht abdecken: Indem du einen einbindest, wählst du einen neuen Verarbeiter für deine Kampagnendaten. Bitte prüfe die Bedingungen dieses Clients, bevor du ihn verbindest, und verwende ask_player_campaign_cited oder spielersichere Suchfilter (und vermeide GM-only-Lesevorgänge wie Lore und Chronik) für alles, was Spieler sehen werden.

Fragen oder Feedback? Sieh dir an, wie Recap Raven funktioniert oder lade den Bot unten ein.

Führe Recap Raven bei deiner nächsten Sitzung aus

Lade den Bot ein, erstelle deine Kampagne und erhalte jeden Monat kostenlose Recaps.

Führe Recap Raven bei deiner nächsten Sitzung aus

Keine Karte erforderlich · Aufzeichnung nur mit Zustimmung deines Tisches · Lösche oder exportiere deine Daten jederzeit

Fragen oder Feedback? Tritt unserer Discord-Community bei →

Gebaut für Discord-Voice. Wir erfassen die gesamte Sitzung für dich — kein nachträgliches Einloggen, keine Dateien, die du uns senden musst, und kein Raten, wer gesprochen hat. Memory-Pläne halten dein bearbeitbares Welt-Wiki aktuell, während du spielst, bereit für Fragen dazu, was passiert ist, wer was gesagt hat, offene Handlungsfäden und was als Nächstes vorzubereiten ist.