Recap Raven
officielPreneur 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
- 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.
- 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.
- 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.
- Dans une conversation, sélectionnez Recap Raven avec @ et demandez : « Use Recap Raven to list my campaigns. »
- 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 gratuit | Indisponible |
| Premium | Clés API, récapitulatifs, transcriptions et données World manuelles disponibles. Les outils de mémoire ne sont pas inclus. |
| Forfaits avec mémoire | Outils 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é API | Cré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 serveur | Plafond 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 sessions | 15 requêtes/minute et 150 requêtes/heure. |
| Memory · 10 sessions | 30 requêtes/minute et 450 requêtes/heure. |
| Memory · 20 sessions | 60 requêtes/minute et 1200 requêtes/heure. |
| Outils gratuits | Limité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 chat | search_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
| Champ | Type | Description |
|---|---|---|
| campaigns | array | Campagnes appartenant à votre compte. |
| campaigns[].campaign_id | string (uuid) | Utilisez cet id avec les outils MCP limités à une campagne. |
| campaigns[].name | string | Nom de la campagne. |
| campaigns[].module | string | null | Libellé 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | omis | Filtre de campagne facultatif. |
Exemple de sortie
{
"recaps": [
{
"recap_id": "r1e2c3a4-…",
"campaign_id": "a1b2c3d4-…",
"session_number": 12,
"title": "The Choosing",
"status": "ready"
}
]
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| recaps | array | Sessions prêtes visibles par votre compte. |
| recaps[].recap_id | string (uuid) | Utilisez cet id avec get_recap, get_transcript_window et get_mechanics_events. |
| recaps[].campaign_id | string (uuid) | null | Campagne propriétaire de la session. |
| recaps[].session_number | integer | null | La numérotation des sessions du MJ, basée sur 1 (modifiable par le MJ), lorsqu'elle est définie. |
| recaps[].title | string | null | Titre de la session. |
| recaps[].status | string | Seules 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (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
| Champ | Type | Description |
|---|---|---|
| sessions | array | Une entrée par session prête dans la campagne. |
| sessions[].recap_id | string (uuid) | L'id du récapitulatif/de la session. |
| sessions[].session_ref | string | Référence humaine courte, par ex. S01AB. |
| sessions[].session_at | string (ISO 8601) | Date de début de la session (UTC). |
| players | array | Une entrée par intervenant reconnu. |
| players[].speaker | string | Nom d'affichage de l'intervenant. |
| players[].points | array | Métriques par session pour cet intervenant. |
| players[].points[].participation_pct | number | Part de la conversation, 0–100. |
| players[].points[].turn_count | integer | Nombre de tours de parole pris. |
| players[].points[].talk_time_seconds | integer | Nombre total de secondes de parole. |
| players[].points[].word_count | integer | Nombre 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
| Champ | Type | Description |
|---|---|---|
| usage.percent_used | integer | Utilisation Ask en nombre entier de 0 à 100. |
| recent_activity | array | Fil du plus récent au plus ancien (événements session-recorded, recap-ready, credit-ledger). |
| recent_activity[].type | string | Type d'événement. valeurs : recap_ready | session_recorded | credit |
| recent_activity[].label | string | Résumé lisible par l'humain. |
| recent_activity[].date | string (ISO 8601) | Date de l'événement. |
| recent_activity[].recap_id | string (uuid) | null | Pré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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (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
| Champ | Type | Description |
|---|---|---|
| distribution | array | Part de jeu par catégorie. |
| distribution[].label | string | Nom de la catégorie. |
| distribution[].pct | number | Part, 0–100. |
| engagement.overall.score | number | null | Score d'engagement composite, 0–100. |
| engagement.overall.label | string | null | Libellé qualitatif, par ex. « Playful / tense ». |
| pillars | string[] | null | Thè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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | Votre campagne à lire. |
| page | integer | Facultatif, à 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
| Champ | Type | Description |
|---|---|---|
| quests | array | Actives/en attente d'abord, puis terminées/abandonnées. Les métadonnées d'édition internes et les liens sources sont exclus. |
| quests[].id | string (uuid) | Identifiant de la quête. |
| quests[].title | string | Titre de la quête. |
| quests[].objective | string | L'objectif du groupe. |
| quests[].status | string | active, stale, completed ou abandoned. |
| quests[].progress | string | Dernière progression enregistrée. |
| page | integer | Page actuelle. |
| has_more | boolean | Demandez 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
Exemple de sortie
{
"hooks": [
{
"text": "Nobody bypasses the Choosing.",
"session_ref": "S01AB",
"session_date": "2026-06-20"
}
]
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| hooks | array | Accroches narratives actuellement ouvertes. |
| hooks[].text | string | La description de l'accroche. |
| hooks[].session_ref | string | Session où l'accroche a été introduite. |
| hooks[].session_date | string (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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
Exemple de sortie
{
"sections": [
{
"title": "Last time",
"bullets": [
"The party followed the white moose into the mist."
]
}
]
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| sections | array | Sections de mémoire de campagne pour le récapitulatif/le contexte. |
| sections[].title | string | Titre de la section. |
| sections[].bullets | string[] | 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (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
| Champ | Type | Description |
|---|---|---|
| likely_directions | array | Directions probables pour la prochaine session, à l'attention du MJ. |
| threads_to_watch | string[] | Fils narratifs que le MJ pourrait vouloir garder à l'esprit. |
| prep_suggestions | string[] | Invitations concrètes à la préparation pour le MJ. |
| credit_cost | number | Toujours 0 pour cet outil MCP. |
| cache_policy | string | cached_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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
Exemple de sortie
{
"sessions": [
{
"recap_id": "…",
"session_ref": "S01AB",
"scenes": [
"The market",
"The hunt",
"The banshee fight"
]
}
]
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| sessions | array | Une entrée par session. |
| sessions[].recap_id | string (uuid) | L'identifiant du récapitulatif/de la session. |
| sessions[].scenes | string[] | 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
| name | string | omitted | Nom/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
| Champ | Type | Description |
|---|---|---|
| entities | array (mode liste) | Lorsqu'aucun nom n'est fourni : {canonical_name, kind, aliases, search_aliases} pour chaque entité. |
| entity | object | null (mode fiche) | Lorsqu'un nom est fourni : la fiche d'entité résolue, ou null si le nom ne correspond à rien. |
| candidates | array | Fiches d'entité possibles lorsqu'un alias est ambigu ; vide lorsque la résolution est unique. |
| entity.id | string (uuid) | Identifiant stable de l'entité dans la campagne. |
| entity.canonical_name | string | Nom canonique de l'entité. |
| entity.kind | string | Type d'entité. valeurs : pc | npc | creature | place | item | faction | deity | other |
| entity.aliases | string[] | Alias d'affichage. |
| entity.search_aliases | string[] | Alias réservés à la recherche. |
| entity.interactions | array | Entrées d'historique ancrées avec liens vers le récapitulatif et les tours de transcription. |
| entity.interactions[].recap_id | string (uuid) | Session contenant l'interaction. |
| entity.interactions[].turn_start | integer | null | Premier tour de transcription pour le lien de preuve. |
| entity.interactions[].turn_end | integer | null | Dernier tour de transcription pour le lien de preuve. |
| entity.interactions[].identity_match | string | confirmed ou suggested ; les liens suggested sont des correspondances d'alias possibles, et non des affirmations d'identité canonique. valeurs : confirmed | suggested |
| entity.relations | array | Graphe des relations (du plus ancien au plus récent). |
| entity.relations[].predicate | string | p. ex. located_in, ally_of, owns. |
| entity.relations[].recap_id | string (uuid) | Session qui atteste la relation. |
| entity.relations[].visibility | string | Visibilité 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_current | boolean | Le 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
| Champ | Type | Description |
|---|---|---|
| recap_id | string (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
| Champ | Type | Description |
|---|---|---|
| recap_id | string (uuid) | La session à laquelle appartiennent ces événements. |
| mechanics | array | Événements mécaniques ancrés aux tours. |
| mechanics[].action | string | Type d'événement. valeurs : attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed |
| mechanics[].actor | string | Qui a agi. |
| mechanics[].evidence_turn_start | integer | Premier tour attestant l'événement. |
| mechanics[].evidence_turn_end | integer | Dernier 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
Exemple de sortie
{
"documents": [
{
"id": "…",
"title": "The Choosing",
"updated_at": "2026-06-20"
}
]
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| documents | array | Documents de lore. |
| documents[].id | string (uuid) | Identifiant du document. |
| documents[].title | string | Titre 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à lire. |
| doc_id | string (uuid) | Le document de lore à récupérer. |
Exemple de sortie
{
"document": {
"id": "…",
"title": "The Choosing",
"body": "…"
}
}
Descriptions des champs
| Champ | Type | Description |
|---|---|---|
| document.id | string (uuid) | Identifiant du document. |
| document.title | string | Titre du document. |
| document.body | string | Corps 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (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
| Champ | Type | Description |
|---|---|---|
| entries | array | Entrées du lexique. |
| entries[].canonical | string | Nom canonique. |
| entries[].type | string | Type d'entité. valeurs : npc | place | item | creature | other |
| entries[].aliases | string[] | Noms alternatifs / alias. |
| entries[].confidence | number | Confiance d'extraction, de 0 à 1. |
| entries[].enabled | boolean | Indique 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
| Champ | Type | Description |
|---|---|---|
| recap_id | string (uuid) | Le récapitulatif/la session à lire. Utilisez list_sessions pour découvrir les identifiants. |
| from | integer | Indice du tour de début (inclus, 0 par défaut). |
| to | integer | Indice 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
| Champ | Type | Description |
|---|---|---|
| total_turns | integer | Nombre total de tours dans la session. |
| from | integer | Indice de début renvoyé. |
| to | integer | Indice de fin renvoyé. |
| turns | array | Tours dans la fenêtre demandée. |
| turns[].index | integer | Indice positionnel dans la session. |
| turns[].t | string | Horodatage relatif, p. ex. ~00:01. |
| turns[].speaker | string | Nom d'affichage de l'intervenant. |
| turns[].text | string | Le 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
| Champ | Type | Description |
|---|---|---|
| recap_id | string (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
| Champ | Type | Description |
|---|---|---|
| recap.recap_id | string (uuid) | L'identifiant du récapitulatif/de la session. |
| recap.content_type | string | Toujours player_recap_html. valeurs : player_recap_html |
| recap.html | string | Le HTML du récapitulatif sûr pour les joueurs. |
| recap.truncated | boolean | Vrai 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à rechercher. |
| query | string | Phrase exacte à rechercher (recherche plein texte sur le texte de transcription). |
| recap_id | string (uuid) | omitted | Porté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
| Champ | Type | Description |
|---|---|---|
| query | string | Écho de la requête soumise. |
| matches | array | Tours de transcription contenant la phrase exacte, meilleure correspondance en premier. |
| matches[].recap_id | string (uuid) | Récapitulatif/session d'où provient la correspondance. |
| matches[].speaker | string | Intervenant du tour correspondant. |
| matches[].t | string | Horodatage relatif, p. ex. ~01:04. |
| matches[].text | string | Le 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à rechercher. |
| query | string | Mots-clés à rechercher dans le texte des beats (recherche plein texte). |
| recap_id | string (uuid) | omitted | Porté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
| Champ | Type | Description |
|---|---|---|
| matches | array | Beats correspondants, meilleure correspondance en premier. |
| matches[].recap_id | string (uuid) | Session d'où provient le beat. |
| matches[].session_number | integer | null | Le numéro de session du MJ, lorsqu'il est défini. |
| matches[].session_title | string | null | Le titre de la session, lorsqu'il est défini. |
| matches[].scene_title | string | null | Titre de la scène à laquelle appartient le beat. |
| matches[].beat_index | integer | Position du beat dans sa scène. |
| matches[].turn_start | integer | Premier tour de la fenêtre du beat (à transmettre à get_transcript_window). |
| matches[].turn_end | integer | Dernier tour de la fenêtre du beat. |
| matches[].text | string | Le texte du beat (limité à 1200 caractères). |
| matches[].truncated | boolean | Vrai 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à rechercher. |
| query | string | Une description en langage naturel de ce que vous cherchez. |
| player_safe | boolean (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
| Champ | Type | Description |
|---|---|---|
| matches | array | Correspondances de mémoire classées, la meilleure en premier. |
| matches[].object_id | string (uuid) | L'id de l'objet mémoire. |
| matches[].type | string | Le type de mémoire (par ex. plot_event, npc_fact). |
| matches[].visibility | string | Qui connaît ceci. Sur une recherche player_safe, c'est toujours visible par les joueurs uniquement. |
| matches[].recap_id | string (uuid) | null | La session d'où provient la mémoire. |
| matches[].session_number | integer | null | Le numéro de session du MJ, lorsqu'il est défini. |
| matches[].session_title | string | null | Le titre de la session, lorsqu'il est défini. |
| matches[].turn_start | integer | null | Premier tour de la fenêtre de preuves (à transmettre à get_transcript_window). |
| matches[].turn_end | integer | null | Dernier tour de la fenêtre de preuves. |
| matches[].text | string | Le résumé de la mémoire (limité à 1200 caractères). |
| matches[].truncated | boolean | True lorsque le résumé a été tronqué. |
| credit_cost | number | Cré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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à interroger. |
| question | string | Votre question. |
| clarification | object | omis | Facultatif : répondez à une question de clarification posée par le moteur (voie MJ uniquement). |
| clarification.question | string | La question de clarification du moteur. |
| clarification.answer | string | Votre réponse à cette question. |
| supersedes | string | omis | Id 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
| Champ | Type | Description |
|---|---|---|
| answer_markdown | string | La réponse citée, avec des marqueurs [n] en ligne. |
| citations | array | Métadonnées de citation étayant chaque marqueur. |
| quotes | array | Citations de transcription mot pour mot utilisées comme preuves. |
| confidence_label | string | Bande de confiance grossière. valeurs : high | medium | low |
| credit_cost | number | Crédits facturés pour cette réponse. |
| quotes[].turn | integer | L'index du tour cité. |
| quotes[].recap_id | string (uuid) | null | La 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
| Champ | Type | Description |
|---|---|---|
| campaign_id | string (uuid) | La campagne à interroger. |
| question | string | Votre 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
| Champ | Type | Description |
|---|---|---|
| answer_markdown | string | La réponse citée, avec des marqueurs [n] en ligne. |
| citations | array | Métadonnées de citation étayant chaque marqueur. |
| quotes | array | Citations de transcription mot pour mot utilisées comme preuves. |
| confidence_label | string | Bande de confiance grossière. valeurs : high | medium | low |
| credit_cost | number | Cré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.