Server
- Serverns URL
https://app.musael.com/api/mcp?lang=sv- Transport
- Streamable HTTP, tillståndslösa JSON-svar. Skicka JSON-RPC-meddelanden med POST; GET och DELETE svarar 405.
- Servernamn
musael
Autentisering
Varje förfrågan kräver huvudet Authorization: Bearer <token>. Utan token, eller med en återkallad, utgången eller felaktig, svarar servern 401 med ett WWW-Authenticate-huvud som pekar på dess OAuth-metadata.
OAuth-inloggning
För ChatGPT, Claude, Cursor, VS Code och andra klienter som ansluter genom inloggning. Klienten upptäcker allt från 401-svaret, enligt MCP-specifikationen för auktorisering:
- Metadata för skyddad resurs (RFC 9728):
https://app.musael.com/.well-known/oauth-protected-resource/api/mcp - Metadata för auktoriseringsserver (RFC 8414):
https://app.musael.com/.well-known/oauth-authorization-server - Dynamisk klientregistrering (RFC 7591): endast publika klienter, utan hemlighet; omdirigeringsadresser i HTTPS, HTTP bara på loopback, eller ett appschema.
- Auktoriseringskod med PKCE (endast S256). Skribenten loggar in, väljer Endast läsning eller Läsa och lägga till samt projekten, och tillåter eller avbryter sedan.
- Åtkomsttokens gäller i en timme; uppdateringstokens gäller i 90 dagar och byts vid varje användning.
- Omfång: read och suggest (visas för skribenten som Läsa och lägga till).
Personlig åtkomsttoken
För klienter som konfigureras för hand, som Codex, Claude Code eller ett skript. Skribenten skapar token i Musael under Inställningar → Anslutna appar och väljer ett namn, projekten, åtkomsten och när den går ut.
- Tokens börjar med sti_ och visas en gång; Musael sparar bara en hash av dem.
- Ett konto kan ha upp till 20 aktiva tokens. Återkallning stänger av en token direkt.
- Skicka den i huvudet Authorization. Lägg den aldrig i URL:en.
Åtkomst och gränser
- Varje anrop agerar som skribenten som anslöt, inom den åtkomst personen har just då, på de projekt som valts för anslutningen.
- Inget verktyg ändrar eller raderar skribentens text. Verktygen som lägger till skapar nya akter, kapitel, scener eller poster i Världen; suggest_edit lämnar ett förslag som skribenten godkänner eller avvisar i Musael.
- Alla verktyg listas alltid. Ett verktyg som planen eller anslutningen inte tillåter svarar med orsaken och gör ingenting.
- Upp till 300 anrop var femte minut per token. Svar längre än 200 000 tecken kapas, med en uppmaning att läsa ett kapitel eller en scen i taget.
Verktyg
15 verktyg. Att läsa bokens text och föreslå ändringar ingår i planen Press.
| Verktyg | Vad det gör | Plan | Åtkomst |
|---|---|---|---|
list_projects | Projekten som den här anslutningen kan se, med arbetsyta, skribentens roll, scener och senaste ändring. Använd det först: alla andra verktyg behöver ett projekt-ID. | Alla planer | Läsa |
get_profile | Det anslutna Musael-kontot: ett ID som aldrig ändras, namnet och e-postadressen. | Alla planer | Läsa |
get_outline | Ett projekts struktur: böcker, akter, kapitel med synopsis, scener i läsordning med status, berättarperspektiv och ord, samt de öppna uppgifterna. | Alla planer | Läsa |
create_project | Ett nytt projekt utifrån en idé, med akter, kapitel, tomma scener med synopsis och poster i Världen. | Alla planer | Läsa och lägga till |
add_to_plan | Nya akter, kapitel och scener i ett befintligt projekt. | Alla planer | Läsa och lägga till |
add_world_entries | Nya rollfigurer, platser, föremål och fraktioner. Ett namn som redan finns lämnas som det är. | Alla planer | Läsa och lägga till |
read_scene | En scen som Markdown, med kapitel, status, berättarperspektiv, plats och synopsis. | Press | Läsa |
read_chapter | Alla scener i ett kapitel, i ordning, som Markdown. | Press | Läsa |
search_project | Ord i scenerna och Världen, med korta utdrag. | Press | Läsa |
list_world | Posterna i Världen per typ, med andra namn, taggar och början av deras anteckningar. | Press | Läsa |
get_world_entry | En post i Världen i sin helhet: anteckningar, relationer, registrerade fakta och scenerna som nämner den. | Press | Läsa |
get_timeline | Världens händelser i berättelsens ordning med scenen som visar var och en, och de som berättas i oordning markerade. | Press | Läsa |
get_style_report | Appens stilrapport om en scen, gjord med fasta regler utan AI. | Press | Läsa |
get_reader_stats | Läsarna av den publicerade boken kapitel för kapitel, för ägaren och redaktörerna. | Press | Läsa |
suggest_edit | Ett förslag på ersättning av ett stycke, eller en kommentar om det. Texten ändras bara om skribenten godkänner det. | Press | Läsa och lägga till |
Rulla i sidled för att se hela tabellen.
Exempel
Sätt MUSAEL_TOKEN till en personlig åtkomsttoken. Efter initialize, skicka notifications/initialized och lista eller anropa sedan verktygen.
Initiera
curl https://app.musael.com/api/mcp?lang=sv \
-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"}}}'Lista verktygen
curl https://app.musael.com/api/mcp?lang=sv \
-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=sv \
-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"}'Anropa ett verktyg
curl https://app.musael.com/api/mcp?lang=sv \
-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=sv"
bearer_token_env_var = "MUSAEL_TOKEN"Claude Code
claude mcp add --transport http --scope user musael https://app.musael.com/api/mcp?lang=sv --header "Authorization: Bearer $MUSAEL_TOKEN"Utan token
HTTP/2 401
www-authenticate: Bearer realm="Musael", resource_metadata="https://app.musael.com/.well-known/oauth-protected-resource/api/mcp"
{"error":"TOKEN_INVALID"}
