Model Context Protocol (MCP) tool for Pathfinder 2e providing search, item lookup, treasure generation, crafting calculations, encounter building, creature/hazard management, and story generation.
The Pathfinder MCP server defines 16 tools with consistent naming (verb_noun pattern), reasonable descriptions (100-250 chars), and structured JSON schemas. However, several critical gaps prevent a higher score: (1) missing output schemas documented anywhere, the code shows no explicit return type documentation for any tool; (2) no error handling guidance in tool descriptions (e.g., 'if not found, try searching'); (3) vague enums in several tools (creatureTypes, environment lack specific values); (4) parameter descriptions lack constraints and examples (e.g., 'limit' has no stated bounds); (5) tools like generateSecrets and generateSceneIdeas have entirely optional inputs with no defaults stated. The crafting tool implementation (src/mcp/crafting/crafting-tool.ts) shows good internal error handling but this is not reflected in the tool definition. Overall, the tools are functional and naming is clear, but descriptions are utilitarian rather than LLM-optimized, and response schemas are entirely undocumented.
Build a balanced PF2e encounter. Suggests creatures from Archives of Nethys based on party level and desired difficulty. Returns multiple encounter options with XP calculations.
Calculate total XP and difficulty for a custom encounter with specific creatures and hazards.
Generate scene ideas and encounter setups for Pathfinder 2e adventures
Generate narrative secrets and plot hooks for Pathfinder 2e adventures
Generate appropriate treasure for a Pathfinder 2e party use this to determine the treasure budget for a given party level and size. and then use other search and get tools to find specific items within that budget.
Get all items from a specific category in the Pathfinder Archives of Nethys
Output schemas not documented. No tool description specifies what fields are returned or their types. LLMs cannot plan downstream calls or extract required data without knowing response structure.
generateSecrets and generateSceneIdeas have all optional parameters with no documented defaults. LLMs cannot know what happens if all are omitted (what count? what theme? are these deterministic?). Description states purpose but lacks usage guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Get all creatures in a family (goblin, dragon, demon, etc.). Perfect for themed dungeons with escalating threats.
Get detailed information about a specific Pathfinder deity including domains, favored weapon, and lore.
Get all hazards of a specific level. Use for environment design and encounter balancing.
Get all items of a specific level from the Archives of Nethys. Use this to find level-appropriate equipment, especially after determining treasure budget.
Calculate crafting requirements for a Pathfinder 2e item
Get detailed information about a specific Pathfinder item by name and category
Find creatures within a level range. Great for building encounters at specific difficulty.
Find creatures by their traits (undead, dragon, elemental, etc.). Useful for themed encounters.
Search for traps, environmental hazards, and haunts. Filter by type and complexity.
Search the Pathfinder Archives of Nethys for information about a specific category
getAllPathfinderItems accepts limit and offset but no documented bounds or pagination hints. LLMs may request 10000 items. Description should state 'limit: 1-100 (default 20)' and explain how to use offset for pagination.
buildEncounter has vague enum values: creatureTypes (filter by creature types) and environment (theme) have no documented valid values. LLMs will hallucinate creature type names. Enum should list: undead, dragon, humanoid, beast, etc.
No error guidance in any tool description. If a category or item name is invalid, descriptions don't hint at recovery (e.g., 'try searchPathfinder first' or 'invalid category, valid ones are: weapon, armor, equipment, shield, alchemical, magical'). See getPathfinderCraftingRequirements which documents a category enum but others don't.
searchCreaturesByLevel, searchCreaturesByTrait, searchHazards all have optional 'limit' parameters with no bounds. Should document '1-100 (default 20)' to prevent runaway requests.
generateTreasure description states 'determine treasure budget' but omits what format the budget is returned in (gold pieces? item levels?). LLMs will not know how to use the output for subsequent calls to getItemsByLevel.
getPathfinderCraftingRequirements description mentions enum values for category ('weapon, armor, equipment, shield, alchemical, magical'), good. But proficiency enum ('untrained, trained, expert, master, legendary') is not listed in description, forcing LLMs to infer from schema. Be explicit in descriptions.