{"manifest_version":"0.2","name":"Argo MCP Server","description":"Remote MCP server for the Argo TTRPG/VTT platform. Lets AI assistants search and manage campaigns, mnemons (lore, NPCs, locations, quests, journals, session summaries), sessions, guilds, friends, email invitations, and the community forum.","vendor":"Argo Games","homepage":"https://argo.games","docs_url":"https://app.argo.games/docs/mcp","support_url":"https://github.com/Argo-RPG-Platform/MCP/issues","repository":"https://github.com/Argo-RPG-Platform/MCP","categories":["games","ttrpg","worldbuilding","campaign-management"],"privacy_policies":["https://argo.games/policies/privacy-policy"],"remote_url":"https://mcp.argo.games/mcp","sse_url":"https://mcp.argo.games/sse","transports":["streamable-http","sse"],"auth":{"type":"oauth2","authorization_server":"https://oauth.argo.games","authorization_server_metadata":"https://mcp.argo.games/.well-known/oauth-authorization-server","protected_resource_metadata":"https://mcp.argo.games/.well-known/oauth-protected-resource","registration_endpoint":"https://mcp.argo.games/oauth/register","scopes_supported":["openid","offline_access","campaign.read","campaign.write","campaign.create","guild.read","guild.write","guild.admin","friends.read","friends.write","invite.write","forum.read","forum.write"]},"tools":[{"name":"accept_friend_request","description":"Accept an incoming friend request from the given user.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"add_campaign_to_guild","description":"Add a campaign to a guild. Any active member of the guild can do this; the calling user must be the campaign's GM (enforced server-side).","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"add_co_gm","description":"Add a user as an assistant GM (co-GM) of a campaign. Owner-only — the calling user must be the campaign's primary GM. Maximum 5 co-GMs per campaign.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"add_guild_calendar_event","description":"Add a new event to the guild's shared calendar. Owner/Admin only. startDateTime / endDateTime are ISO-8601 (e.g. 2026-06-12T19:00:00).","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"cancel_friend_request","description":"Cancel a friend request you previously sent.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}},{"name":"create_archive_mnemons","description":"Create Archive mnemons (archived lore that is no longer current). Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_campaign","description":"Create a new Argo campaign. The current user becomes GM and the calling token gains read+write access to the new campaign immediately (no re-consent needed). Requires the campaign.create OAuth scope, granted at consent time.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_custom_mnemons","description":"Create custom-typed mnemons (any free-form entry that doesn't fit the other types). Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_journal_mnemons","description":"Create Journal mnemons (log of in-world events). Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_location_mnemons","description":"Create Location mnemons (places — cities, dungeons, taverns). Use create_mnemon_relationship with PARENT_OF to nest larger places under one another after creation. Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_lore_mnemons","description":"Create Lore mnemons (world background, factions' beliefs, history). Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_mnemon_relationship","description":"Create a relationship between two mnemon entries. All 7 labels: MEMBER (NPC ∈ Faction, bidirectional), ALLY (bidirectional), ENEMY (directional), RIVAL (directional), PARENT_OF (Location hierarchy — sourceEntryId is the outer/larger place, e.g. Region → City → District → Tavern), CONTAINS (Location → NPC present there), LOCATED_IN (NPC → Location; inverse of CONTAINS). sourceEntryId is the 'from' side; targetEntryId is the 'to' side — direction matters. Call describe_mnemon_types for the full valid (sourceType, label, targetType) matrix. For faction membership prefer memberNpcEntryIds / affiliationEntryIds on the NPC itself.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_npc_mnemons","description":"Create NPC mnemons (FACTION or INDIVIDUAL). npcType is REQUIRED on each item. Use memberNpcEntryIds (on FACTIONs) and affiliationEntryIds (on INDIVIDUALs) to wire membership; the server projects into MEMBER relationships. Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_player_mnemons","description":"Create Player mnemons (party root, character notes, party notes). For playerKind=CHARACTER, supply parentEntryId (the PARTY mnemon), partyId (CampaignParty.id), and characterId (SessionCharacter id) or the entry will be auto-detached. Players with campaign.write may call this for a party they belong to; GMs may call for any party.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_quest_mnemons","description":"Create Quest mnemons. questStatus is one of active|completed|failed. Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_session","description":"Schedule a campaign session. Provide an ISO-8601 startAt; endAt is optional. Useful for laying out planned arcs or recurring play nights.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"create_session_summary_mnemons","description":"Create SessionSummary mnemons (structured summaries of game sessions). Players may not call this — GM/co-GM only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"delete_mnemon_relationship","description":"Delete a relationship by id.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}},{"name":"describe_mnemon_types","description":"Returns a catalog of all mnemon types, their type-specific fields, and the full valid relationship matrix (sourceType → label → targetType). Call this before create_mnemon or create_mnemon_relationship when you are unsure which type or label to use. NPC subtype is strictly FACTION | INDIVIDUAL.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_create_topic","description":"Create a new forum topic (bug report, feature request, or general discussion). Always call forum_search first to check for duplicates. Call forum_list_categories to get the correct categoryId.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"forum_get_latest_topics","description":"Get the latest active topics across all forum categories.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_get_notifications","description":"Get the current user's forum notifications (replies, mentions, likes).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_get_user_posts","description":"List topics created by the current user on the forum.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_list_categories","description":"List all Discourse forum categories at community.argo.games. Call this first when the user wants to post a bug report or feature request — you need the categoryId to create a topic.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_list_topics","description":"List topics in a specific forum category. Use forum_list_categories to get category slugs and IDs.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_read_topic","description":"Read the full content of a forum topic including all posts and replies.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"forum_reply","description":"Reply to an existing forum topic.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"forum_search","description":"Search forum topics and posts. Supports Discourse search syntax: #category-slug to filter by category, @username to filter by author. Always search before creating a bug report or feature request to avoid duplicates.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"get_campaign","description":"Retrieve details of an Argo campaign (name, description, rule system, co-GMs).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"get_guild","description":"Retrieve full details of a guild (members, campaigns, calendar metadata).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"get_mnemon","description":"Get the full details of a specific mnemon entry (title, blocks, type properties).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"get_session","description":"Get details of a single campaign session.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"invite_guild_member","description":"Invite a user to join the guild. Owner/Admin only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"invite_user_by_email","description":"Send Argo email invitations to up to 20 addresses on behalf of the current user. Recipients receive a sign-up link. No campaign or guild context is required.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true}},{"name":"list_campaigns","description":"List all Argo campaigns the current grant token has access to, including the access level (\"read\" or \"read+write\") for each. Call this first when the user has not provided a campaign ID. Each entry includes both `campaignName` and `id` (shown inline as `[id: …]` and also in structuredContent.idMap). Use the `id` verbatim for any subsequent tool call that takes a `campaignId`. In prose to the user, refer to campaigns by `campaignName`; do not print the raw `id` unless asked.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_co_gms","description":"List the assistant GMs (co-GMs) of a campaign.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_friends","description":"List the current user's accepted friends.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_guild_members","description":"List the members of a guild (id, role, status, invitedAt, joinedAt).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_guilds","description":"List the guilds the current user belongs to, with role (Owner/Admin/Member), member count, and campaign count. Requires the guild.read scope. Each entry includes both `name` and `guildId` (shown inline as `[id: …]` and in structuredContent.idMap). Use the `guildId` verbatim for any tool that takes one; refer to guilds by `name` in prose to the user.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_mnemon_relationships","description":"List the relationships of a mnemon entry, split into outgoing edges, incoming edges, and a flat list of linked entries (entryId/title/type/relationshipTypes). Use this to find members of a faction, allies/enemies of an NPC, etc.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_mnemons","description":"List mnemon (lore/memory) entries for an Argo campaign. Optional filters: `title` (case-insensitive substring on entry title only) and `type` (e.g. NPC, Location, Quest). Returns all matching entries — pagination is automatic. Each entry includes both `title` and `entryId` (shown inline as `[id: …]` and in structuredContent.idMap). Use the `entryId` verbatim for any tool that takes one; refer to entries by `title` in prose to the user.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_received_friend_requests","description":"List incoming friend requests awaiting your response.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_sent_friend_requests","description":"List outgoing friend requests that are still pending.","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"list_sessions","description":"List campaign sessions for a given month (defaults to the current month).","read_only":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}},{"name":"reject_friend_request","description":"Reject an incoming friend request from the given user.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}},{"name":"remove_co_gm","description":"Remove a co-GM from a campaign. Owner-only or self-removal.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}},{"name":"remove_guild_member","description":"Remove a member from the guild. Owner/Admin only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}},{"name":"send_friend_request","description":"Send a friend request to another Argo user.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"set_guild_member_role","description":"Change a guild member's role to Owner, Admin, or Member. Owner/Admin only. Note that promoting another user to Owner transfers the guild — confirm with the user first.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_archive_mnemons","description":"Update typed/meta fields of Archive mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_campaign","description":"Update a campaign's display name and/or description. Both fields optional — only supplied fields are changed; pass an empty string to clear the description. GMs and co-GMs can call this; rule-system swaps remain WebApp-only.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_custom_mnemons","description":"Update typed/meta fields of Custom-typed mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_journal_mnemons","description":"Update typed/meta fields of Journal mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_location_mnemons","description":"Update typed/meta fields of Location mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_lore_mnemons","description":"Update typed/meta fields of Lore mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_mnemons_content","description":"Edit the content blocks of one or more mnemon entries. Each item carries an entryId and an ordered list of ops (append, insertAfter, replace, remove) applied atomically per entry. Block addressing: get block ids from get_mnemon, then target them in replace/remove/insertAfter. New blocks (append, insertAfter, replace) get fresh server-generated UUIDs. Text in block 'text' is HTML — use <b>, <i>, <a>, <br>, <img>; do NOT use Markdown like '**bold**' or '# heading'. Use blockType for paragraph/heading1/heading2/bullet_list/numbered_list/todo/quote/code/callout/divider/image. Inline <img src=\"data:...\"> or <img src=\"https://...\"> is uploaded to the campaign asset bucket and the src is rewritten to asset:<id>. SSRF-blocked / oversize / failed fetches are stripped with a warning. On a bad op (missing blockId, unknown blockType, etc.) the whole entry's batch is rejected with the failedOpIndex; no partial mutation per entry.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_npc_mnemons","description":"Update typed/meta fields of NPC mnemons (visibility, tags, npcType, faction membership, etc.). Does NOT modify content blocks — use update_mnemons_content for that. Set visibility=PUBLIC on multiple NPCs in a single call by listing them in items[].","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_player_mnemons","description":"Update typed/meta fields of Player mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_quest_mnemons","description":"Update typed/meta fields of Quest mnemons (status transitions, expiry, related entries).","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_session","description":"Reschedule a campaign session or edit its title/description. All fields optional. Owner-only on the backend.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"update_session_summary_mnemons","description":"Update typed/meta fields of SessionSummary mnemons.","read_only":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}}],"examples":["What does my party know about the Red Oracle?","Summarise last session and create a session summary mnemon for it.","Create an NPC named Captain Veyl with a backstory tied to the Ashfall Wars.","List all locations inside the city of Black Harbor.","Find contradictions between my lore entries on the Iron Compact."]}