Recap Raven

officiel

Preneur de notes D&D pour Discord : recherchez et citez les récapitulatifs de vos sessions TTRPG, quêtes, PNJ et transcriptions depuis n'importe quelle IA. Nécessite une clé API Recap Raven.

Que pouvez-vous faire avec Recap Raven MCP ?

  • Lister les campagnes et les sessions — Demandez à votre IA de lister vos campagnes et d'associer un numéro de session au bon récapitulatif avant de récupérer les détails.
  • Rechercher dans les transcriptions et les beats — Effectuez des recherches par mot-clé exactes sur les tours de transcription ou les beats de scène pour trouver où un nom, un objet ou un lieu a été mentionné.
  • Lire les récapitulatifs et les fenêtres de transcription — Récupérez un récapitulatif sans risque pour les joueurs ou une tranche positionnelle des tours stockés d'une session par plage d'index.
  • Examiner la préparation et les intrigues ouvertes — Récupérez les intrigues narratives non résolues, un pack de préparation pour la prochaine session et un résumé des épisodes précédents pour une campagne.
  • Consulter les entités et le lore — Obtenez la liste des entités ou une fiche d'entité unique, ainsi que les documents de lore et les entrées de lexique.
  • Vérifier l'engagement et les quêtes — Consultez les tendances de participation par intervenant, le journal de quêtes visible par les joueurs et votre utilisation des crédits Ask.

Serveur MCP hébergé

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

S’installe dans Claude Code, Codex, Cursor et plus

Documentation

Pour des workflows IA personnalisés

Vos outils de campagne, dans un client IA compatible.

Consultez vos récapitulatifs et les données de vos campagnes via MCP. L'accès existant par clé API fonctionne avec les clients compatibles. Connectez-vous depuis une application IA qui prend en charge une identité de client publique ; vérifiez les exigences de votre client ci-dessous avant de vous connecter.

Qu'est-ce que MCP ?

MCP permet aux applications IA compatibles d'appeler directement les outils de Recap Raven. Au lieu de copier vos récapitulatifs dans une autre IA, votre IA peut demander à Recap Raven des sessions, des fenêtres de transcription, des accroches, des entités, des citations et des réponses sur la campagne.

Pour commencer

Le point de terminaison MCP distant de Raven est https://mcp.recapraven.com/mcp . Choisissez un client pour les instructions de configuration. Premium inclut les lectures déterministes ; Searchable Memory est requis pour la recherche en mémoire et les réponses IA.


Point de terminaison MCP

https://mcp.recapraven.com/mcp

Configuration de ChatGPT

  1. Sur le site web de ChatGPT, ouvrez Plugins, sélectionnez +, puis Add custom MCP server. Saisissez « Recap Raven » et l'URL du serveur ci-dessous.
  2. Lorsque la connexion Raven est activée, choisissez l'option OAuth et identité de client publiée (CIMD) avec authentification de client public. Aucun secret client ni clé API Raven n'est nécessaire. L'enregistrement automatique de client n'est pas pris en charge par Raven.
  3. Créez le plugin, installez-le, puis connectez-vous à Raven et vérifiez l'identité de l'application et l'accès demandé. N'approuvez qu'une connexion que vous avez initiée.
  4. Dans une conversation, sélectionnez Recap Raven avec @ et demandez : « Use Recap Raven to list my campaigns. »
  5. Les outils de lecture et d'écriture dépendent de vos autorisations et de vos confirmations. Si la configuration est incomplète, vérifiez les restrictions de l'espace de travail et le guide officiel de configuration de ChatGPT pour votre application.

URL du serveur distant ChatGPT

https://mcp.recapraven.com/mcp

Consentement et aide à la connexion

Une connexion Raven demandera l'autorisation d'accéder à vos campagnes, transcriptions et informations réservées au MJ. Les résultats des outils sont transmis au fournisseur d'IA de votre choix, et les outils payants consomment vos crédits Ask existants.

