Serveur
- URL du serveur
https://app.musael.com/api/mcp?lang=fr- Transport
- HTTP en flux continu, réponses JSON sans état. Envoyez les messages JSON-RPC avec POST ; GET et DELETE répondent 405.
- Nom du serveur
musael
Authentification
Chaque requête nécessite l'en-tête Authorization: Bearer <token>. Sans jeton, ou avec un jeton révoqué, expiré ou erroné, le serveur répond 401 avec un en-tête WWW-Authenticate qui pointe vers ses métadonnées OAuth.
Connexion OAuth
Pour ChatGPT, Claude, Cursor, VS Code et les autres clients qui se connectent par identification. Le client découvre tout à partir de la réponse 401, selon la spécification d'autorisation MCP :
- Métadonnées de la ressource protégée (RFC 9728):
https://app.musael.com/.well-known/oauth-protected-resource/api/mcp - Métadonnées du serveur d'autorisation (RFC 8414):
https://app.musael.com/.well-known/oauth-authorization-server - Enregistrement dynamique de client (RFC 7591) : clients publics uniquement, sans secret ; adresses de redirection en HTTPS, HTTP uniquement en boucle locale, ou schéma d'application.
- Code d'autorisation avec PKCE (S256 uniquement). L'auteur se connecte, choisit Lecture seule ou Lecture et ajout ainsi que les projets, puis autorise ou annule.
- Les jetons d'accès durent une heure ; les jetons d'actualisation durent 90 jours et changent à chaque utilisation.
- Portées : read et suggest (présentées à l'auteur comme Lecture et ajout).
Jeton d'accès personnel
Pour les clients configurés à la main, comme Codex, Claude Code ou un script. L'auteur crée le jeton dans Musael sous Réglages → Applications connectées, en choisissant un nom, les projets, l'accès et l'expiration.
- Les jetons commencent par sti_ et ne sont affichés qu'une fois ; Musael n'en conserve qu'un hachage.
- Un compte peut avoir jusqu'à 20 jetons actifs. Révoquer désactive un jeton immédiatement.
- Envoyez-le dans l'en-tête Authorization. Ne le mettez jamais dans l'URL.
Accès et limites
- Chaque appel agit comme l'auteur qui s'est connecté, dans les accès qu'il a à ce moment-là, sur les projets choisis pour la connexion.
- Aucun outil ne modifie ni ne supprime le texte de l'auteur. Les outils d'ajout créent de nouveaux actes, chapitres, scènes ou entrées du Monde ; suggest_edit laisse une proposition que l'auteur accepte ou refuse dans Musael.
- Chaque outil est toujours listé. Un outil que la formule ou la connexion n'autorise pas répond avec la raison et ne fait rien.
- Jusqu'à 300 appels toutes les cinq minutes par jeton. Les réponses de plus de 200 000 caractères sont tronquées, avec une note invitant à lire un chapitre ou une scène à la fois.
Outils
15 outils. La lecture du texte du livre et la proposition de modifications viennent avec la formule Press.
| Outil | Ce qu'il fait | Formule | Accès |
|---|---|---|---|
list_projects | Les projets que cette connexion peut voir, avec leur espace de travail, le rôle de l'auteur, les scènes et la dernière modification. À utiliser en premier : tout autre outil a besoin d'un identifiant de projet. | Toutes les formules | Lecture |
get_profile | Le compte Musael connecté : un identifiant qui ne change jamais, le nom et l'e-mail. | Toutes les formules | Lecture |
get_outline | La structure d'un projet : livres, actes, chapitres avec synopsis, scènes dans l'ordre de lecture avec statut, point de vue et nombre de mots, et les tâches ouvertes. | Toutes les formules | Lecture |
create_project | Un nouveau projet à partir d'une idée, avec actes, chapitres, scènes vides avec synopsis et entrées du Monde. | Toutes les formules | Lecture et ajout |
add_to_plan | De nouveaux actes, chapitres et scènes dans un projet existant. | Toutes les formules | Lecture et ajout |
add_world_entries | De nouveaux personnages, lieux, objets et factions. Un nom qui existe déjà est laissé tel quel. | Toutes les formules | Lecture et ajout |
read_scene | Une scène en Markdown, avec son chapitre, son statut, son point de vue, son lieu et son synopsis. | Press | Lecture |
read_chapter | Toutes les scènes d'un chapitre, dans l'ordre, en Markdown. | Press | Lecture |
search_project | Des mots dans les scènes et le Monde, avec de courts extraits. | Press | Lecture |
list_world | Les entrées du Monde par type, avec les autres noms, les étiquettes et le début de leurs notes. | Press | Lecture |
get_world_entry | Une entrée du Monde en entier : notes, relations, faits consignés et scènes qui la mentionnent. | Press | Lecture |
get_timeline | Les événements du Monde dans l'ordre de l'histoire avec la scène qui montre chacun, en signalant ceux racontés dans le désordre. | Press | Lecture |
get_style_report | Le rapport de style de l'appli sur une scène, établi par des règles fixes sans IA. | Press | Lecture |
get_reader_stats | Les lecteurs du livre publié chapitre par chapitre, pour le propriétaire et les éditeurs. | Press | Lecture |
suggest_edit | Un remplacement proposé pour un passage, ou un commentaire dessus. Le texte ne change que si l'auteur accepte. | Press | Lecture et ajout |
Faites défiler latéralement pour voir tout le tableau.
Exemples
Définissez MUSAEL_TOKEN avec un jeton d'accès personnel. Après initialize, envoyez notifications/initialized, puis listez ou appelez les outils.
Initialiser
curl https://app.musael.com/api/mcp?lang=fr \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'Lister les outils
curl https://app.musael.com/api/mcp?lang=fr \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl https://app.musael.com/api/mcp?lang=fr \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'Appeler un outil
curl https://app.musael.com/api/mcp?lang=fr \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'Codex
# ~/.codex/config.toml
[mcp_servers.musael]
url = "https://app.musael.com/api/mcp?lang=fr"
bearer_token_env_var = "MUSAEL_TOKEN"Claude Code
claude mcp add --transport http --scope user musael https://app.musael.com/api/mcp?lang=fr --header "Authorization: Bearer $MUSAEL_TOKEN"Sans jeton
HTTP/2 401
www-authenticate: Bearer realm="Musael", resource_metadata="https://app.musael.com/.well-known/oauth-protected-resource/api/mcp"
{"error":"TOKEN_INVALID"}
