Server definition
- Hash
- sha256:6f4eff7c1dc3f54922fa34fe1267e79d3be5c24f9a3cdeae7d571abafc37bf42
- What it is
- What a remote MCP server returned when asked what it offers: 63 tools
The blob, as servednamed by its sha256
{
"instructions": "ID handling: every list_* tool includes an `[id: …]` suffix on each entry in its text response (and the same IDs in structuredContent.idMap). You MUST use those IDs verbatim when calling any tool that takes a guildId, campaignId, entryId, relationshipId, userId, or sessionId — do not ask the user for an ID you can resolve from a list_* call. Display policy: in your prose to the user, refer to resources by name/title (campaignName, guild name, mnemon title) rather than printing the raw ID. Only show an ID if the user explicitly asks for it. Ambiguity: if two resources share the same name, distinguish by campaign, type, date, or description — never by showing raw IDs.",
"tools": [
{
"description": "Accept an incoming friend request from the given user.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"description": "Argo user ID of the counterparty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"name": "accept_friend_request",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
}
},
{
"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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID to add to the guild.",
"minLength": 1,
"type": "string"
},
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId",
"campaignId"
],
"type": "object"
},
"name": "add_campaign_to_guild",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"type": "string"
},
"guildId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
}
},
"required": [
"success",
"guildId",
"campaignId"
],
"type": "object"
}
},
{
"description": "Send a user an assistant GM (co-GM) offer for a campaign. This does NOT add them immediately: the target must accept the offer before they become an assistant GM. Owner-only — the calling user must be the campaign's primary GM. Maximum 5 co-GMs per campaign.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"userId": {
"description": "Argo user ID of the user to promote to co-GM. Must be an existing user.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"userId"
],
"type": "object"
},
"name": "add_co_gm",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignDescription": {
"type": [
"string",
"null"
]
},
"campaignName": {
"type": "string"
},
"coGameMasterIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"gameMasterId": {
"type": "string"
},
"gameSystemSlug": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ruleSystem": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"gameMasterId",
"campaignName"
],
"type": "object"
}
},
{
"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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "Optional event description.",
"type": "string"
},
"endDateTime": {
"description": "Event end, ISO-8601 — optional.",
"type": "string"
},
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
},
"startDateTime": {
"description": "Event start, ISO-8601 (e.g. 2026-06-12T19:00:00).",
"type": "string"
},
"title": {
"description": "Event title.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId",
"title",
"startDateTime"
],
"type": "object"
},
"name": "add_guild_calendar_event",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
}
},
{
"description": "Cancel a friend request you previously sent.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"description": "Argo user ID of the counterparty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"name": "cancel_friend_request",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
}
},
{
"description": "Create Archive mnemons (archived lore that is no longer current). Players may not call this — GM/co-GM only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"relatedEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_archive_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignName": {
"description": "Display name of the campaign.",
"minLength": 1,
"type": "string"
},
"description": {
"description": "Short description of the campaign's setting, tone, and premise.",
"minLength": 1,
"type": "string"
},
"gameSystemSlug": {
"description": "Optional explicit slug for the public URL (e.g. 'dnd5e'). If omitted, the server derives one from ruleSystem.",
"type": "string"
},
"ruleSystem": {
"description": "Rule system the campaign uses. E.g. 'Dungeons & Dragons 5e', 'Pathfinder 2e', 'Forbidden Lands'. Free-form; the WebAPI derives the slug from this.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignName",
"description",
"ruleSystem"
],
"type": "object"
},
"name": "create_campaign",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"accessLevel": {
"type": [
"string",
"null"
]
},
"campaignDescription": {
"type": [
"string",
"null"
]
},
"campaignName": {
"type": "string"
},
"coGameMasterIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"gameMasterId": {
"type": "string"
},
"gameSystemSlug": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ruleSystem": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"gameMasterId",
"campaignName"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"customType": {
"description": "Optional descriptive subtype label.",
"type": "string"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_custom_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Create Journal mnemons (log of in-world events). Players may not call this — GM/co-GM only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"consequenceEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"date": {
"type": "string"
},
"involvedCharacterIds": {
"items": {
"type": "string"
},
"type": "array"
},
"involvedLocationEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"involvedNpcEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"outcome": {
"type": "string"
},
"sessionNumber": {
"type": "integer"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_journal_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"levelId": {
"description": "Unreal Engine level reference.",
"type": "string"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_location_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Create Lore mnemons (world background, factions' beliefs, history). Players may not call this — GM/co-GM only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"relatedEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_lore_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Create a relationship between two mnemon entries. The label decides everything: its kind (containment or association) and how it reads (one_way or mutual) belong to the word itself — never send a per-edge override. All 16 labels: MEMBER (NPC ∈ Faction, mutual), ALLY (mutual), ENEMY (one-way), RIVAL (one-way), 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), HAS_SUBQUEST (Quest → subquest Quest), QUEST_GIVER (Quest → the NPC who gives it), QUEST_LOCATION (Quest → the Location where it is given or set), QUEST_RELATED_NPC (Quest → NPC), QUEST_RELATED_LOCATION (Quest → Location), SESSION_ATTENDEE_CHARACTER (SessionSummary → CHARACTER-kind Player), SESSION_ATTENDEE_NPC (SessionSummary → NPC), SESSION_FEATURED_QUEST (SessionSummary → Quest), SESSION_FEATURED_LOCATION (SessionSummary → Location). sourceEntryId is the 'from' side; targetEntryId is the 'to' side — which end is which matters. Call describe_mnemon_types for the full valid (sourceType, label, targetType) matrix. For faction membership prefer memberNpcEntryIds / affiliationEntryIds on the NPC itself; for a quest's giver, location and parent prefer giverId / locationId / parentQuestId on the quest, which keep each to one link. Session-summary links have no array equivalent — the SESSION_* labels are the only way to set them.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"color": {
"type": "string"
},
"direction": {
"description": "Deprecated: leave unset. The label alone decides the edge's shape — its kind and how it reads belong to the word (Mnemon D29/D33), and the server refuses a contradiction.",
"type": "string"
},
"label": {
"enum": [
"MEMBER",
"ALLY",
"ENEMY",
"RIVAL",
"PARENT_OF",
"CONTAINS",
"LOCATED_IN",
"HAS_SUBQUEST",
"QUEST_GIVER",
"QUEST_LOCATION",
"QUEST_RELATED_NPC",
"QUEST_RELATED_LOCATION",
"SESSION_ATTENDEE_CHARACTER",
"SESSION_ATTENDEE_NPC",
"SESSION_FEATURED_QUEST",
"SESSION_FEATURED_LOCATION"
],
"type": "string"
},
"sourceEntryId": {
"minLength": 1,
"type": "string"
},
"targetEntryId": {
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"sourceEntryId",
"targetEntryId",
"label"
],
"type": "object"
},
"name": "create_mnemon_relationship",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"color": {
"type": "string"
},
"direction": {
"type": "string"
},
"kind": {
"type": "string"
},
"label": {
"type": "string"
},
"relationshipId": {
"type": "string"
},
"sourceId": {
"type": "string"
},
"symmetry": {
"type": "string"
},
"targetId": {
"type": "string"
}
},
"required": [
"relationshipId",
"sourceId",
"targetId",
"label"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"affiliationEntryIds": {
"description": "INDIVIDUAL only: factions this person belongs to.",
"items": {
"type": "string"
},
"type": "array"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"memberNpcEntryIds": {
"description": "FACTION only: members of this faction (NPC entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"npcType": {
"description": "Required: FACTION (organization) or INDIVIDUAL (person).",
"enum": [
"FACTION",
"INDIVIDUAL"
],
"type": "string"
},
"primaryLocationEntryId": {
"description": "Home location — entryId or exact title.",
"type": "string"
},
"relationshipIds": {
"items": {
"type": "string"
},
"type": "array"
},
"sheetId": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown",
"npcType"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_npc_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"characterId": {
"description": "SessionCharacter id (required for playerKind=CHARACTER).",
"type": "string"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"parentEntryId": {
"description": "For playerKind=CHARACTER: entryId of the parent PARTY-kind PlayerMnemon.",
"type": "string"
},
"partyId": {
"description": "CampaignParty id (NOT a mnemon entryId).",
"type": "string"
},
"playerKind": {
"enum": [
"PARTY",
"CHARACTER",
"NOTES"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_player_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Create Quest mnemons: a header (status, kind, playersCanTick, hook, and giverId / locationId / parentQuestId links) and a body of objectives (with sub-objectives), reward chips, a Markdown background and GM-only gmNotes. The server builds the quest the Argo app shows from these. Do not write objectives or rewards as Markdown; markdown alone becomes the Background. The retired quest board fields (steps, reward rows, issuer*, questStatus) are for quests the migration has not converted — see describe_mnemon_types.questBody. Players may not call this — GM/co-GM only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"background": {
"description": "The Background section, in Markdown.",
"type": "string"
},
"expiresAt": {
"description": "Retired quest board field (ISO-8601).",
"type": "string"
},
"giverId": {
"description": "Who gives the quest: an NPC's entryId or exact title (its Quest giver link). On update an empty string removes it.",
"type": "string"
},
"gmNotes": {
"description": "GM-only notes, in Markdown. Players never see them.",
"type": "string"
},
"hook": {
"description": "The one line players see under the title in the quest log. An empty string clears it.",
"type": "string"
},
"issuerNpcEntryId": {
"description": "Retired quest board field: send giverId.",
"type": "string"
},
"issuerText": {
"description": "Retired quest board field: write it into background.",
"type": "string"
},
"kind": {
"description": "Main | Side | Personal. Reads as Side when unset.",
"enum": [
"Main",
"Side",
"Personal"
],
"type": "string"
},
"locationId": {
"description": "Where the quest is given or set: a Location's entryId or exact title. On update an empty string removes it.",
"type": "string"
},
"markdown": {
"description": "The quest's prose in Markdown: its Background when background is not given. Mentions: @[label](mnemon:<entryId>).",
"minLength": 1,
"type": "string"
},
"objectives": {
"description": "The objectives, in order.",
"items": {
"additionalProperties": false,
"properties": {
"children": {
"description": "Its sub-objectives, in order. Omitted keeps the ones it has; an empty list removes them.",
"items": {
"additionalProperties": false,
"properties": {
"hidden": {
"description": "true hides it from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The objective to rewrite, as get_mnemon's quest.objectives[].id names it. Omit for a new objective.",
"type": "string"
},
"optional": {
"description": "An optional objective does not count toward the quest's progress. Defaults to false.",
"type": "boolean"
},
"state": {
"description": "open (the default), done or failed.",
"enum": [
"open",
"done",
"failed"
],
"type": "string"
},
"text": {
"description": "The objective, one line of Markdown. Mentions: @[label](mnemon:<entryId>).",
"minLength": 1,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"hidden": {
"description": "true hides it from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The objective to rewrite, as get_mnemon's quest.objectives[].id names it. Omit for a new objective.",
"type": "string"
},
"optional": {
"description": "An optional objective does not count toward the quest's progress. Defaults to false.",
"type": "boolean"
},
"state": {
"description": "open (the default), done or failed.",
"enum": [
"open",
"done",
"failed"
],
"type": "string"
},
"text": {
"description": "The objective, one line of Markdown. Mentions: @[label](mnemon:<entryId>).",
"minLength": 1,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"parentQuestId": {
"description": "The quest this one belongs to: a Quest's entryId or exact title. On update an empty string removes it.",
"type": "string"
},
"playersCanTick": {
"description": "Whether players may tick the objectives they can see. Off by default.",
"type": "boolean"
},
"questStatus": {
"description": "Retired: send status.",
"type": "string"
},
"relatedLocationEntryIds": {
"description": "Locations the quest involves (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"relatedNpcEntryIds": {
"description": "NPCs the quest involves (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"repeatable": {
"description": "Retired quest board field.",
"type": "boolean"
},
"rewards": {
"description": "The reward chips, each with its kind.",
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"description": "How many: coins, experience points, a stack.",
"type": "number"
},
"entryId": {
"description": "item chips: the mnemon entry it links to (entryId or exact title). Not with ruleEntryId.",
"type": "string"
},
"hidden": {
"description": "true hides the chip from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The chip to rewrite, as get_mnemon's quest.rewards[].id names it. Omit for a new chip.",
"type": "string"
},
"itemId": {
"description": "Retired reward row: a free-text item reference.",
"type": "string"
},
"kind": {
"description": "currency | xp | item | other. Makes this a reward chip — send it on every reward.",
"enum": [
"currency",
"xp",
"item",
"other"
],
"type": "string"
},
"label": {
"description": "What the chip says: an item's name, a favour, a title.",
"type": "string"
},
"linkedStepIds": {
"description": "Retired reward row: the stepIds or subquest entry ids that unlock it.",
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"description": "Retired reward row: notes.",
"type": "string"
},
"rewardType": {
"description": "Retired reward row, without kind: Gold | Item | XP | Reputation …",
"type": "string"
},
"ruleEntryId": {
"description": "item chips: the rules-library entry it links to. Not with entryId.",
"type": "string"
},
"unit": {
"description": "currency chips: the coin, as the campaign's setting names it (e.g. coin.gp), or free text such as 'gold'.",
"type": "string"
},
"unitLabel": {
"description": "How the coin reads, e.g. 'Gold piece'.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"status": {
"description": "Available | Active | Completed | Failed. Reads as Available when unset.",
"enum": [
"Available",
"Active",
"Completed",
"Failed"
],
"type": "string"
},
"steps": {
"description": "Retired: the old quest board's steps, for quests the migration has not converted. Send objectives.",
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"notes": {
"description": "Free-text bullet notes for the step.",
"items": {
"type": "string"
},
"type": "array"
},
"status": {
"description": "Defaults to 'Available' when omitted. Unknown values are coerced server-side.",
"enum": [
"Hidden",
"Available",
"Active",
"Completed",
"Failed",
"TurnedIn",
"Abandoned",
"Expired",
"OnHold"
],
"type": "string"
},
"stepId": {
"description": "Optional. Server generates a fresh UUID when blank. Provide an existing stepId to reuse linkedStepIds.",
"type": "string"
},
"targetLocationEntryIds": {
"description": "Locations involved in this step.",
"items": {
"type": "string"
},
"type": "array"
},
"targetNpcEntryIds": {
"description": "NPCs involved in this step (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Short label for the step, e.g. 'Talk to the innkeeper'.",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"type": "array"
},
"subQuestEntryIds": {
"description": "This quest's subquests (entryIds or titles). Prefer parentQuestId on each subquest.",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_quest_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Schedule a campaign session. Provide an ISO-8601 startAt; endAt is optional. Useful for laying out planned arcs or recurring play nights.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"description": {
"description": "Optional session description / GM notes.",
"type": "string"
},
"endAt": {
"description": "Session end time as an ISO-8601 instant.",
"type": "string"
},
"invitedUserIds": {
"description": "User IDs to invite (must be active campaign members).",
"items": {
"type": "string"
},
"type": "array"
},
"startAt": {
"description": "Session start time as an ISO-8601 instant (e.g. '2026-06-01T19:00:00Z').",
"minLength": 1,
"type": "string"
},
"title": {
"description": "Session title (e.g. 'Session 12: The Dragon's Lair').",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"title",
"startAt"
],
"type": "object"
},
"name": "create_session",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"attendanceReplies": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"campaignId": {
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"createdByUserId": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"endAt": {
"type": [
"string",
"null"
]
},
"guildId": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"invitedPartyIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"invitedUserIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"startAt": {
"type": "string"
},
"title": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"campaignId",
"title",
"startAt"
],
"type": "object"
}
},
{
"description": "Create SessionSummary mnemons (structured summaries of game sessions). Players may not call this — GM/co-GM only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"combats": {
"description": "Combat encounters that took place this session.",
"items": {
"additionalProperties": false,
"properties": {
"description": {
"description": "Who fought whom and where, in one sentence.",
"minLength": 1,
"type": "string"
},
"outcome": {
"description": "How it resolved, e.g. \"party victorious, no casualties\".",
"type": "string"
}
},
"required": [
"description"
],
"type": "object"
},
"type": "array"
},
"date": {
"type": "string"
},
"detailedSummary": {
"description": "Full narrative summary, 3-5 paragraphs.",
"type": "string"
},
"loot": {
"description": "Items, treasure, or rewards acquired.",
"items": {
"type": "string"
},
"type": "array"
},
"majorEvents": {
"description": "Significant story beats, in chronological order.",
"items": {
"type": "string"
},
"type": "array"
},
"markdown": {
"description": "Body content as Markdown. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first.",
"minLength": 1,
"type": "string"
},
"npcsMentioned": {
"description": "NPCs that appeared or were referenced. This is descriptive only — to link one to an existing NPC mnemon, call create_mnemon_relationship with SESSION_ATTENDEE_NPC.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Name as referenced in the session, e.g. \"Captain Mira\".",
"minLength": 1,
"type": "string"
},
"role": {
"description": "Role played this session, e.g. \"quest-giver\", \"rescued captive\".",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"oneSentenceSummary": {
"description": "Single-sentence TL;DR of what happened.",
"type": "string"
},
"openThreads": {
"description": "Unresolved threads and cliffhangers as of session end.",
"items": {
"type": "string"
},
"type": "array"
},
"partyDecisions": {
"description": "Meaningful choices that will shape future sessions.",
"items": {
"type": "string"
},
"type": "array"
},
"partyEndState": {
"additionalProperties": {
"type": "string"
},
"description": "Character display name -> short end-of-session status line.",
"type": "object"
},
"previouslyOn": {
"description": "Where each player ended — read aloud at the top of the next session.",
"type": "string"
},
"sessionNumber": {
"type": "integer"
},
"suggestedTitle": {
"description": "Short evocative title for the session, like a TV episode title.",
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the new entry.",
"minLength": 1,
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"title",
"markdown"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "create_session_summary_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Permanently delete a mnemon entry and every relationship that touches it. GM-only on the backend. This cannot be undone — confirm with the user before calling. entryId accepts a hex id or an exact title.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"entryId": {
"description": "Mnemon entry ID (hex) or exact title.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"entryId"
],
"type": "object"
},
"name": "delete_mnemon",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"type": "string"
},
"entryId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
}
},
"required": [
"success",
"campaignId",
"entryId"
],
"type": "object"
}
},
{
"description": "Delete a relationship by id.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"relationshipId": {
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"relationshipId"
],
"type": "object"
},
"name": "delete_mnemon_relationship",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"type": "string"
},
"relationshipId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
}
},
"required": [
"success",
"campaignId",
"relationshipId"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "describe_mnemon_types",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"blockOps": {
"additionalProperties": false,
"properties": {
"addressing": {
"type": "string"
},
"atomicity": {
"type": "string"
},
"ops": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"op": {
"type": "string"
},
"optional": {
"items": {
"type": "string"
},
"type": "array"
},
"required": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"op",
"required",
"optional",
"description"
],
"type": "object"
},
"type": "array"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"ops",
"atomicity",
"addressing"
],
"type": "object"
},
"commonFields": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"values": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"type",
"description"
],
"type": "object"
},
"type": "array"
},
"idReferences": {
"type": "string"
},
"markdownFormat": {
"additionalProperties": false,
"properties": {
"images": {
"type": "string"
},
"mentions": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"summary",
"mentions",
"images"
],
"type": "object"
},
"questBody": {
"additionalProperties": false,
"properties": {
"header": {
"additionalProperties": false,
"properties": {
"fields": {
"items": {
"type": "string"
},
"type": "array"
},
"kindValues": {
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"type": "string"
},
"statusValues": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"fields",
"statusValues",
"kindValues",
"notes"
],
"type": "object"
},
"objective": {
"additionalProperties": false,
"properties": {
"fields": {
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"type": "string"
},
"stateValues": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"fields",
"stateValues",
"notes"
],
"type": "object"
},
"prose": {
"type": "string"
},
"retired": {
"type": "string"
},
"reward": {
"additionalProperties": false,
"properties": {
"fields": {
"items": {
"type": "string"
},
"type": "array"
},
"kindValues": {
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"type": "string"
}
},
"required": [
"fields",
"kindValues",
"notes"
],
"type": "object"
},
"summary": {
"type": "string"
},
"ticking": {
"type": "string"
}
},
"required": [
"summary",
"header",
"objective",
"reward",
"prose",
"ticking",
"retired"
],
"type": "object"
},
"relationshipLabels": {
"items": {
"type": "string"
},
"type": "array"
},
"relationships": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"label": {
"type": "string"
},
"source": {
"type": "string"
},
"target": {
"type": "string"
}
},
"required": [
"source",
"label",
"target",
"description"
],
"type": "object"
},
"type": "array"
},
"types": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"tool": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"type",
"tool",
"description"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"types",
"markdownFormat",
"blockOps",
"commonFields",
"relationshipLabels",
"relationships",
"idReferences",
"questBody"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categoryId": {
"description": "Numeric category ID. Call forum_list_categories first if unsure.",
"type": "integer"
},
"raw": {
"description": "Topic body in Markdown.",
"minLength": 1,
"type": "string"
},
"title": {
"description": "Topic title. Keep it concise and descriptive.",
"minLength": 1,
"type": "string"
}
},
"required": [
"title",
"raw",
"categoryId"
],
"type": "object"
},
"name": "forum_create_topic",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"id": {
"type": "number"
},
"post_number": {
"type": [
"number",
"null"
]
},
"topic_id": {
"type": [
"number",
"null"
]
},
"topic_slug": {
"type": [
"string",
"null"
]
},
"username": {
"type": [
"string",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
}
},
{
"description": "Get the latest active topics across all forum categories.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "forum_get_latest_topics",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"topic_list": {
"additionalProperties": true,
"properties": {
"topics": {
"items": {
"additionalProperties": true,
"properties": {
"category_id": {
"type": [
"number",
"null"
]
},
"created_at": {
"type": "string"
},
"excerpt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"last_posted_at": {
"type": [
"string",
"null"
]
},
"posts_count": {
"type": "number"
},
"reply_count": {
"type": "number"
},
"slug": {
"type": "string"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"slug",
"posts_count",
"reply_count",
"created_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"topics"
],
"type": "object"
}
},
"required": [
"topic_list"
],
"type": "object"
}
},
{
"description": "Get the current user's forum notifications (replies, mentions, likes).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "forum_get_notifications",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"notifications": {
"items": {
"additionalProperties": true,
"properties": {
"created_at": {
"type": [
"string",
"null"
]
},
"data": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"id": {
"type": "number"
},
"notification_type": {
"type": [
"number",
"null"
]
},
"post_number": {
"type": [
"number",
"null"
]
},
"read": {
"type": [
"boolean",
"null"
]
},
"topic_id": {
"type": [
"number",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"notifications"
],
"type": "object"
}
},
{
"description": "List topics created by the current user on the forum.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "forum_get_user_posts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"topic_list": {
"additionalProperties": true,
"properties": {
"topics": {
"items": {
"additionalProperties": true,
"properties": {
"category_id": {
"type": [
"number",
"null"
]
},
"created_at": {
"type": "string"
},
"excerpt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"last_posted_at": {
"type": [
"string",
"null"
]
},
"posts_count": {
"type": "number"
},
"reply_count": {
"type": "number"
},
"slug": {
"type": "string"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"slug",
"posts_count",
"reply_count",
"created_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"topics"
],
"type": "object"
}
},
"required": [
"topic_list"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "forum_list_categories",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"category_list": {
"additionalProperties": true,
"properties": {
"categories": {
"items": {
"additionalProperties": true,
"properties": {
"description_text": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"subcategory_list": {
"anyOf": [
{
"items": {
"$ref": "#/properties/category_list/properties/categories/items"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"slug"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"categories"
],
"type": "object"
}
},
"required": [
"category_list"
],
"type": "object"
}
},
{
"description": "List topics in a specific forum category. Provide categorySlug and/or categoryId — given only one, the other is resolved from the category list automatically. Use forum_list_categories to discover categories.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categoryId": {
"description": "Numeric category ID. Provide this and/or categorySlug.",
"type": "integer"
},
"categorySlug": {
"description": "Category slug (e.g. 'bug-reports'). Provide this and/or categoryId.",
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "forum_list_topics",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"topic_list": {
"additionalProperties": true,
"properties": {
"topics": {
"items": {
"additionalProperties": true,
"properties": {
"category_id": {
"type": [
"number",
"null"
]
},
"created_at": {
"type": "string"
},
"excerpt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"last_posted_at": {
"type": [
"string",
"null"
]
},
"posts_count": {
"type": "number"
},
"reply_count": {
"type": "number"
},
"slug": {
"type": "string"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"slug",
"posts_count",
"reply_count",
"created_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"topics"
],
"type": "object"
}
},
"required": [
"topic_list"
],
"type": "object"
}
},
{
"description": "Read the full content of a forum topic including all posts and replies. Post bodies are returned as plain text (HTML markup is stripped).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"topicId": {
"description": "Numeric Discourse topic ID.",
"type": "integer"
}
},
"required": [
"topicId"
],
"type": "object"
},
"name": "forum_read_topic",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"id": {
"type": "number"
},
"post_stream": {
"additionalProperties": true,
"properties": {
"posts": {
"items": {
"additionalProperties": true,
"properties": {
"cooked": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"reply_count": {
"type": [
"number",
"null"
]
},
"username": {
"type": [
"string",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"posts"
],
"type": "object"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"slug",
"post_stream"
],
"type": "object"
}
},
{
"description": "Reply to an existing forum topic.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"raw": {
"description": "Reply body in Markdown.",
"minLength": 1,
"type": "string"
},
"topicId": {
"description": "Numeric Discourse topic ID to reply to.",
"type": "integer"
}
},
"required": [
"topicId",
"raw"
],
"type": "object"
},
"name": "forum_reply",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"id": {
"type": "number"
},
"post_number": {
"type": [
"number",
"null"
]
},
"topic_id": {
"type": [
"number",
"null"
]
},
"topic_slug": {
"type": [
"string",
"null"
]
},
"username": {
"type": [
"string",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"q": {
"description": "Search query. Supports Discourse search syntax (e.g. #category, @username).",
"minLength": 1,
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "forum_search",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"grouped_search_result": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"posts": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"cooked": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"topic_id": {
"type": [
"number",
"null"
]
},
"username": {
"type": [
"string",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
},
"topics": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"category_id": {
"type": [
"number",
"null"
]
},
"created_at": {
"type": "string"
},
"excerpt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "number"
},
"last_posted_at": {
"type": [
"string",
"null"
]
},
"posts_count": {
"type": "number"
},
"reply_count": {
"type": "number"
},
"slug": {
"type": "string"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title",
"slug",
"posts_count",
"reply_count",
"created_at"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Retrieve details of an Argo campaign (name, description, rule system, co-GMs).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "The ID of the campaign to retrieve.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "get_campaign",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignDescription": {
"type": [
"string",
"null"
]
},
"campaignName": {
"type": "string"
},
"coGameMasterIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"gameMasterId": {
"type": "string"
},
"gameSystemSlug": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ruleSystem": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"gameMasterId",
"campaignName"
],
"type": "object"
}
},
{
"description": "Retrieve full details of a guild (members, campaigns, calendar metadata).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"description": "Guild ID to retrieve.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId"
],
"type": "object"
},
"name": "get_guild",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"members": {
"anyOf": [
{
"items": {
"additionalProperties": false,
"properties": {
"invitedAt": {
"type": [
"string",
"null"
]
},
"joinedAt": {
"type": [
"string",
"null"
]
},
"role": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
},
"userId": {
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
},
"ownerId": {
"type": "string"
},
"summary": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"color": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"ownerId"
],
"type": "object"
}
},
{
"description": "Get the full details of a specific mnemon entry (title, blocks, type properties). For a quest, `quest` holds its status, kind, playersCanTick, objectives and reward chips (with their ids), progress and reward totals, as the current user may see them — read objectives and rewards there, not from blocks.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"entryId": {
"description": "Mnemon entry ID (hex) or exact title.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"entryId"
],
"type": "object"
},
"name": "get_mnemon",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"blocks": {
"items": {
"additionalProperties": false,
"properties": {
"assetId": {
"type": "string"
},
"caption": {
"type": "string"
},
"checked": {
"type": "boolean"
},
"id": {
"type": "string"
},
"language": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"text": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"id",
"type"
],
"type": "object"
},
"type": "array"
},
"entryId": {
"type": "string"
},
"quest": {
"additionalProperties": false,
"description": "Quests only: status, kind, objectives, reward chips and progress as this user may see them.",
"properties": {
"kind": {
"description": "Main | Side | Personal.",
"type": "string"
},
"objectives": {
"items": {
"additionalProperties": false,
"properties": {
"depth": {
"description": "0 for a top-level objective.",
"type": "number"
},
"hidden": {
"description": "GM reads only: true when players cannot see it.",
"type": "boolean"
},
"id": {
"description": "Name it in set_quest_objective_state or update_quest_mnemons.",
"type": "string"
},
"optional": {
"type": "boolean"
},
"parentId": {
"type": "string"
},
"state": {
"description": "open | done | failed.",
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"text",
"state",
"optional",
"depth"
],
"type": "object"
},
"type": "array"
},
"playersCanTick": {
"type": "boolean"
},
"progress": {
"additionalProperties": false,
"description": "Required objectives done of those this user can see; optional and failed ones do not count.",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"done",
"total"
],
"type": "object"
},
"rewardTotals": {
"additionalProperties": false,
"properties": {
"currency": {
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "number"
},
"unit": {
"type": "string"
},
"unitLabel": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"xp": {
"type": [
"number",
"null"
]
}
},
"required": [
"currency"
],
"type": "object"
},
"rewards": {
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "number"
},
"entryId": {
"type": "string"
},
"hidden": {
"type": "boolean"
},
"id": {
"type": "string"
},
"kind": {
"description": "currency | xp | item | other.",
"type": "string"
},
"label": {
"type": "string"
},
"ruleEntryId": {
"type": "string"
},
"unit": {
"type": "string"
},
"unitLabel": {
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
"type": "array"
},
"status": {
"description": "Available | Active | Completed | Failed.",
"type": "string"
}
},
"required": [
"status",
"kind",
"playersCanTick"
],
"type": "object"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
},
"typeProperties": {
"additionalProperties": {},
"type": "object"
}
},
"required": [
"entryId",
"title",
"type",
"blocks"
],
"type": "object"
}
},
{
"description": "Get details of a single campaign session.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"sessionId": {
"description": "Session ID.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"sessionId"
],
"type": "object"
},
"name": "get_session",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"attendanceReplies": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"campaignId": {
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"createdByUserId": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"endAt": {
"type": [
"string",
"null"
]
},
"guildId": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"invitedPartyIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"invitedUserIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"startAt": {
"type": "string"
},
"title": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"campaignId",
"title",
"startAt"
],
"type": "object"
}
},
{
"description": "Invite a user to join the guild. Owner/Admin only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
},
"userId": {
"description": "Argo user ID to invite.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId",
"userId"
],
"type": "object"
},
"name": "invite_guild_member",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
},
"userId": {
"type": "string"
}
},
"required": [
"success",
"guildId",
"userId"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_campaigns",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaigns": {
"items": {
"additionalProperties": false,
"properties": {
"accessLevel": {
"type": [
"string",
"null"
]
},
"campaignDescription": {
"type": [
"string",
"null"
]
},
"campaignName": {
"type": "string"
},
"coGameMasterIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"gameMasterId": {
"type": "string"
},
"gameSystemSlug": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ruleSystem": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"gameMasterId",
"campaignName"
],
"type": "object"
},
"type": "array"
},
"idMap": {
"additionalProperties": {
"type": "string"
},
"type": "object"
}
},
"required": [
"campaigns",
"idMap"
],
"type": "object"
}
},
{
"description": "List the assistant GMs (co-GMs) of a campaign.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "list_co_gms",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"displayName": {
"type": [
"string",
"null"
]
},
"userId": {
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the current user's accepted friends.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_friends",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"email": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the members of a guild (id, role, status, invitedAt, joinedAt).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId"
],
"type": "object"
},
"name": "list_guild_members",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"invitedAt": {
"type": [
"string",
"null"
]
},
"joinedAt": {
"type": [
"string",
"null"
]
},
"role": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
},
"userId": {
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_guilds",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guilds": {
"items": {
"additionalProperties": false,
"properties": {
"campaignCount": {
"type": "number"
},
"canAdmin": {
"type": "boolean"
},
"guildId": {
"type": "string"
},
"memberCount": {
"type": "number"
},
"name": {
"type": "string"
},
"role": {
"type": "string"
}
},
"required": [
"guildId",
"name",
"role",
"canAdmin",
"memberCount",
"campaignCount"
],
"type": "object"
},
"type": "array"
},
"idMap": {
"additionalProperties": {
"type": "string"
},
"type": "object"
}
},
"required": [
"guilds",
"idMap"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"entryId": {
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"entryId"
],
"type": "object"
},
"name": "list_mnemon_relationships",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"incoming": {
"items": {
"$ref": "#/properties/outgoing/items"
},
"type": "array"
},
"linked": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"relationshipTypes": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"entryId",
"title",
"type",
"relationshipTypes"
],
"type": "object"
},
"type": "array"
},
"outgoing": {
"items": {
"additionalProperties": false,
"properties": {
"color": {
"type": "string"
},
"direction": {
"type": "string"
},
"kind": {
"type": "string"
},
"label": {
"type": "string"
},
"relationshipId": {
"type": "string"
},
"sourceId": {
"type": "string"
},
"symmetry": {
"type": "string"
},
"targetId": {
"type": "string"
}
},
"required": [
"relationshipId",
"sourceId",
"targetId",
"label"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"outgoing",
"incoming",
"linked"
],
"type": "object"
}
},
{
"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). To find entries by what they CONTAIN, use search_mnemons instead. Returns up to `limit` entries (default 100); when `hasMore` is true, call again with `offset` = the returned `nextOffset` to fetch the next page. 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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "ID of the campaign.",
"minLength": 1,
"type": "string"
},
"limit": {
"description": "Maximum entries to return (default 100).",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Entries to skip. Pass the nextOffset from the previous call to fetch the next page.",
"minimum": 0,
"type": "integer"
},
"title": {
"description": "Case-insensitive substring filter on title.",
"type": "string"
},
"type": {
"description": "Mnemon type filter (NPC, Location, Quest, …).",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "list_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"entries": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"entryId",
"title",
"type"
],
"type": "object"
},
"type": "array"
},
"hasMore": {
"type": "boolean"
},
"idMap": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"nextOffset": {
"type": "number"
}
},
"required": [
"entries",
"idMap",
"hasMore"
],
"type": "object"
}
},
{
"description": "List incoming friend requests awaiting your response.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_received_friend_requests",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List outgoing friend requests that are still pending.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_sent_friend_requests",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List campaign sessions for a given month (defaults to the current month).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"month": {
"description": "Calendar month (1-12). Defaults to current month.",
"maximum": 12,
"minimum": 1,
"type": "integer"
},
"year": {
"description": "Calendar year. Defaults to current year.",
"type": "integer"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "list_sessions",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"attendanceReplies": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"campaignId": {
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"createdByUserId": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"endAt": {
"type": [
"string",
"null"
]
},
"guildId": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"invitedPartyIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"invitedUserIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"startAt": {
"type": "string"
},
"title": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"campaignId",
"title",
"startAt"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Reject an incoming friend request from the given user.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"description": "Argo user ID of the counterparty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"name": "reject_friend_request",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
}
},
{
"description": "Remove a co-GM from a campaign. Owner-only or self-removal.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"userId": {
"description": "User ID of the co-GM to remove.",
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId",
"userId"
],
"type": "object"
},
"name": "remove_co_gm",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
},
"userId": {
"type": "string"
}
},
"required": [
"success",
"campaignId",
"userId"
],
"type": "object"
}
},
{
"description": "Remove a member from the guild. Owner/Admin only.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
},
"userId": {
"description": "User ID of the member to remove.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId",
"userId"
],
"type": "object"
},
"name": "remove_guild_member",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
},
"userId": {
"type": "string"
}
},
"required": [
"success",
"guildId",
"userId"
],
"type": "object"
}
},
{
"description": "Full-text search across mnemon titles, tags, and body content (case-insensitive substring). Prefer this over list_mnemons when looking for entries by what they contain — e.g. \"what do we know about the Red Oracle?\". Each hit reports which fields matched (title/tags/content) and up to 3 body snippets; a snippet's blockId is the same block id get_mnemon returns, so you can target the matched block directly in update_mnemons_content. Only content visible to the current user is searched. Returns at most `limit` hits (default 20, max 50) plus `hasMore`.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "ID of the campaign.",
"minLength": 1,
"type": "string"
},
"limit": {
"description": "Maximum results (default 20).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Text to find (case-insensitive substring) in mnemon titles, tags, and body content.",
"minLength": 2,
"type": "string"
},
"type": {
"description": "Mnemon type filter (NPC, Location, Quest, …).",
"type": "string"
}
},
"required": [
"campaignId",
"query"
],
"type": "object"
},
"name": "search_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"hasMore": {
"type": "boolean"
},
"idMap": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"matchedIn": {
"items": {
"type": "string"
},
"type": "array"
},
"snippets": {
"items": {
"additionalProperties": false,
"properties": {
"blockId": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"entryId",
"title",
"type",
"matchedIn",
"snippets"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results",
"idMap",
"hasMore"
],
"type": "object"
}
},
{
"description": "Send a friend request to another Argo user.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"description": "Argo user ID of the counterparty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"userId"
],
"type": "object"
},
"name": "send_friend_request",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"createdAt": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"receiverId": {
"type": "string"
},
"senderId": {
"type": "string"
},
"status": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"senderId",
"receiverId",
"status"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"description": "Guild ID.",
"minLength": 1,
"type": "string"
},
"role": {
"description": "New role.",
"enum": [
"Owner",
"Admin",
"Member"
],
"type": "string"
},
"userId": {
"description": "Member to change.",
"minLength": 1,
"type": "string"
}
},
"required": [
"guildId",
"userId",
"role"
],
"type": "object"
},
"name": "set_guild_member_role",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"guildId": {
"type": "string"
},
"role": {
"enum": [
"Owner",
"Admin",
"Member"
],
"type": "string"
},
"success": {
"const": true,
"type": "boolean"
},
"userId": {
"type": "string"
}
},
"required": [
"success",
"guildId",
"userId",
"role"
],
"type": "object"
}
},
{
"description": "Tick, fail or reopen one objective of a quest by its id (get_mnemon's quest.objectives[].id), at any depth, without rewriting the quest. A GM sets any state. A player may only tick an objective they can see done, or undo that, and only while the quest's playersCanTick is on. Returns the quest as get_mnemon shows it, its progress recounted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"entryId": {
"description": "The quest: entryId (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"objectiveId": {
"description": "The objective, as get_mnemon's quest.objectives[].id names it.",
"minLength": 1,
"type": "string"
},
"state": {
"description": "open, done or failed.",
"enum": [
"open",
"done",
"failed"
],
"type": "string"
}
},
"required": [
"campaignId",
"entryId",
"objectiveId",
"state"
],
"type": "object"
},
"name": "set_quest_objective_state",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"blocks": {
"items": {
"additionalProperties": false,
"properties": {
"assetId": {
"type": "string"
},
"caption": {
"type": "string"
},
"checked": {
"type": "boolean"
},
"id": {
"type": "string"
},
"language": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"text": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"id",
"type"
],
"type": "object"
},
"type": "array"
},
"entryId": {
"type": "string"
},
"quest": {
"additionalProperties": false,
"description": "Quests only: status, kind, objectives, reward chips and progress as this user may see them.",
"properties": {
"kind": {
"description": "Main | Side | Personal.",
"type": "string"
},
"objectives": {
"items": {
"additionalProperties": false,
"properties": {
"depth": {
"description": "0 for a top-level objective.",
"type": "number"
},
"hidden": {
"description": "GM reads only: true when players cannot see it.",
"type": "boolean"
},
"id": {
"description": "Name it in set_quest_objective_state or update_quest_mnemons.",
"type": "string"
},
"optional": {
"type": "boolean"
},
"parentId": {
"type": "string"
},
"state": {
"description": "open | done | failed.",
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"text",
"state",
"optional",
"depth"
],
"type": "object"
},
"type": "array"
},
"playersCanTick": {
"type": "boolean"
},
"progress": {
"additionalProperties": false,
"description": "Required objectives done of those this user can see; optional and failed ones do not count.",
"properties": {
"done": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"done",
"total"
],
"type": "object"
},
"rewardTotals": {
"additionalProperties": false,
"properties": {
"currency": {
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "number"
},
"unit": {
"type": "string"
},
"unitLabel": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"xp": {
"type": [
"number",
"null"
]
}
},
"required": [
"currency"
],
"type": "object"
},
"rewards": {
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "number"
},
"entryId": {
"type": "string"
},
"hidden": {
"type": "boolean"
},
"id": {
"type": "string"
},
"kind": {
"description": "currency | xp | item | other.",
"type": "string"
},
"label": {
"type": "string"
},
"ruleEntryId": {
"type": "string"
},
"unit": {
"type": "string"
},
"unitLabel": {
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
"type": "array"
},
"status": {
"description": "Available | Active | Completed | Failed.",
"type": "string"
}
},
"required": [
"status",
"kind",
"playersCanTick"
],
"type": "object"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
},
"typeProperties": {
"additionalProperties": {},
"type": "object"
}
},
"required": [
"entryId",
"title",
"type",
"blocks"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Archive mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"relatedEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_archive_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignDescription": {
"description": "New description (setting, tone, premise). Omit to leave unchanged. Pass an empty string to clear the existing description.",
"maxLength": 5000,
"type": "string"
},
"campaignId": {
"description": "ID of the campaign to update.",
"minLength": 1,
"type": "string"
},
"campaignName": {
"description": "New display name. Omit to leave unchanged.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "update_campaign",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignDescription": {
"type": [
"string",
"null"
]
},
"campaignName": {
"type": "string"
},
"coGameMasterIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"gameMasterId": {
"type": "string"
},
"gameSystemSlug": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ruleSystem": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"gameMasterId",
"campaignName"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Custom-typed mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"customType": {
"type": "string"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_custom_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Journal mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"consequenceEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"date": {
"type": "string"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"involvedCharacterIds": {
"items": {
"type": "string"
},
"type": "array"
},
"involvedLocationEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"involvedNpcEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"outcome": {
"type": "string"
},
"sessionNumber": {
"type": "integer"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_journal_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Location mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"levelId": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_location_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Lore mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"relatedEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_lore_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Edit the body content 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. Op content is authored as Markdown (headings, lists, quotes, code fences, bold/italic, links) — do NOT send HTML. Mentions: @[label](mnemon:<entryId>). Images:  — upload the asset first; inline base64 / data: URLs are not accepted. Node addressing: get body-node ids from get_mnemon, then target them in replace/remove/insertAfter. A single op's Markdown may produce several nodes; new nodes get fresh server-generated ids (replace keeps the original id on the first new node). On a bad op (missing blockId, unknown op, etc.) the whole entry's batch is rejected with the failedOpIndex; no partial mutation per entry. See describe_mnemon_types.blockOps for the full vocabulary.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"ops": {
"description": "Ordered ops to apply atomically per entry.",
"items": {
"additionalProperties": false,
"description": "A single body mutation, keyed by node id. See describe_mnemon_types.blockOps.",
"properties": {
"afterBlockId": {
"description": "Required for insertAfter: the body node id the new content follows.",
"type": "string"
},
"blockId": {
"description": "Required for replace and remove: a body node id from get_mnemon.",
"type": "string"
},
"markdown": {
"description": "Markdown content for append / insertAfter / replace. May produce several body nodes. Mentions: @[label](mnemon:<entryId>); images: .",
"type": "string"
},
"op": {
"description": "The op to apply.",
"enum": [
"append",
"insertAfter",
"replace",
"remove"
],
"type": "string"
}
},
"required": [
"op"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"entryId",
"ops"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_mnemons_content",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"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[].",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"affiliationEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"memberNpcEntryIds": {
"items": {
"type": "string"
},
"type": "array"
},
"npcType": {
"enum": [
"FACTION",
"INDIVIDUAL"
],
"type": "string"
},
"primaryLocationEntryId": {
"type": "string"
},
"relationshipIds": {
"items": {
"type": "string"
},
"type": "array"
},
"sheetId": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_npc_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of Player mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"characterId": {
"type": "string"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"parentEntryId": {
"type": "string"
},
"partyId": {
"type": "string"
},
"playerKind": {
"enum": [
"PARTY",
"CHARACTER",
"NOTES"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_player_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Update Quest mnemons. A field left out is left as it is: status, kind, playersCanTick, hook, the giverId / locationId / parentQuestId links (an empty string removes one), and objectives, rewards, background or gmNotes, each of which replaces its part of the quest and keeps the rest. Name existing objectives and chips by the ids get_mnemon's `quest` returns so they keep what the GM wrote under them. To tick one objective, use set_quest_objective_state.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"background": {
"description": "Replaces the Background section, in Markdown.",
"type": "string"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"expiresAt": {
"description": "Retired quest board field (ISO-8601).",
"type": "string"
},
"giverId": {
"description": "Who gives the quest: an NPC's entryId or exact title (its Quest giver link). On update an empty string removes it.",
"type": "string"
},
"gmNotes": {
"description": "Replaces the GM-only notes, in Markdown.",
"type": "string"
},
"hook": {
"description": "The one line players see under the title in the quest log. An empty string clears it.",
"type": "string"
},
"issuerNpcEntryId": {
"description": "Retired quest board field: send giverId.",
"type": "string"
},
"issuerText": {
"description": "Retired quest board field: write it into background.",
"type": "string"
},
"kind": {
"description": "Main | Side | Personal. Reads as Side when unset.",
"enum": [
"Main",
"Side",
"Personal"
],
"type": "string"
},
"locationId": {
"description": "Where the quest is given or set: a Location's entryId or exact title. On update an empty string removes it.",
"type": "string"
},
"objectives": {
"description": "Replaces the objective list. Name an existing objective by id to keep it and what the GM wrote under it; one left out is removed. To tick one objective, use set_quest_objective_state instead.",
"items": {
"additionalProperties": false,
"properties": {
"children": {
"description": "Its sub-objectives, in order. Omitted keeps the ones it has; an empty list removes them.",
"items": {
"additionalProperties": false,
"properties": {
"hidden": {
"description": "true hides it from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The objective to rewrite, as get_mnemon's quest.objectives[].id names it. Omit for a new objective.",
"type": "string"
},
"optional": {
"description": "An optional objective does not count toward the quest's progress. Defaults to false.",
"type": "boolean"
},
"state": {
"description": "open (the default), done or failed.",
"enum": [
"open",
"done",
"failed"
],
"type": "string"
},
"text": {
"description": "The objective, one line of Markdown. Mentions: @[label](mnemon:<entryId>).",
"minLength": 1,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"hidden": {
"description": "true hides it from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The objective to rewrite, as get_mnemon's quest.objectives[].id names it. Omit for a new objective.",
"type": "string"
},
"optional": {
"description": "An optional objective does not count toward the quest's progress. Defaults to false.",
"type": "boolean"
},
"state": {
"description": "open (the default), done or failed.",
"enum": [
"open",
"done",
"failed"
],
"type": "string"
},
"text": {
"description": "The objective, one line of Markdown. Mentions: @[label](mnemon:<entryId>).",
"minLength": 1,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"parentQuestId": {
"description": "The quest this one belongs to: a Quest's entryId or exact title. On update an empty string removes it.",
"type": "string"
},
"playersCanTick": {
"description": "Whether players may tick the objectives they can see. Off by default.",
"type": "boolean"
},
"questStatus": {
"description": "Retired: send status.",
"type": "string"
},
"relatedLocationEntryIds": {
"description": "Locations the quest involves (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"relatedNpcEntryIds": {
"description": "NPCs the quest involves (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"repeatable": {
"description": "Retired quest board field.",
"type": "boolean"
},
"rewards": {
"description": "Replaces the reward chips; an empty list clears them. Name an existing chip by id to keep it.",
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"description": "How many: coins, experience points, a stack.",
"type": "number"
},
"entryId": {
"description": "item chips: the mnemon entry it links to (entryId or exact title). Not with ruleEntryId.",
"type": "string"
},
"hidden": {
"description": "true hides the chip from players, false shows it; omitted keeps what it has (a new one is shown).",
"type": "boolean"
},
"id": {
"description": "The chip to rewrite, as get_mnemon's quest.rewards[].id names it. Omit for a new chip.",
"type": "string"
},
"itemId": {
"description": "Retired reward row: a free-text item reference.",
"type": "string"
},
"kind": {
"description": "currency | xp | item | other. Makes this a reward chip — send it on every reward.",
"enum": [
"currency",
"xp",
"item",
"other"
],
"type": "string"
},
"label": {
"description": "What the chip says: an item's name, a favour, a title.",
"type": "string"
},
"linkedStepIds": {
"description": "Retired reward row: the stepIds or subquest entry ids that unlock it.",
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"description": "Retired reward row: notes.",
"type": "string"
},
"rewardType": {
"description": "Retired reward row, without kind: Gold | Item | XP | Reputation …",
"type": "string"
},
"ruleEntryId": {
"description": "item chips: the rules-library entry it links to. Not with entryId.",
"type": "string"
},
"unit": {
"description": "currency chips: the coin, as the campaign's setting names it (e.g. coin.gp), or free text such as 'gold'.",
"type": "string"
},
"unitLabel": {
"description": "How the coin reads, e.g. 'Gold piece'.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"status": {
"description": "Available | Active | Completed | Failed. Reads as Available when unset.",
"enum": [
"Available",
"Active",
"Completed",
"Failed"
],
"type": "string"
},
"steps": {
"description": "Retired: the old quest board's steps, for quests the migration has not converted. Send objectives.",
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"notes": {
"description": "Free-text bullet notes for the step.",
"items": {
"type": "string"
},
"type": "array"
},
"status": {
"description": "Defaults to 'Available' when omitted. Unknown values are coerced server-side.",
"enum": [
"Hidden",
"Available",
"Active",
"Completed",
"Failed",
"TurnedIn",
"Abandoned",
"Expired",
"OnHold"
],
"type": "string"
},
"stepId": {
"description": "Optional. Server generates a fresh UUID when blank. Provide an existing stepId to reuse linkedStepIds.",
"type": "string"
},
"targetLocationEntryIds": {
"description": "Locations involved in this step.",
"items": {
"type": "string"
},
"type": "array"
},
"targetNpcEntryIds": {
"description": "NPCs involved in this step (entryIds or titles).",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Short label for the step, e.g. 'Talk to the innkeeper'.",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"type": "array"
},
"subQuestEntryIds": {
"description": "This quest's subquests (entryIds or titles). Prefer parentQuestId on each subquest.",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_quest_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Reschedule a campaign session or edit its title/description. All fields optional. Owner-only on the backend.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "Campaign ID.",
"minLength": 1,
"type": "string"
},
"description": {
"type": "string"
},
"endAt": {
"description": "ISO-8601 instant.",
"type": "string"
},
"sessionId": {
"description": "Session ID.",
"minLength": 1,
"type": "string"
},
"startAt": {
"description": "ISO-8601 instant.",
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"campaignId",
"sessionId"
],
"type": "object"
},
"name": "update_session",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"attendanceReplies": {
"anyOf": [
{
"additionalProperties": {},
"type": "object"
},
{
"type": "null"
}
]
},
"campaignId": {
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"createdByUserId": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"endAt": {
"type": [
"string",
"null"
]
},
"guildId": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"invitedPartyIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"invitedUserIds": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"startAt": {
"type": "string"
},
"title": {
"type": "string"
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"campaignId",
"title",
"startAt"
],
"type": "object"
}
},
{
"description": "Update typed/meta fields of SessionSummary mnemons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"minLength": 1,
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"combats": {
"description": "Combat encounters that took place this session.",
"items": {
"additionalProperties": false,
"properties": {
"description": {
"description": "Who fought whom and where, in one sentence.",
"minLength": 1,
"type": "string"
},
"outcome": {
"description": "How it resolved, e.g. \"party victorious, no casualties\".",
"type": "string"
}
},
"required": [
"description"
],
"type": "object"
},
"type": "array"
},
"date": {
"type": "string"
},
"detailedSummary": {
"description": "Full narrative summary, 3-5 paragraphs.",
"type": "string"
},
"entryId": {
"description": "Mnemon entry id (hex) or exact title.",
"minLength": 1,
"type": "string"
},
"loot": {
"description": "Items, treasure, or rewards acquired.",
"items": {
"type": "string"
},
"type": "array"
},
"majorEvents": {
"description": "Significant story beats, in chronological order.",
"items": {
"type": "string"
},
"type": "array"
},
"npcsMentioned": {
"description": "NPCs that appeared or were referenced. This is descriptive only — to link one to an existing NPC mnemon, call create_mnemon_relationship with SESSION_ATTENDEE_NPC.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Name as referenced in the session, e.g. \"Captain Mira\".",
"minLength": 1,
"type": "string"
},
"role": {
"description": "Role played this session, e.g. \"quest-giver\", \"rescued captive\".",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"oneSentenceSummary": {
"description": "Single-sentence TL;DR of what happened.",
"type": "string"
},
"openThreads": {
"description": "Unresolved threads and cliffhangers as of session end.",
"items": {
"type": "string"
},
"type": "array"
},
"partyDecisions": {
"description": "Meaningful choices that will shape future sessions.",
"items": {
"type": "string"
},
"type": "array"
},
"partyEndState": {
"additionalProperties": {
"type": "string"
},
"description": "Character display name -> short end-of-session status line.",
"type": "object"
},
"previouslyOn": {
"description": "Where each player ended — read aloud at the top of the next session.",
"type": "string"
},
"sessionNumber": {
"type": "integer"
},
"suggestedTitle": {
"description": "Short evocative title for the session, like a TV episode title.",
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"visibility": {
"enum": [
"HIDDEN",
"INTERNAL",
"PUBLIC"
],
"type": "string"
}
},
"required": [
"entryId"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"campaignId",
"items"
],
"type": "object"
},
"name": "update_session_summary_mnemons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"entryId": {
"type": "string"
},
"error": {
"type": "string"
},
"failedOpIndex": {
"type": "number"
},
"index": {
"type": "number"
},
"success": {
"type": "boolean"
},
"title": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"index",
"success"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:6f4eff7c1dc3f54922fa34fe1267e79d3be5c24f9a3cdeae7d571abafc37bf42 | sha256sum