Si vous approuvez l'accès en arrière-plan, l'application peut actualiser sa connexion pendant jusqu'à 30 jours, même lorsque vous êtes déconnecté de Raven. Après expiration ou révocation, reconnectez-vous et approuvez à nouveau. Dans les paramètres du compte, consultez les connexions IA approuvées et déconnectez une connexion ou utilisez Disconnect all AI connections. Les clés API sont gérées séparément.

Résultats vides ? Vérifiez que vous êtes connecté au compte Raven propriétaire de vos campagnes. Un changement de forfait peut supprimer l'accès aux outils ; les réponses IA nécessitent également des crédits disponibles. Si le consentement expire ou échoue, relancez la connexion depuis le client.

Des menus manquants ou un espace de travail non pris en charge ne peuvent pas être corrigés en changeant votre clé Raven. Consultez les exigences du fournisseur liées ou contactez notre communauté Discord en indiquant le nom de l'application, la version et le message d'erreur. N'envoyez pas de jetons ni de clés.

Disponible avec Premium et Searchable Memory

Premium inclut les clés API et l'accès à vos récapitulatifs, transcriptions et données World manuelles disponibles. Searchable Memory est requis pour les outils de mémoire, la recherche de campagne et les réponses IA. La recherche sémantique et les réponses IA consomment vos crédits Ask existants.

Disponibilité MCP par forfait

Forfait gratuitIndisponible
PremiumClés API, récapitulatifs, transcriptions et données World manuelles disponibles. Les outils de mémoire ne sont pas inclus.
Forfaits avec mémoireOutils déterministes sans coût supplémentaire ; search_corpus utilise peu de crédits de chat par recherche, et les outils ask cités consomment des crédits Ask.
Clé APICréez une clé API personnelle depuis API Keys. Révoquez-la à tout moment ; l'accès MCP prend fin lorsque le compte revient au forfait gratuit.

Usage équitable et limites de débit

Le serveur MCP est une surface partagée et mesurée. Pour le maintenir durable (et empêcher une boucle d'agent emballée de consommer toute une licence en quelques minutes), chaque clé API est soumise à une limite de débit en plus de votre allocation Ask.

Limites de débit MCP

Usage équitable du serveurPlafond de requêtes par clé API sur le serveur MCP lui-même (tous appels d'outils confondus) — empêche une seule clé d'inonder le point de terminaison. Les réponses au-delà de la limite renvoient 429 avec Retry-After.
Premium · tous forfaits / Memory · 5 sessions15 requêtes/minute et 150 requêtes/heure.
Memory · 10 sessions30 requêtes/minute et 450 requêtes/heure.
Memory · 20 sessions60 requêtes/minute et 1200 requêtes/heure.
Outils gratuitsLimités par clé API. Les lectures déterministes et les recherches par mots-clés (search_transcript, search_facts) ne coûtent aucun crédit. La recherche sémantique search_corpus n'est pas incluse ici ; elle utilise peu de crédits de chat par recherche terminée.
Outils à crédits de chatsearch_corpus (peu de crédits de chat) et les outils ask cités sont limités à la fois par votre allocation Ask et par une limite de débit par clé. Le portail d'usage arrête les dépenses lorsque l'allocation est épuisée ; la limite de débit empêche un pic de l'épuiser instantanément. Pas de quota MCP séparé — votre agent dépense les mêmes crédits de chat par licence qu'il utilise dans l'application.

Inclus sans coût supplémentaire

Outils de lecture déterministes — sessions, entités et registre, accroches, mécaniques, engagement, recherche de transcriptions et de beats, récapitulatifs, lore et lexique. Ils renvoient les données de campagne stockées sans inférence IA, donc les outils disponibles ne coûtent aucun crédit. Les outils de mémoire nécessitent toujours Searchable Memory. La recherche sémantique search_corpus n'est pas incluse dans cette liste ; elle utilise peu de crédits de chat. Développez un outil pour voir un exemple d'entrée, un exemple de sortie et la référence des champs.

list_campaigns Aucun frais d'outil supplémentaire

Outil de découverte : liste les campagnes disponibles pour votre clé MCP afin que les autres outils puissent utiliser le bon campaign_id.

Exemple d'entrée

{}

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
campaignsarrayCampagnes appartenant à votre compte.
campaigns[].campaign_idstring (uuid)Utilisez cet id avec les outils MCP limités à une campagne.
campaigns[].namestringNom de la campagne.
campaigns[].modulestring | nullLibellé de module/système facultatif.

list_sessions Aucun frais d'outil supplémentaire

Outil de découverte : liste les sessions prêtes avec leur session_number et leur titre, afin qu'un agent puisse associer « session 12 » au bon recap_id.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid) | omisFiltre de campagne facultatif.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
recapsarraySessions prêtes visibles par votre compte.
recaps[].recap_idstring (uuid)Utilisez cet id avec get_recap, get_transcript_window et get_mechanics_events.
recaps[].campaign_idstring (uuid) | nullCampagne propriétaire de la session.
recaps[].session_numberinteger | nullLa numérotation des sessions du MJ, basée sur 1 (modifiable par le MJ), lorsqu'elle est définie.
recaps[].titlestring | nullTitre de la session.
recaps[].statusstringSeules les sessions prêtes sont listées.

get_engagement Aucun frais d'outil supplémentaire

Le tableau de bord d'engagement de la campagne : tendance de participation par intervenant et synthèse inter-sessions mise en cache (résumé + chronologie des événements clés).

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire. Doit appartenir à votre compte.

Exemple de sortie

{
  "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
        }
      ]
    }
  ]
}

