{"serverInfo":{"name":"Archivist AI","version":"1.0.0"},"authentication":{"required":true,"schemes":["oauth2"]},"tools":[{"name":"list-campaigns-tool","title":"List Campaigns Tool","description":"List your MyArchivist campaigns. Returns a paginated list of campaigns.","inputSchema":{"properties":{"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of campaigns records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-campaign-tool","title":"Get Campaign Tool","description":"Get a specific MyArchivist campaign by its ID.","inputSchema":{"properties":{"campaign_id":{"type":"string"}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"system":{"type":["string","null"]},"image":{"type":["string","null"]},"public":{"type":"boolean"},"mature":{"type":"boolean"},"owner_id":{"type":"string"},"created_at":{"type":"string"},"summary":{"type":["string","null"]},"language":{"type":["string","null"]},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","title","public","mature","owner_id","created_at"]}},{"name":"get-campaign-stats-tool","title":"Get Campaign Stats Tool","description":"Get statistics for a specific campaign: character count, session count, and more.","inputSchema":{"properties":{"campaign_id":{"type":"string"}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"campaign_id":{"type":"string"},"title":{"type":"string"},"characters":{"type":"integer"},"sessions":{"type":"integer"},"moments":{"type":"integer"},"public":{"type":"boolean"},"created_at":{"type":"string"}},"type":"object","required":["campaign_id","title","characters","sessions","moments","public","created_at"]}},{"name":"list-characters-tool","title":"List Characters Tool","description":"List characters in a campaign. Optionally filter by name search, character type, and approval status.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"search":{"type":["string","null"]},"character_type":{"type":["string","null"]},"approved_only":{"type":["boolean","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of characters records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-character-tool","title":"Get Character Tool","description":"Get a specific character by ID including aliases, backstory, and speaker linkage.","inputSchema":{"properties":{"character_id":{"type":"string"}},"type":"object","required":["character_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"character_name":{"type":"string"},"character_alias":{"type":["array","null"]},"player_name":{"type":["string","null"]},"player":{"type":["array","null"]},"description":{"type":["string","null"]},"image":{"type":["string","null"]},"type":{"enum":["PC","NPC"],"type":["string","null"]},"character_aliases":{"type":["array","null"]},"player_handle":{"type":["string","null"]},"backstory":{"type":["string","null"]},"tcg_image":{"type":["string","null"]},"merge":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","character_name","merge","created_at"]}},{"name":"list-sessions-tool","title":"List Sessions Tool","description":"List game sessions in a campaign. Optionally filter by session type or public-only.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"session_type":{"enum":["audioUpload","playByPost","discordVoice","rawNotes"],"type":["string","null"]},"public_only":{"type":["boolean","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of sessions records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-session-tool","title":"Get Session Tool","description":"Get a specific game session by ID. Optionally include related beats and moments.","inputSchema":{"properties":{"session_id":{"type":"string"},"include_beats":{"type":["boolean","null"]},"include_moments":{"type":["boolean","null"]}},"type":"object","required":["session_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"type":{"enum":["audioUpload","playByPost","discordVoice","rawNotes"],"type":["string","null"]},"title":{"type":["string","null"]},"summary":{"type":["string","null"]},"session_date":{"type":["string","null"]},"public":{"type":"boolean"},"notes":{"type":["string","null"]},"image":{"type":["string","null"]},"index":{"type":["integer","null"]},"pbp_start_msg_url":{"type":["string","null"]},"pbp_end_msg_url":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"beats":{"type":["array","null"]},"moments":{"type":["array","null"]}},"type":"object","required":["id","campaign_id","public","created_at"]}},{"name":"get-session-cast-analysis-tool","title":"Get Session Cast Analysis Tool","description":"Get the cast analysis for a game session, including talk-share breakdown and core session metrics.","inputSchema":{"properties":{"session_id":{"type":"string"}},"type":"object","required":["session_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"session_id":{"type":"string"},"analysis":{"type":"array"},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","session_id","analysis","created_at"]}},{"name":"get-session-handout-tool","title":"Get Session Handout Tool","description":"Get the generated session handout for a game session, including summary, outlines, spotlights, and notable moments.","inputSchema":{"properties":{"session_id":{"type":"string"}},"type":"object","required":["session_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"summary":{"type":"string"},"sessionOutline":{"type":["string","null"]},"encounters":{"type":["array","null"]},"characterSpotlight":{"type":["array","null"]},"otherEntitySpotlight":{"type":["array","null"]},"items":{"type":["array","null"]},"valuableInformation":{"type":["array","null"]},"partyStatusAndNextSteps":{"type":["array","null"]},"moments":{"type":["array","null"]}},"type":"object","required":["summary"]}},{"name":"list-beats-tool","title":"List Beats Tool","description":"List beats in a campaign, ordered by index. Beats represent story moments (major, minor, step).","inputSchema":{"properties":{"campaign_id":{"type":"string"},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of beats records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-beat-tool","title":"Get Beat Tool","description":"Get a specific beat by ID.","inputSchema":{"properties":{"beat_id":{"type":"string"}},"type":"object","required":["beat_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"game_session_id":{"type":["string","null"]},"game_session_ids":{"type":["array","null"]},"label":{"type":"string"},"type":{"enum":["major","minor","step"],"type":"string"},"index":{"type":"integer"},"parent_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"description":{"type":["string","null"]},"metadata":{"type":["array","null"]}},"type":"object","required":["id","campaign_id","label","type","index","created_at"]}},{"name":"list-moments-tool","title":"List Moments Tool","description":"List moments in a campaign or session. Moments capture memorable quotes and events.","inputSchema":{"properties":{"campaign_id":{"type":["string","null"]},"session_id":{"type":["string","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of moments records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-moment-tool","title":"Get Moment Tool","description":"Get a specific moment by ID.","inputSchema":{"properties":{"moment_id":{"type":"string"}},"type":"object","required":["moment_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"session_id":{"type":["string","null"]},"label":{"type":"string"},"index":{"type":"integer"},"content":{"type":["string","null"]},"image":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"categories":{"type":"array"}},"type":"object","required":["id","campaign_id","label","index","created_at","categories"]}},{"name":"list-factions-tool","title":"List Factions Tool","description":"List factions in a campaign. Factions represent guilds, organisations, or other groups.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of factions records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-faction-tool","title":"Get Faction Tool","description":"Get a specific faction by ID.","inputSchema":{"properties":{"faction_id":{"type":"string"}},"type":"object","required":["faction_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"type":{"type":["string","null"]},"image":{"type":["string","null"]},"aliases":{"type":["array","null"]},"tcg_image":{"type":["string","null"]},"merge":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","name","created_at"]}},{"name":"list-locations-tool","title":"List Locations Tool","description":"List locations in a campaign. Locations can be nested (cities, taverns, dungeons, etc.).","inputSchema":{"properties":{"campaign_id":{"type":"string"},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of locations records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-location-tool","title":"Get Location Tool","description":"Get a specific location by ID.","inputSchema":{"properties":{"location_id":{"type":"string"}},"type":"object","required":["location_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"type":{"type":["string","null"]},"parent_id":{"type":["string","null"]},"image":{"type":["string","null"]},"aliases":{"type":["array","null"]},"tcg_image":{"type":["string","null"]},"merge":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","name","created_at"]}},{"name":"list-items-tool","title":"List Items Tool","description":"List items in a campaign. Items include weapons, armour, artefacts, and other notable objects.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of items records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-item-tool","title":"Get Item Tool","description":"Get a specific item by ID.","inputSchema":{"properties":{"item_id":{"type":"string"}},"type":"object","required":["item_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"type":{"type":["string","null"]},"image":{"type":["string","null"]},"aliases":{"type":["array","null"]},"tcg_image":{"type":["string","null"]},"merge":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","name","created_at"]}},{"name":"list-quests-tool","title":"List Quests Tool","description":"List quests in a campaign with pagination. Filter by status (planned, in-progress, blocked, failed, done, n\/a) or category (main, side, faction, personal, n\/a).","inputSchema":{"properties":{"campaign_id":{"type":"string"},"search":{"type":["string","null"]},"status":{"enum":["planned","in-progress","blocked","failed","done","n\/a"],"type":["string","null"]},"quest_category":{"enum":["main","side","faction","personal","n\/a"],"type":["string","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of quests records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-quest-tool","title":"Get Quest Tool","description":"Get a fully expanded quest by ID, including objectives, progress log, related entity refs, and session provenance.","inputSchema":{"properties":{"quest_id":{"type":"string"}},"type":"object","required":["quest_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"order_index":{"type":"integer"},"quest_name":{"type":"string"},"quest_category":{"enum":["main","side","faction","personal","n\/a"],"type":["string","null"]},"status":{"enum":["planned","in-progress","blocked","failed","done","n\/a"],"type":["string","null"]},"quest_giver":{"type":["string","null"]},"quest_giver_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"next_action":{"type":["string","null"]},"resolution":{"type":["string","null"]},"objective_count":{"type":["integer","null"]},"completed_objective_count":{"type":["integer","null"]},"progress_entry_count":{"type":["integer","null"]},"related_entity_count":{"type":["integer","null"]},"first_session":{"type":["array","null"]},"last_session":{"type":["array","null"]},"success_definition":{"type":["string","null"]},"failure_conditions":{"type":["string","null"]},"objectives":{"type":["array","null"]},"progress_log":{"type":["array","null"]},"progress_log_entries":{"type":["array","null"]},"related_characters":{"type":["array","null"]},"related_factions":{"type":["array","null"]},"related_locations":{"type":["array","null"]},"related_items":{"type":["array","null"]},"related_entity_refs":{"type":["array","null"]}},"type":"object","required":["id","campaign_id","order_index","quest_name","created_at"]}},{"name":"list-journals-tool","title":"List Journals Tool","description":"List journal entries in a campaign. Results are filtered to entries the caller can see. Content is omitted from the list; use get_journal to fetch full content.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"folder_id":{"type":["string","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of journals records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-journal-tool","title":"Get Journal Tool","description":"Get a specific journal entry by ID including full content and the caller's effective permission level.","inputSchema":{"properties":{"entry_id":{"type":"string"}},"type":"object","required":["entry_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"title":{"type":"string"},"summary":{"type":["string","null"]},"status":{"enum":["draft","published","archived"],"type":["string","null"]},"folder_id":{"type":["string","null"]},"is_public":{"type":"boolean"},"is_pinned":{"type":["boolean","null"]},"tags":{"type":["array","null"]},"author_id":{"type":["string","null"]},"last_edited_by_id":{"type":["string","null"]},"token_count":{"type":["integer","null"]},"cover_image":{"type":["string","null"]},"published_at":{"type":["string","null"]},"archived_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"content":{"type":["string","null"]},"content_rich":{"type":["array","null"]},"content_metadata":{"type":["array","null"]},"permission_level":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","title","is_public","created_at"]}},{"name":"list-journal-folders-tool","title":"List Journal Folders Tool","description":"List journal folders for a campaign. Folders are ordered by path and position for tree rendering.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"parent_id":{"type":["string","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of journal folders records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}},{"name":"get-journal-folder-tool","title":"Get Journal Folder Tool","description":"Get a specific journal folder by ID.","inputSchema":{"properties":{"folder_id":{"type":"string"}},"type":"object","required":["folder_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"id":{"type":"string"},"campaign_id":{"type":"string"},"parent_id":{"type":["string","null"]},"name":{"type":"string"},"path":{"type":"string"},"position":{"type":"integer"},"description":{"type":["string","null"]},"metadata":{"type":["array","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"type":"object","required":["id","campaign_id","name","path","position","created_at"]}},{"name":"list-links-tool","title":"List Links Tool","description":"List links between entities in a campaign. Supports filtering by source\/target entity and relationship alias.","inputSchema":{"properties":{"campaign_id":{"type":"string"},"from_id":{"type":["string","null"]},"from_type":{"type":["string","null"]},"to_id":{"type":["string","null"]},"to_type":{"type":["string","null"]},"alias":{"type":["string","null"]},"page":{"type":["integer","null"]},"size":{"maximum":100,"type":["integer","null"]}},"type":"object","required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"properties":{"data":{"description":"List of links records.","type":"array"},"total":{"description":"Total number of matching records.","type":"integer"},"page":{"description":"Current page number.","type":"integer"},"size":{"description":"Page size.","maximum":100,"type":"integer"},"pages":{"description":"Total number of pages.","type":"integer"}},"type":"object","required":["data"]}}],"resources":[],"prompts":[]}