{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_rh7djesvm33d","handle":"praetorium","url":"https://wellknown.network/agents/praetorium","links":{"self":"https://wellknown.network/agents/praetorium/record.json","html":"https://wellknown.network/agents/praetorium","markdown":"https://wellknown.network/agents/praetorium/record.md","api":"https://wellknown.network/api/v1/agents/praetorium","status":"https://wellknown.network/api/v1/agents/praetorium/status","claim":"https://wellknown.network/agents/praetorium/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/praetorium/claim.json","badge":"https://wellknown.network/agents/praetorium/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/praetorium/history","tools":"https://wellknown.network/api/v1/agents/praetorium/tools"},"ard":{"identifier":"urn:air:praetorium.gg:server:praetorium","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Praetorium","summary":"Public Warhammer 40K rules, datasheets, points and missions; sign in to manage rosters and battles.","description":"Public Warhammer 40K rules, datasheets, points and missions; sign in to manage rosters and battles.","publisher":{"name":"richardsolomou","url":null},"homepage":"https://praetorium.gg","repository":"https://github.com/richardsolomou/praetorium.gg","version":"1.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://praetorium.gg/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-29T10:33:25.551911Z","publishedAt":"2026-09-29T10:33:25.551911Z","registryName":"io.github.richardsolomou/praetorium"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.554,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.525,"provenance":"derived"}],"categories":["content","dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-09T20:30:53.136Z","lastProbedAt":"2026-10-09T20:30:53.136Z","statusComputedAt":"2026-10-09T20:32:05.383Z","reliability30d":{"probes":38,"successRate":1,"p50Ms":79,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":38,"ok":38,"authBoundaryOk":0,"serviceOk":38,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T20:30:53.136Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":88,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"toolCount":15,"toolsHash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:31:51.595Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":95,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"toolCount":15,"toolsHash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:26:29.350Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":68,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"toolCount":15,"toolsHash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:25:09.170Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":73,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"toolCount":15,"toolsHash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:27:39.098Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":84,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"toolCount":15,"toolsHash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:25:43.226Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":84,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"}],"toolCount":14,"toolsHash":"48b8957735eaf530c0d67d3d9f78db74494c742a37e110099b38991a80e6ffee","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T05:22:07.295Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":136,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"}],"toolCount":14,"toolsHash":"48b8957735eaf530c0d67d3d9f78db74494c742a37e110099b38991a80e6ffee","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T23:25:17.502Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":68,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"}],"toolCount":14,"toolsHash":"48b8957735eaf530c0d67d3d9f78db74494c742a37e110099b38991a80e6ffee","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T16:29:21.314Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":66,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"}],"toolCount":14,"toolsHash":"48b8957735eaf530c0d67d3d9f78db74494c742a37e110099b38991a80e6ffee","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T10:49:13.698Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":69,"error":null,"detail":{"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"}],"toolCount":14,"toolsHash":"48b8957735eaf530c0d67d3d9f78db74494c742a37e110099b38991a80e6ffee","serverName":"praetorium-reference","capabilities":["tools","resources","prompts"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_my_rosters","description":"Lists the rosters saved to the signed-in Praetorium account. Requires mcp:read."},{"name":"get_my_roster","description":"Returns the saved choices for one roster owned by the signed-in player. Requires mcp:read."},{"name":"list_my_battles","description":"Lists up to 25 battles with a cursor for the next page. Requires mcp:read."},{"name":"get_my_battle","description":"Returns the current seated view of a battle for the signed-in player. Requires mcp:read."},{"name":"save_roster","description":"Saves a complete roster. Pass its id to edit an owned roster; omit id to create one. Requires mcp:write."},{"name":"set_roster_visibility","description":"Changes the visibility of an owned roster. Requires mcp:write."},{"name":"create_battle","description":"Creates a battle with named player seats, using the same rules as the site. Requires mcp:write."},{"name":"submit_battle_action","description":"Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write."},{"name":"search_reference","description":"Searches the verified mission, rules, detachment, and datasheet text used by Praetorium. Returns bounded excerpts with canonical URLs, source revisions, and att"},{"name":"get_reference","description":"Reads the complete bounded document returned by search_reference, with its source location, revisions, and attribution."},{"name":"get_reference_record","description":"Returns the source-faithful structured record behind a search result, including mission cards, deployments, terrain geometry, detachments, and datasheets."},{"name":"list_factions","description":"Lists the factions that can be used to narrow reference searches."},{"name":"list_reference","description":"Discovers available factions, mission packs, rule documents, reference kinds, and active source revisions."},{"name":"list_units","description":"Returns every pickable unit in one bounded response with unit-size costs, composition, attachment relationships, roster limits, roles, keywords, and links. Incl"},{"name":"simulate_combat","description":"Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and sh"}],"package":null,"toolSurface":{"id":"ts_snqn8r7gsxap","endpointId":"ep_nrbne5jf6688","hash":"cce2817323d7734911b2705808124dae4fa7d19db6c8b3a9e8cc4b5ab17bd0cc","toolCount":15,"serverName":"praetorium-reference","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-08T18:27:39.097Z","lastSeenAt":"2026-10-09T20:30:53.157Z","observations":5,"toolNames":["list_my_rosters","get_my_roster","list_my_battles","get_my_battle","save_roster","set_roster_visibility","create_battle","submit_battle_action","search_reference","get_reference","get_reference_record","list_factions","list_reference","list_units","simulate_combat"],"distinctSurfaces":7},"endpointFacts":[{"id":"ep_nrbne5jf6688","url":"https://praetorium.gg/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-04T10:26:46.767Z","auth":{"observedAt":"2026-10-04T10:26:46.902Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://praetorium.gg/.well-known/oauth-protected-resource/mcp","resource":"https://praetorium.gg/mcp","authorizationServers":["https://praetorium.gg/api/auth"],"scopesSupported":["mcp:read","mcp:write"]},"authorizationServer":{"url":"https://praetorium.gg/.well-known/oauth-authorization-server/api/auth","issuer":"https://praetorium.gg/api/auth","grantTypesSupported":["authorization_code","client_credentials","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_basic","client_secret_post","private_key_jwt"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":["EdDSA","ES256","ES512","PS256","RS256"],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":true,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-04T10:26:46.913Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"praetorium.gg","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-08T01:14:37.000Z","validTo":"2026-11-06T02:05:41.000Z","daysToExpiry":27,"sanCount":2,"fingerprint256":"DF:62:16:E6:33:19:C4:B3:DC:2C:9D:F1:2D:4A:DC:88:68:9A:79:1D:90:B2:6A:AB:93:7A:C9:21:3C:11:B6:FB"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.richardsolomou/praetorium","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.richardsolomou%2Fpraetorium","firstSeenAt":"2026-09-29T16:21:45.283Z","fetchedAt":"2026-10-08T03:20:24.988Z","normalizedAt":"2026-10-08T03:20:24.988Z"}]},"firstSeenAt":"2026-09-29T16:21:45.283Z","updatedAt":"2026-10-09T20:33:08.595Z"}