Descriptions des champs

ChampTypeDescription
sessionsarrayUne entrée par session prête dans la campagne.
sessions[].recap_idstring (uuid)L'id du récapitulatif/de la session.
sessions[].session_refstringRéférence humaine courte, par ex. S01AB.
sessions[].session_atstring (ISO 8601)Date de début de la session (UTC).
playersarrayUne entrée par intervenant reconnu.
players[].speakerstringNom d'affichage de l'intervenant.
players[].pointsarrayMétriques par session pour cet intervenant.
players[].points[].participation_pctnumberPart de la conversation, 0–100.
players[].points[].turn_countintegerNombre de tours de parole pris.
players[].points[].talk_time_secondsintegerNombre total de secondes de parole.
players[].points[].word_countintegerNombre total de mots prononcés.

get_credit_balance Aucun frais d'outil supplémentaire

Votre allocation Ask en pourcentage utilisé, plus un fil d'activité récente. Les décomptes bruts d'allocation ne sont pas exposés aux clients MCP.

Exemple d'entrée

{}

Exemple de sortie

{
  "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"
    }
  ]
}

Descriptions des champs

ChampTypeDescription
usage.percent_usedintegerUtilisation Ask en nombre entier de 0 à 100.
recent_activityarrayFil du plus récent au plus ancien (événements session-recorded, recap-ready, credit-ledger).
recent_activity[].typestringType d'événement.
valeurs : recap_ready | session_recorded | credit
recent_activity[].labelstringRésumé lisible par l'humain.
recent_activity[].datestring (ISO 8601)Date de l'événement.
recent_activity[].recap_idstring (uuid) | nullPrésent pour les événements liés à un récapitulatif/une session.

get_memory_overview Aucun frais d'outil supplémentaire

Le plus riche ensemble de conscience situationnelle du MJ : distribution, tendance d'engagement + score global, participation par session, piliers de jeu.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
distributionarrayPart de jeu par catégorie.
distribution[].labelstringNom de la catégorie.
distribution[].pctnumberPart, 0–100.
engagement.overall.scorenumber | nullScore d'engagement composite, 0–100.
engagement.overall.labelstring | nullLibellé qualitatif, par ex. « Playful / tense ».
pillarsstring[] | nullThèmes récurrents / piliers de jeu.

