Dunjn's 47 MCP tools and 6 prompts
The exact list of what Dunjn's MCP server exposes to your AI: 19 read tools, 28 write tools, 6 prompts. Generated from the server code.
Dunjn’s MCP server (https://app.dunjn.io/api/mcp/v1) exposes 47 tools to your AI: 19 for reading and 28 for writing, all prefixed with dunjn_. On top of them, 6 prompts give the assistant a role. This page is generated from the server code: it describes exactly what tools/list returns.
The descriptions below are the ones the server sends to the model. They are in French and reproduced as is.
Read tools (19)
dunjn_analyze_encounter
Analyse l’équilibrage d’une rencontre existante selon le système de la campagne (XP/FP en D&D 5e, Points de Bataille en Daggerheart). Retourne la difficulté et des recommandations.
Parameters:
encounterId(string, required): ID de la rencontre à analyser
dunjn_get_asset
Récupère les métadonnées d’un asset + une URL signée R2 (10 min TTL) pour le télécharger. Inclut name, type, mimeType, fileSize, entityId.
Parameters:
assetId(string, required)campaignId(string, optional): ID de la campagne (optionnel)
dunjn_get_campaign
Récupère les métadonnées d’une campagne : nom, game system, tags disponibles, compteurs entités/sessions/world notes, calendrier in-game.
Parameters:
campaignId(string, required): ID de la campagne (cuid)
dunjn_get_campaign_index
Table des matières compacte de la campagne : entités (groupées par type), sessions et notes du monde, chacune avec son id mais SANS contenu. Point d’entrée recommandé pour explorer une campagne sans coût (mana-free) : lis l’index puis ouvre les pages voulues via get_entity_full / get_session / get_world_note.
Parameters:
campaignId(string, optional): ID de la campagne (optionnel si une campagne est active)
dunjn_get_entity_full
Récupère une entité complète AVEC ses relations entrantes ET sortantes (complémente read_entity qui n’expose pas les relations).
Parameters:
entityId(string, required): ID de l’entitécampaignId(string, optional): ID de la campagne (optionnel)
dunjn_get_roll_table
Affiche une table de jet complète : ses entrées avec leur plage de tirage calculée (ex : 01–25). L’ID provient du contexte ou de list_roll_tables.
Parameters:
tableId(string, required): ID de la table de jet
dunjn_get_session
Récupère une session complète : metadata + entités liées + notes prep/rich en texte plain.
Parameters:
sessionId(string, required): ID de la sessioncampaignId(string, optional): ID de la campagne (optionnel)
dunjn_get_world_note
Récupère une world note complète, contenu verbatim inclus. À utiliser avant update_world_note pour relire le texte exact sans l’écraser (search_rag paraphrase et ne convient pas).
Parameters:
noteId(string, required): ID de la world notecampaignId(string, optional): ID de la campagne (optionnel)
dunjn_list_assets
Liste les assets binaires (image, PDF, audio, vidéo) liés à une campagne. Filtres optionnels par type ou entité associée.
Parameters:
campaignId(string, optional)type(string, optional, values:image,pdf,audio,video): Filtre par type d’assetentityId(string, optional): Filtre les assets liés à une entité spécifique
dunjn_list_campaigns
Liste les campagnes accessibles à cette clé API. Renvoie nom, gameSystem, créateur, nombre d’entités/sessions.
No parameters.
dunjn_list_entities
Liste les entités d’une campagne, filtrables par type, tag, folder. type=‘Encounter’ liste les rencontres ; chacune porte alors completed (true = déjà jouée/terminée). Pour clore ou rouvrir une rencontre : update_entity avec completed.
Parameters:
campaignId(string, optional)type(string, optional): Filtre par type (PC, NPC, Monster, Location, Faction, Item, Quest, Religion, Spell, Race, Language, Event)tag(string, optional): Filtre par tagfolder(string, optional): Filtre par dossierlimit(integer, optional)
dunjn_list_roll_tables
Liste les tables de jet (tables aléatoires : rencontres, butin, événements…) de la campagne, avec leur dé indicatif, nombre d’entrées et ID. Utilise get_roll_table pour le détail ou roll_on_table pour tirer.
No parameters.
dunjn_list_sessions
Liste les sessions d’une campagne avec leur numéro, nom, date, statut.
Parameters:
campaignId(string, optional): ID de la campagne
dunjn_list_world_notes
Liste les world notes d’une campagne (titre, tags, updatedAt). Le contenu n’est PAS inclus — utilise get_world_note pour le lire.
Parameters:
campaignId(string, optional)
dunjn_read_entity
Lit les données complètes d’une entité existante : nom, type, contenu (statsblock), backstory, tags, sheet_data. Utilise cet outil AVANT de modifier une entité avec update_entity, pour connaître son état actuel.
Parameters:
entityId(string, required): ID de l’entité à lire
dunjn_read_session
Lit une session par son id : métadonnées, résumé, entités liées et notes (préparation + live) en texte brut. À utiliser pour consulter une session listée dans l’index (distinct de read_session_notes, qui lit la session active).
Parameters:
sessionId(string, required): ID de la session à lire
dunjn_read_world_note
Lit le contenu complet d’une note du monde (lore/worldbuilding) en texte brut : titre, tags, contenu. Utilise cet outil pour consulter une note listée dans l’index avant de répondre ou de la modifier.
Parameters:
noteId(string, required): ID de la note du monde à lire
dunjn_roll_on_table
Effectue un tirage aléatoire sur une table de jet et renvoie l’entrée tirée (pondérée par les poids). Idéal quand le MJ demande « lance sur la table des rencontres ».
Parameters:
tableId(string, required): ID de la table de jet à lancer
dunjn_search_entities
Recherche des entités par nom dans la campagne. Utile si l’ID n’est pas connu.
Parameters:
query(string, required): Nom ou partie du nomtype(string, optional, values:PC,NPC,Location,Faction,Item,Quest,Monster,Religion,Spell,Race,Language,Event): Filtrer par type (optionnel)
Write tools (28)
dunjn_add_encounter_participant
Ajoute un PJ ou un adversaire (monstre) à une rencontre existante. Pour ajouter plusieurs exemplaires du même monstre, utilise le paramètre count (ex: count=4 pour ‘4 gobelins’). Si le participant existe déjà, le count est mis à jour. Un PJ inactif (mis sur le banc) est refusé : réactive-le d’abord depuis la page Joueurs.
Parameters:
encounterId(string, required): ID de la rencontreentityId(string, required): ID de l’entité à ajouter (PC ou Monster)role(string, required, values:joueur,adversaire): ‘joueur’ pour un PJ, ‘adversaire’ pour un monstre ou ennemicount(integer, optional): Nombre d’exemplaires de cet adversaire (défaut : 1). Ex : 4 pour ‘4 gobelins’. Ignoré pour role=‘joueur’.
dunjn_add_session_section
Ajoute une nouvelle section (titre + corps optionnel) à un champ de notes de session. position=‘end’ (défaut), ‘start’, ‘before’ ou ‘after’ — ‘before’/‘after’ nécessitent ref_index ou ref_title (la section de référence). content accepte les mêmes marqueurs que update_session_section ([SKILL_CHECK:…], [ENTITY:id:Nom], [IMAGE:url], [ENCOUNTER:id:Nom], [ROLLTABLE:id:Nom], [NOTE:id:Titre], [ACCORDION:Titre]…[/ACCORDION]).
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (défaut) ou ‘rich_text_notes’title(string, required): Titre de la nouvelle sectionlevel(integer, required): Niveau de titre 1-3 (défaut 2)content(string, optional): Corps de la section (optionnel ; marqueurs supportés)position(string, required, values:start,end,before,after): ‘end’ (défaut), ‘start’, ‘before’, ‘after’ref_index(integer, optional): Section de référence (index) pour position before/afterref_title(string, optional): Section de référence (titre) pour position before/after
dunjn_create_encounter
Crée une nouvelle rencontre (combat) dans la campagne avec ses participants. Le combat vit dans participants, PAS uniquement dans le texte de content : chaque adversaire doit être une entité de type ‘Monster’ EXISTANTE — crée-la d’abord avec create_entity (type=‘Monster’) pour obtenir son id, puis passe-la dans participants avec role=‘adversaire’ et son count. Ajoute aussi les PJ avec role=‘joueur’. Passe TOUS les participants en une seule opération atomique (sans participants, la rencontre est vide dans le tracker de combat). Les PJ marqués inactifs (mis sur le banc) sont automatiquement ignorés — seuls les PJ actifs entrent dans la rencontre. Utiliser link_entity_to_session pour la lier à la session en cours.
Parameters:
name(string, required): Nom de la rencontrecontent(string, optional): Description de la rencontre : contexte, lieu, déclencheur, objectifsparticipants(object[], optional): Liste des participants à ajouter immédiatement à la rencontre
dunjn_create_entity
Crée une nouvelle entité dans la campagne. Types : NPC (PNJ humanoïde), Monster (monstre/adversaire du bestiaire — le contenu doit être un statsblock Markdown complet), Location (lieu), Faction, Item (objet), Quest (quête), PC (personnage joueur).
Parameters:
name(string, required): Nom de l’entitétype(string, required, values:PC,NPC,Location,Faction,Item,Quest,Monster,Religion,Spell,Race,Language,Event): Type : NPC, Monster, Location, Faction, Item, Quest, PCcontent(string, optional): UNIQUEMENT pour Monster et NPC : statbloc Markdown complet selon le système de la campagne (D&D 5e : CA/PV/vitesse/caractéristiques/actions ; Daggerheart : Difficulté/Seuils/PB/Stress/attaque). Pour tous les autres types (Location, Faction, Item, Quest, Religion, Spell, Race, Language, Event) : NE PAS utiliser content — mettre les données dans sheet_data avec les clés du template. Un marqueur [ROLLTABLE:id:Nom] seul sur sa ligne intègre une table de jet interactive sur la fiche (id via list_roll_tables).backstory(string, optional): Historique ou lore du personnage (NPC/PC uniquement)tags(string[], optional): Tags à assigner (UNIQUEMENT parmi les tags disponibles listés dans le contexte de campagne sous ’## Tags disponibles’ — les tags inconnus sont écartés). Pour introduire un nouveau tag, appelle d’abord create_tag, puis assigne-le ici.sheet_data(object, optional): Données structurées de la fiche. OBLIGATOIRE pour tous les types sauf PC. Pour Monster — les clés dépendent du système de jeu de la campagne (cf. get_campaign → gameSystemMechanics). Monster (D&D 5e) : stats numériques { “cr”: “2”, “xp”: “450”, “ac”: 15, “ac_desc”: “(armure naturelle)”, “hp”: 45, “hp_formula”: “(6d10 + 12)”, “speed”: “9 m”, “str”: 16, “dex”: 12, “con”: 14, “int”: 6, “wis”: 11, “cha”: 7, “saves”: "", “skills”: "", “senses”: "", “languages”: "", “subtitle”: "", “resistances”: "", “damage_immunities”: "", “condition_immunities”: "" } — les 6 caractéristiques (str/dex/con/int/wis/cha) sont des NOMBRES. Monster (Daggerheart) : { “tier”: 2, “type”: “Cogneur”, “difficulty”: 14, “threshold_major”: 8, “threshold_severe”: 15, “hp”: 6, “stress”: 3, “atk”: “+3”, “attack_name”: “Lame rouillée”, “attack_range”: “Mêlée”, “attack_damage”: “2d8+3 phy”, “experience”: "", “motives”: "" }. Pour NPC : { “appearance”: "", “personality”: "", “background”: "", “motivations”: "", “keyPhrases”: "", “secrets”: "" }. Pour Location : { “description”: "", “history”: "", “notableInhabitants”: "", “dangers”: "", “secrets”: "" }. Pour Faction : { “description”: "", “goals”: "", “structure”: "", “resources”: "", “secrets”: "" }. Pour Item : { “description”: "", “properties”: "", “history”: "", “currentLocation”: "" }. Pour Quest : { “summary”: "", “objectives”: "", “rewards”: "", “complications”: "", “npcsInvolved”: "" }. Pour Religion : { “deity”: "", “dogma”: "", “temples”: "", “followers”: "" }. Pour Spell : { “level”: "", “school”: "", “components”: "", “description”: "", “effects”: "" }. Pour Race : { “description”: "", “traits”: "", “culture”: "", “history”: "" }. Pour Language : { “description”: "", “script”: "", “speakers”: "" }. Pour Event : { “description”: "", “date”: "", “location”: "", “participants”: "", “consequences”: "" }. Chaque valeur est un texte libre (plusieurs paragraphes OK). À la création, sheet_data définit l’objet complet ; une mise à jour ultérieure via update_entity FUSIONNE (les clés non fournies sont conservées).
dunjn_create_entity_relation
Crée un lien nommé entre deux entités existantes.
Parameters:
fromEntityId(string, required): ID de l’entité sourcetoEntityId(string, required): ID de l’entité ciblelabel(string, required): Libellé du lien (ex: ‘habite à’, ‘membre de’, ‘ennemi de’, ‘allié de’)
dunjn_create_roll_table
Crée une table de jet (table aléatoire). Chaque entrée a un libellé (le résultat) et un poids optionnel (défaut 1) qui détermine sa probabilité ; les plages de tirage sont calculées automatiquement à partir des poids. dice est une formule de dé indicative (ex : ‘d100’, ‘d20’ ; défaut ‘d100’).
Parameters:
name(string, required): Nom de la table (ex : ‘Rencontres aléatoires en forêt’)description(string, optional): Description / usage de la table (optionnel)dice(string, optional): Formule de dé indicative (ex : ‘d100’, ‘d20’). Défaut ‘d100’.entries(object[], required): Entrées de la table (au moins une).
dunjn_create_session
Crée une nouvelle session dans la campagne. Utilise le prochain numéro de session disponible (visible dans le contexte). La date doit être au format ISO 8601 (YYYY-MM-DD).
Parameters:
session_number(integer, required): Numéro de la session (entier, ex: 5)name(string, optional): Nom descriptif optionnel de la session (ex: ‘La Crypte de Keldurn’)real_date(string, required): Date de la session au format YYYY-MM-DD (ex: 2026-03-15)status(string, required, values:planned,active,completed): Statut : ‘planned’ (défaut), ‘active’ ou ‘completed’
dunjn_create_tag
Ajoute un ou plusieurs tags à la bibliothèque de tags de la campagne. IMPORTANT : create_entity et update_entity n’acceptent QUE des tags déjà présents dans cette bibliothèque (les tags inconnus sont silencieusement écartés). Pour introduire un nouveau tag, appelle donc create_tag d’ABORD, puis assigne-le à une entité. Réutilise les tags existants (section ’## Tags disponibles’ du contexte) quand c’est pertinent — ne crée que des tags réellement nouveaux. Les tags déjà présents sont ignorés (pas de doublon).
Parameters:
tags(string[], required): Tags à ajouter à la bibliothèque (1 à 30). Ex : [‘allié’, ‘noble’, ‘magie’]. Les tags déjà présents sont ignorés sans erreur.
dunjn_create_world_note
Crée une nouvelle note du monde (lore, worldbuilding, cosmologie, histoire, géographie, etc.) dans le wiki de la campagne.
Parameters:
title(string, required): Titre de la notecontent(string, optional): Contenu de la note en texte/Markdown (optionnel). Marqueurs acceptés : [ENTITY:id:Nom], [ENCOUNTER:id:Nom], [ROLLTABLE:id:Nom], [NOTE:id:Titre], [IMAGE:url], [SKILL_CHECK:{…}], et le bloc dépliable [ACCORDION:Titre] … [/ACCORDION] (balises seules sur leur ligne).tags(string[], optional): Tags pour catégoriser la note
dunjn_delete_entity
Supprime définitivement une entité (wiki, bestiaire, etc.). À utiliser avec précaution.
Parameters:
entityId(string, required): ID de l’entité à supprimer
dunjn_delete_session
Supprime définitivement une session et ses liens d’entités (les entités elles-mêmes sont conservées). À utiliser avec précaution — irréversible.
Parameters:
sessionId(string, required): ID de la session à supprimercampaignId(string, optional): ID de la campagne (optionnel)
dunjn_delete_session_section
Supprime UNE section (titre + corps, sous-sections incluses) d’un champ de notes de session. Cible par index (via list_session_sections) ou title exact. Irréversible — utilise avec précaution.
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (défaut) ou ‘rich_text_notes’index(integer, optional): Index 0-based de la sectiontitle(string, optional): Titre exact (alternative à index)
dunjn_delete_world_note
Supprime définitivement une note du monde. À utiliser avec précaution.
Parameters:
noteId(string, required): ID de la note à supprimer
dunjn_link_entity_to_session
Lie une entité (PNJ, lieu, objet, rencontre, monstre, etc.) à une session, pour qu’elle apparaisse dans les éléments liés. Cible la session active par défaut ; passe sessionId pour lier à une autre session (utile pour préparer plusieurs séances sans rebasculer la session active).
Parameters:
entityId(string, required): ID de l’entité à lier à la sessionsessionId(string, optional): ID de la session cible (optionnel — défaut : session active)
dunjn_list_session_sections
Liste les sections d’un champ de notes de session, découpées par titres (#/##/###). Pour chaque section : index (0-based, à réutiliser dans update/move/delete_session_section), level (1-3 ; 0 = préambule avant le 1er titre), title, et un aperçu du corps. À APPELER EN PREMIER pour obtenir l’index exact avant toute modification de section.
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (préparation, défaut) ou ‘rich_text_notes’ (session live)
dunjn_move_session_section
Déplace une section (avec ses sous-sections) dans un champ de notes de session. Cible par index ou title. position=‘start’/‘end’, ou ‘before’/‘after’ (nécessitent ref_index ou ref_title). Un déplacement sans effet (déjà à cette position) est refusé.
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (défaut) ou ‘rich_text_notes’index(integer, optional): Index 0-based de la section à déplacertitle(string, optional): Titre exact (alternative à index)position(string, required, values:start,end,before,after): ‘start’, ‘end’, ‘before’, ‘after’ref_index(integer, optional): Section de référence (index) pour before/afterref_title(string, optional): Section de référence (titre) pour before/after
dunjn_read_session_notes
Lit les notes existantes d’une session sous forme de texte brut (avec marqueurs [ENTITY:…] et [SKILL_CHECK:…] préservés). À utiliser avant de reformater pour ne pas perdre le contenu.
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (préparation, défaut) ou ‘rich_text_notes’ (session live)
dunjn_remove_encounter_participant
Retire un participant (PJ, PNJ ou monstre) d’une rencontre existante. Utilise search_entities si l’ID de l’entité ou de la rencontre n’est pas connu.
Parameters:
encounterId(string, required): ID de la rencontreentityId(string, required): ID de l’entité à retirer
dunjn_set_active_campaign
Définit la campagne active de la session MCP courante. Les tools/call suivants n’auront plus besoin de repasser campaignId.
Parameters:
campaignId(string, required)
dunjn_set_active_session
Définit la session active de la session MCP courante. Les tools/call suivants n’auront plus besoin de repasser sessionId.
Parameters:
sessionId(string, required)campaignId(string, optional): ID de la campagne (optionnel)
dunjn_unlink_entity_from_session
Supprime le lien entre une entité et une session. Cible la session active par défaut ; passe sessionId pour viser une autre session.
Parameters:
entityId(string, required): ID de l’entité à dissocier de la sessionsessionId(string, optional): ID de la session cible (optionnel — défaut : session active)
dunjn_update_campaign_notes
Met à jour les notes globales de la campagne (lore/MJ, distinctes des notes de session). Mode ‘replace’ (défaut) ou ‘append’. Le contenu accepte les marqueurs : [ENTITY:id:Nom] (via search_entities/create_entity), [IMAGE:url] (via upload_image), [SKILL_CHECK:{…}], [NOTE:id:Titre], et le bloc dépliable [ACCORDION:Titre] … [/ACCORDION] (balises seules sur leur ligne).
Parameters:
content(string, required): Texte/Markdown des notes globales (marqueurs supportés : [ENTITY:], [IMAGE:], [SKILL_CHECK:], [NOTE:], [ACCORDION:]…[/ACCORDION]).mode(string, optional, values:append,replace): ‘replace’ écrase (défaut), ‘append’ ajoute à la fin.campaignId(string, optional): ID de la campagne (optionnel si une campagne est active).
dunjn_update_entity
Met à jour une entité existante (PNJ, monstre, PJ, lieu, rencontre…). L’ID est fourni dans le contexte de campagne. Utilise sheet_data pour mettre à jour les attributs système d’un PJ (niveau, classe, CA, initiative, etc.). RENCONTRES : completed: true marque le combat comme terminé — il quitte la liste principale des rencontres pour la section « Terminées » ; completed: false le rouvre. Récupère l’id d’une rencontre avec list_entities (type=‘Encounter’), qui indique aussi son état completed.
Parameters:
entityId(string, required): ID de l’entité à modifiername(string, optional): Nouveau nomtype(string, optional, values:PC,NPC,Location,Faction,Item,Quest,Monster,Religion,Spell,Race,Language,Event): Nouveau typecontent(string, optional): Nouveau statsblock (Monster/NPC uniquement). Pour les autres types, utiliser sheet_data. Un marqueur [ROLLTABLE:id:Nom] seul sur sa ligne intègre une table de jet interactive sur la fiche.backstory(string, optional): Nouvel historique (NPC/PC uniquement)tags(string[], optional): Nouveaux tags à assigner (UNIQUEMENT parmi les tags disponibles listés dans le contexte de campagne sous ’## Tags disponibles’ — les tags inconnus sont écartés ; appelle create_tag d’abord pour un nouveau tag). Remplace les anciens.sheet_data(object, optional): Données structurées à mettre à jour (merge avec l’existant). Mêmes clés que create_entity selon le type et le système de jeu. Pour PC : clés du template système (level, class, ac…). Pour Monster : clés D&D 5e (cr, ac, hp, str…) ou Daggerheart (tier, difficulty, hp, stress, atk…) selon le système. Les valeurs non fournies sont conservées.completed(boolean, optional): Rencontres uniquement : true = marquer la rencontre comme terminée (elle sort de la liste principale des rencontres), false = la rouvrir.
dunjn_update_session
Met à jour les métadonnées d’une session existante : nom, numéro, date, statut, ordre, résumé. Au moins un champ doit être fourni. Changer session_number vers un numéro déjà pris est refusé (erreur explicite) — pour insérer/réordonner une séance sans renuméroter, utilise plutôt sort_order (les sessions de la timeline se trient par sort_order croissant, puis session_number).
Parameters:
sessionId(string, required): ID de la session à modifiername(string|null, optional): Nouveau nom (null pour effacer)session_number(integer, optional): Nouveau numéro (doit être libre)real_date(string, optional): Nouvelle date réelle au format YYYY-MM-DDstatus(string, optional, values:planned,active,completed): Nouveau statutsort_order(integer|null, optional): Ordre dans la timeline (null pour effacer)summary(string|null, optional): Résumé de la session (null pour effacer)campaignId(string, optional): ID de la campagne (optionnel)
dunjn_update_session_notes
Modifie les notes d’une session. field=‘prep_notes’ (préparation, avant la session) ou ‘rich_text_notes’ (notes en direct). Mode ‘replace’ (défaut) ou ‘append’. FORMATAGE (texte/Markdown enrichi de marqueurs) : • Jet de compétence : [SKILL_CHECK:{“s”:“Perception”,“a”:“SAG”,“d”:15,“ok”:“si réussite”,“ko”:“si échec”}] — s=compétence, a=attribut (FOR/DEX/CON/INT/SAG/CHA), d=DD entier, ok/ko optionnels. Le format JSON est requis (pas “[SKILL_CHECK:Perception DD 15]”). • Lien d’entité (PNJ/lieu/objet…) : [ENTITY:id:Nom] seul sur sa ligne. L’id DOIT provenir de search_entities ou create_entity — ne JAMAIS inventer d’id. • Image : [IMAGE:url] seul sur sa ligne. L’url DOIT provenir d’un upload (stockage Dunjn) — une URL externe est ignorée et dégradée en texte. • Lien de rencontre : [ENCOUNTER:id:Nom]. Crée d’abord la rencontre avec create_encounter pour obtenir l’id ; ne décris JAMAIS une rencontre sous forme de table Markdown. • Lien de table de jet (table aléatoire) : [ROLLTABLE:id:Nom] seul sur sa ligne. L’id DOIT provenir de list_roll_tables ou create_roll_table — jamais inventé. • Lien de note du monde : [NOTE:id:Titre] seul sur sa ligne. L’id DOIT provenir de list_world_notes, get_campaign_index ou create_world_note — jamais inventé. • Bloc dépliable (infos complémentaires sans alourdir la relecture) : [ACCORDION:Titre] …contenu Markdown (les autres marqueurs y sont acceptés)… [/ACCORDION] Les deux balises doivent être SEULES sur leur ligne.
Parameters:
notes(string, required): Contenu des notes en texte/Markdownfield(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (préparation) ou ‘rich_text_notes’ (session live). OBLIGATOIRE.mode(string, required, values:replace,append): ‘replace’ pour remplacer (défaut), ‘append’ pour ajouter à la fin
dunjn_update_session_section
Modifie UNE section d’un champ de notes de session, sans réécrire le reste du document (les autres sections sont préservées à l’identique). Cible la section par index (recommandé, via list_session_sections) ou par title (titre exact ; ambigu → erreur). mode=‘replace’ (défaut) remplace le corps de la section ; ‘append’ ajoute à sa fin. new_title renomme le titre.
FORMATAGE de content (texte/Markdown enrichi de marqueurs, comme update_session_notes) :
• Jet : [SKILL_CHECK:{“s”:“Perception”,“a”:“SAG”,“d”:15,“ok”:“si réussite”,“ko”:“si échec”}] (JSON requis).
• Entité : [ENTITY:id:Nom] seul sur sa ligne (id via search_entities/create_entity — jamais inventé).
• Image : [IMAGE:url] (url via upload_image). • Rencontre : [ENCOUNTER:id:Nom] (via create_encounter).
• Table de jet : [ROLLTABLE:id:Nom] (id via list_roll_tables/create_roll_table — jamais inventé).
• Note du monde : [NOTE:id:Titre] (id via list_world_notes/get_campaign_index — jamais inventé).
• Bloc dépliable : [ACCORDION:Titre] / …contenu… / [/ACCORDION], les deux balises SEULES sur leur ligne.
Parameters:
field(string, required, values:prep_notes,rich_text_notes): ‘prep_notes’ (défaut) ou ‘rich_text_notes’index(integer, optional): Index 0-based de la section (via list_session_sections)title(string, optional): Titre exact de la section (alternative à index)content(string, required): Nouveau contenu de la section (marqueurs supportés)mode(string, required, values:replace,append): ‘replace’ (défaut) ou ‘append’new_title(string, optional): Renomme le titre de la section (optionnel)
dunjn_update_world_note
Met à jour une note du monde existante. L’ID est fourni dans le contexte de campagne (section ‘Notes du monde’).
Parameters:
noteId(string, required): ID de la note à modifiertitle(string, optional): Nouveau titre (optionnel)content(string, optional): Nouveau contenu en texte/Markdown (optionnel). Marqueurs acceptés : [ENTITY:id:Nom], [ENCOUNTER:id:Nom], [ROLLTABLE:id:Nom], [NOTE:id:Titre], [IMAGE:url], [SKILL_CHECK:{…}], et le bloc dépliable [ACCORDION:Titre] … [/ACCORDION] (balises seules sur leur ligne).tags(string[], optional): Nouveaux tags (remplace les anciens)
dunjn_upload_image
Upload une image (JPEG/PNG/GIF/WebP, max 5 Mo) dans la campagne et renvoie son URL publique + un marqueur [IMAGE:url] prêt à intégrer dans des notes. Les octets sont passés en base64 dans data (un data-URL data:image/png;base64,… est accepté). Option insertInto pour intégrer l’image en un seul appel dans une note de session, du monde, ou les notes de campagne (mode append par défaut). Seules les images uploadées via cet outil (hébergées sur le stockage Dunjn) peuvent être intégrées — une URL externe est refusée.
Parameters:
data(string, required): Image encodée en base64 (data-URLdata:<mime>;base64,…accepté).fileName(string, optional): Nom de fichier d’origine — sert de nom d’asset et à déduire le type si mimeType absent.mimeType(string, optional, values:image/jpeg,image/png,image/gif,image/webp): Type MIME de l’image (sinon déduit du data-URL ou de l’extension de fileName).name(string, optional): Nom de l’asset (défaut : fileName ou ‘image’).campaignId(string, optional): ID de la campagne (optionnel si une campagne est active).entityId(string, optional): Lie l’asset à une entité de la campagne (optionnel).insertInto(object, optional): Intègre le marqueur [IMAGE:url] dans une note en un seul appel.
Prompts (6)
Your AI client invokes a prompt like a command; the assistant then takes on the described role and works with the tools above. The names come from the Council of Mages.
dunjn_salmanazar
Adopte le rôle de Salmanazar — assistant MJ généraliste qui pilote Dunjn via les outils MCP. Le contexte RAG de la campagne est opt-in (include_context, désactivé par défaut car il consomme du mana ; sinon bootstrap via les outils de découverte).
Arguments:
campaignId(required): ID de la campagnesessionId(optional): ID de la session active (optionnel)lang(optional): Langue (‘fr’ ou ‘en’, défaut ‘fr’)include_context(optional): Inclure le contexte RAG de la campagne. CONSOMME DU MANA (embedding Gemini). false par défaut.
dunjn_melchizedek
Sous-agent Melchizedek — expert création d’entités (PNJ/Monstres/Lieux).
Arguments:
campaignId(required): ID de la campagnelang(optional): Langue
dunjn_balthazar
Sous-agent Balthazar — rédaction de notes de session et world notes (lore).
Arguments:
campaignId(required): ID de la campagnelang(optional): Langue
dunjn_nabuchodonosor
Sous-agent Nabuchodonosor — conception de rencontres complètes.
Arguments:
campaignId(required): ID de la campagnelang(optional): Langue
dunjn_jeroboam
Sous-agent Jéroboam — préparation COMPLÈTE de session.
Arguments:
campaignId(required): ID de la campagnesessionId(required): ID de la session ciblelang(optional): Langue
dunjn_rehoboam
Sous-agent Réhoboam — MISE EN FORME uniquement de notes existantes.
Arguments:
campaignId(required): ID de la campagnesessionId(required): ID de la session ciblelang(optional): Langue