get_quest_log Aucun frais d'outil supplémentaire

Le journal de quêtes visible par les joueurs. Les ajouts et modifications du MJ sont partagés avec le groupe via Discord /questlog. Gardez les secrets du MJ à l'écart.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)Votre campagne à lire.
pageintegerFacultatif, à partir de 1. Dix quêtes par page.

Exemple de sortie

{
  "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
}

Descriptions des champs

ChampTypeDescription
questsarrayActives/en attente d'abord, puis terminées/abandonnées. Les métadonnées d'édition internes et les liens sources sont exclus.
quests[].idstring (uuid)Identifiant de la quête.
quests[].titlestringTitre de la quête.
quests[].objectivestringL'objectif du groupe.
quests[].statusstringactive, stale, completed ou abandoned.
quests[].progressstringDernière progression enregistrée.
pageintegerPage actuelle.
has_morebooleanDemandez la page suivante lorsque true.

get_open_hooks Aucun frais d'outil supplémentaire

Accroches narratives non résolues — ce qu'il faut préparer pour la prochaine session.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
hooksarrayAccroches narratives actuellement ouvertes.
hooks[].textstringLa description de l'accroche.
hooks[].session_refstringSession où l'accroche a été introduite.
hooks[].session_datestring (YYYY-MM-DD)Date de cette session.

get_previously_on Aucun frais d'outil supplémentaire

Contexte « précédemment dans » pour la campagne, construit à partir de la mémoire limitée au propriétaire.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
sectionsarraySections de mémoire de campagne pour le récapitulatif/le contexte.
sections[].titlestringTitre de la section.
sections[].bulletsstring[]Puces de mémoire concises.

get_next_session_prep_pack Aucun frais d'outil supplémentaire Avis de préparation pour la prochaine session, réservé au MJ, issu du cache de préparation de Recap Raven. Il peut être généré une fois, puis reste en cache jusqu'à l'ingestion du prochain récapitulatif. Renvoie credit_cost : 0.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à préparer. Doit appartenir à votre compte.

Exemple de sortie

{
  "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"
}

Descriptions des champs

ChampTypeDescription
likely_directionsarrayDirections probables pour la prochaine session, à l'attention du MJ.
threads_to_watchstring[]Fils narratifs que le MJ pourrait vouloir garder à l'esprit.
prep_suggestionsstring[]Invitations concrètes à la préparation pour le MJ.
credit_costnumberToujours 0 pour cet outil MCP.
cache_policystringcached_until_next_recap_ingested.

get_chronicle Aucun frais d'outil supplémentaire

Carte des scènes par session — la chronique structurée de la campagne.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
sessionsarrayUne entrée par session.
sessions[].recap_idstring (uuid)L'identifiant du récapitulatif/de la session.
sessions[].scenesstring[]Libellés de scènes ordonnés pour cette session.

get_entity Aucun frais d'outil supplémentaire

Le registre des entités visible par les joueurs, dérivé des sessions enregistrées ; le lore privé téléversé est exclu. Sans nom, il renvoie la liste des entités. Avec un nom ou un alias, il renvoie la fiche correspondante, l'historique des interactions, les liens vers les tours de transcription, les relations ou les candidats en cas d'ambiguïté.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.
namestring | omittedNom/alias d'entité à résoudre en une fiche unique. Omettre pour obtenir la liste.

Exemple de sortie

{
  "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"
      }
    ]
  }
}

Descriptions des champs

ChampTypeDescription
entitiesarray (mode liste)Lorsqu'aucun nom n'est fourni : {canonical_name, kind, aliases, search_aliases} pour chaque entité.
entityobject | null (mode fiche)Lorsqu'un nom est fourni : la fiche d'entité résolue, ou null si le nom ne correspond à rien.
candidatesarrayFiches d'entité possibles lorsqu'un alias est ambigu ; vide lorsque la résolution est unique.
entity.idstring (uuid)Identifiant stable de l'entité dans la campagne.
entity.canonical_namestringNom canonique de l'entité.
entity.kindstringType d'entité.
valeurs : pc | npc | creature | place | item | faction | deity | other
entity.aliasesstring[]Alias d'affichage.
entity.search_aliasesstring[]Alias réservés à la recherche.
entity.interactionsarrayEntrées d'historique ancrées avec liens vers le récapitulatif et les tours de transcription.
entity.interactions[].recap_idstring (uuid)Session contenant l'interaction.
entity.interactions[].turn_startinteger | nullPremier tour de transcription pour le lien de preuve.
entity.interactions[].turn_endinteger | nullDernier tour de transcription pour le lien de preuve.
entity.interactions[].identity_matchstringconfirmed ou suggested ; les liens suggested sont des correspondances d'alias possibles, et non des affirmations d'identité canonique.
valeurs : confirmed | suggested
entity.relationsarrayGraphe des relations (du plus ancien au plus récent).
entity.relations[].predicatestringp. ex. located_in, ally_of, owns.
entity.relations[].recap_idstring (uuid)Session qui atteste la relation.
entity.relations[].visibilitystringVisibilité MJ de l'arête. Les données héritées antérieures aux témoins peuvent porter des arêtes dm_only — ne pas les exposer aux joueurs.
valeurs : player_known | dm_only
entity.relations[].is_currentbooleanLe segment actif d'un prédicat à état.

get_mechanics_events Aucun frais d'outil supplémentaire

Événements mécaniques ancrés aux tours (attaques, sorts, dégâts, repos, états) pour une session — les mêmes données que l'onglet mécaniques.

Exemple d'entrée

{
  "recap_id": "…"
}

Descriptions des champs

ChampTypeDescription
recap_idstring (uuid)La session à lire. Utilisez list_sessions pour découvrir les identifiants.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
recap_idstring (uuid)La session à laquelle appartiennent ces événements.
mechanicsarrayÉvénements mécaniques ancrés aux tours.
mechanics[].actionstringType d'événement.
valeurs : attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed
mechanics[].actorstringQui a agi.
mechanics[].evidence_turn_startintegerPremier tour attestant l'événement.
mechanics[].evidence_turn_endintegerDernier tour attestant l'événement.

get_lore_documents Aucun frais d'outil supplémentaire

La liste des documents de lore de la campagne.

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
documentsarrayDocuments de lore.
documents[].idstring (uuid)Identifiant du document.
documents[].titlestringTitre du document.

get_lore_document Aucun frais d'outil supplémentaire

Un document de lore unique avec son corps complet.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.
doc_idstring (uuid)Le document de lore à récupérer.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
document.idstring (uuid)Identifiant du document.
document.titlestringTitre du document.
document.bodystringCorps complet du document (markdown).

get_lexicon Aucun frais d'outil supplémentaire

Entrées du lexique (noms canoniques, alias, type, confiance).

Exemple d'entrée

{
  "campaign_id": "a1b2c3d4-…"
}

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à lire.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
entriesarrayEntrées du lexique.
entries[].canonicalstringNom canonique.
entries[].typestringType d'entité.
valeurs : npc | place | item | creature | other
entries[].aliasesstring[]Noms alternatifs / alias.
entries[].confidencenumberConfiance d'extraction, de 0 à 1.
entries[].enabledbooleanIndique si cette entrée est active.

get_transcript_window Aucun frais d'outil supplémentaire

Une tranche positionnelle des tours stockés d'une session (pas de recherche de contenu — uniquement des indices de tour de début et de fin).

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
recap_idstring (uuid)Le récapitulatif/la session à lire. Utilisez list_sessions pour découvrir les identifiants.
fromintegerIndice du tour de début (inclus, 0 par défaut).
tointegerIndice du tour de fin. Omettre pour une fenêtre de 50 tours à partir de l'indice de début.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
total_turnsintegerNombre total de tours dans la session.
fromintegerIndice de début renvoyé.
tointegerIndice de fin renvoyé.
turnsarrayTours dans la fenêtre demandée.
turns[].indexintegerIndice positionnel dans la session.
turns[].tstringHorodatage relatif, p. ex. ~00:01.
turns[].speakerstringNom d'affichage de l'intervenant.
turns[].textstringLe texte prononcé.

get_recap Aucun frais d'outil supplémentaire

Le HTML du récapitulatif sûr pour les joueurs d'un récapitulatif prêt. Le type d'artefact est géré par le serveur ; il n'y a pas d'entrée de type.

Exemple d'entrée

{
  "recap_id": "…"
}

Descriptions des champs

ChampTypeDescription
recap_idstring (uuid)Le récapitulatif/la session dont le récapitulatif sûr pour les joueurs doit être récupéré.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
recap.recap_idstring (uuid)L'identifiant du récapitulatif/de la session.
recap.content_typestringToujours player_recap_html.
valeurs : player_recap_html
recap.htmlstringLe HTML du récapitulatif sûr pour les joueurs.
recap.truncatedbooleanVrai lorsque la limite de réponse MCP a tronqué le HTML.

search_transcript Aucun frais d'outil supplémentaire

Recherche par mot-clé exact (plein texte) sur les tours de transcription de votre campagne. Renvoie les tours contenant la phrase exacte, avec leur session, l'intervenant et l'horodatage — sans LLM, sans embedding, sans crédits.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à rechercher.
querystringPhrase exacte à rechercher (recherche plein texte sur le texte de transcription).
recap_idstring (uuid) | omittedPortée de session facultative. Utilisez list_sessions pour découvrir les identifiants de récapitulatif.

Exemple de sortie

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

Descriptions des champs

ChampTypeDescription
querystringÉcho de la requête soumise.
matchesarrayTours de transcription contenant la phrase exacte, meilleure correspondance en premier.
matches[].recap_idstring (uuid)Récapitulatif/session d'où provient la correspondance.
matches[].speakerstringIntervenant du tour correspondant.
matches[].tstringHorodatage relatif, p. ex. ~01:04.
matches[].textstringLe texte de transcription correspondant.

search_facts Aucun frais d'outil supplémentaire

Recherche par mot-clé plein texte sur les beats de scène de votre campagne — les résumés denses, beat par beat, sur lesquels raisonne la voie de chat. Idéal pour les termes exacts (un nom, un objet, un lieu). Renvoie le texte du beat avec son contexte de scène/session et sa plage de tours, afin qu'un agent puisse localiser le moment et récupérer ensuite la fenêtre de transcription exacte. Sans LLM, sans embedding, sans crédits. Pour une recherche en langage naturel, fondée sur le sens, utilisez search_corpus.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à rechercher.
querystringMots-clés à rechercher dans le texte des beats (recherche plein texte).
recap_idstring (uuid) | omittedPortée de session facultative. Utilisez list_sessions pour découvrir les identifiants de récapitulatif.

Exemple de sortie

{
  "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
    }
  ]
}

Descriptions des champs

ChampTypeDescription
matchesarrayBeats correspondants, meilleure correspondance en premier.
matches[].recap_idstring (uuid)Session d'où provient le beat.
matches[].session_numberinteger | nullLe numéro de session du MJ, lorsqu'il est défini.
matches[].session_titlestring | nullLe titre de la session, lorsqu'il est défini.
matches[].scene_titlestring | nullTitre de la scène à laquelle appartient le beat.
matches[].beat_indexintegerPosition du beat dans sa scène.
matches[].turn_startintegerPremier tour de la fenêtre du beat (à transmettre à get_transcript_window).
matches[].turn_endintegerDernier tour de la fenêtre du beat.
matches[].textstringLe texte du beat (limité à 1200 caractères).
matches[].truncatedbooleanVrai lorsque le texte du beat a été tronqué.

Consomme des crédits de chat

Trois outils consomment des crédits de chat décomptés. Pensez chercheur vs réponse : search_corpus (faibles crédits de chat) vous fournit les meilleures correspondances sous forme de preuves structurées sur lesquelles votre propre modèle peut raisonner — un chercheur rapide, pas un index exhaustif ; ask_campaign_cited répond à une question destinée au MJ avec des citations verbatim de la transcription et des références de tours ; et ask_player_campaign_cited en donne la version plus courte destinée aux joueurs via la voie joueur. Tous sont limités en débit par clé d'API, en plus de votre solde.

search_corpus Consomme de faibles crédits de chat search_corpus trouve les moments pertinents d'une campagne même lorsque vous ne connaissez pas la formulation exacte. Il utilise la recherche sémantique et le reranking pour renvoyer les correspondances de preuves les plus fortes, y compris le résumé, le contexte de session et les plages de tours. C'est un outil de recherche, pas un index exhaustif : seules les meilleures correspondances sont renvoyées, donc considérez un résultat vide ou mince comme « rien de fort n'est remonté », et non comme la preuve que rien n'existe. Utilisez les correspondances pour découvrir les termes ou noms réels employés par la table, puis lancez une recherche par mots-clés exhaustive et gratuite avec search_facts / search_transcript, ou portez directement les plages de tours sur get_transcript_window pour obtenir le segment mot pour mot. Pour une réponse définitive et vérifiée à une question — citations et extraits mot pour mot — utilisez plutôt ask_campaign_cited (plus coûteux, une réponse écrite plutôt que des lignes structurées). Définissez player_safe: true pour exclure le contenu réservé au MJ des résultats de recherche. Cela consomme peu de crédits de chat par recherche, facturés à toute recherche aboutie, même sans correspondance.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à rechercher.
querystringUne description en langage naturel de ce que vous cherchez.
player_safeboolean (par défaut false)Lorsque true, la récupération est filtrée par visibilité — la mémoire réservée au MJ, inférée et spéculative, ainsi que le lore saisi par le MJ sont exclus. À utiliser pour tout ce que les joueurs verront.

Exemple de sortie

{
  "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>"
}

Descriptions des champs

ChampTypeDescription
matchesarrayCorrespondances de mémoire classées, la meilleure en premier.
matches[].object_idstring (uuid)L'id de l'objet mémoire.
matches[].typestringLe type de mémoire (par ex. plot_event, npc_fact).
matches[].visibilitystringQui connaît ceci. Sur une recherche player_safe, c'est toujours visible par les joueurs uniquement.
matches[].recap_idstring (uuid) | nullLa session d'où provient la mémoire.
matches[].session_numberinteger | nullLe numéro de session du MJ, lorsqu'il est défini.
matches[].session_titlestring | nullLe titre de la session, lorsqu'il est défini.
matches[].turn_startinteger | nullPremier tour de la fenêtre de preuves (à transmettre à get_transcript_window).
matches[].turn_endinteger | nullDernier tour de la fenêtre de preuves.
matches[].textstringLe résumé de la mémoire (limité à 1200 caractères).
matches[].truncatedbooleanTrue lorsque le résumé a été tronqué.
credit_costnumberCrédits de chat facturés pour cette recherche aboutie.

ask_campaign_cited Consomme des crédits de chat

Posez à votre campagne une question factuelle destinée au MJ et obtenez la réponse de l'IA — le même moteur de réponses beats que dans le chat intégré, avec des citations de transcription mot pour mot et des références de tours. Consomme des crédits de chat MJ, au même coût que le chat intégré. Limité en débit par clé API, en plus de votre solde.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à interroger.
questionstringVotre question.
clarificationobject | omisFacultatif : répondez à une question de clarification posée par le moteur (voie MJ uniquement).
clarification.questionstringLa question de clarification du moteur.
clarification.answerstringVotre réponse à cette question.
supersedesstring | omisId de message d'une réponse antérieure à remplacer (voie MJ uniquement).

Exemple de sortie

{
  "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
}

Descriptions des champs

ChampTypeDescription
answer_markdownstringLa réponse citée, avec des marqueurs [n] en ligne.
citationsarrayMétadonnées de citation étayant chaque marqueur.
quotesarrayCitations de transcription mot pour mot utilisées comme preuves.
confidence_labelstringBande de confiance grossière.
valeurs : high | medium | low
credit_costnumberCrédits facturés pour cette réponse.
quotes[].turnintegerL'index du tour cité.
quotes[].recap_idstring (uuid) | nullLa session d'où provient la citation.

ask_player_campaign_cited Consomme des crédits de chat

Posez une question factuelle sur la campagne destinée aux joueurs et obtenez une réponse courte et sûre pour les joueurs avec des citations de transcription. Le contenu réservé au MJ est exclu par la voie joueur côté serveur. Consomme des crédits de chat joueur.

Exemple d'entrée

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

Descriptions des champs

ChampTypeDescription
campaign_idstring (uuid)La campagne à interroger.
questionstringVotre question.

Exemple de sortie

{
  "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
}

Descriptions des champs

ChampTypeDescription
answer_markdownstringLa réponse citée, avec des marqueurs [n] en ligne.
citationsarrayMétadonnées de citation étayant chaque marqueur.
quotesarrayCitations de transcription mot pour mot utilisées comme preuves.
confidence_labelstringBande de confiance grossière.
valeurs : high | medium | low
credit_costnumberCrédits facturés pour cette réponse.

Exemple sûr pour les joueurs

Vous créez un bot ou une superposition destinés aux joueurs ? Utilisez l'outil de citation joueur pour que la réponse provienne de la voie joueur, dont le registre filtré par visibilité n'inclut jamais de contenu réservé au MJ :

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

Où vont vos données

Lorsque vous connectez un client MCP et utilisez ces outils, le contenu de votre campagne est envoyé au client IA que vous avez choisi — par exemple ChatGPT, Claude ou Gemini. Les conditions d'utilisation des données et d'entraînement de ce fournisseur s'appliquent à ce que vous lui envoyez, pas aux nôtres.

La garantie de non-entraînement de Recap Raven couvre notre propre pipeline et les fournisseurs de modèles que nous divulguons. Elle ne peut pas couvrir un client que vous connectez : en en connectant un, vous choisissez un nouveau sous-traitant pour les données de votre campagne. Veuillez vérifier les conditions de ce client avant de le connecter, et utilisez ask_player_campaign_cited ou les filtres de recherche sûrs pour les joueurs (et évitez les lectures réservées au MJ comme le lore et la chronique) pour tout ce que les joueurs verront.

Des questions ou des retours ? Découvrez comment fonctionne Recap Raven ou invitez le bot ci-dessous.

Lancez Recap Raven à votre prochaine session

Invitez le bot, créez votre campagne et recevez des récapitulatifs gratuits chaque mois.

Lancez Recap Raven à votre prochaine session

Aucune carte requise · Enregistrez uniquement avec le consentement de votre table · Supprimez ou exportez vos données à tout moment

Des questions ou des retours ? Rejoignez notre communauté Discord →

Conçu pour la voix Discord. Nous capturons toute la session pour vous — pas de journalisation après coup, aucun fichier à nous envoyer et aucune supposition sur qui a parlé. Les forfaits Memory maintiennent votre wiki du monde modifiable à jour au fil de votre partie, prêt pour les questions sur ce qui s'est passé, qui a dit quoi, les intrigues en suspens et ce qu'il faut préparer ensuite.