Skip to main content
Glama
cornndawwg

poe2-build-planner

by cornndawwg

PoE2 Build Planner — Claude Tool

A free Claude Desktop Extension that helps Path of Exile 2 players turn a play fantasy into a playable build. Tell your Claude what you want to play, and it uses this tool to work out the class, ascendancy, skills and supports, leveling path, passive tree, stat and jewel priorities, and whether the build can handle T15/T16 juiced maps. It then writes the plan into the game's Build Planner.

Built for casual players on a budget, not meta-chasers.

Website: poe2-buildguide-tool.com

Status: early development. See docs/research-brief.md for the design and build order.

How it works

  • Runs locally on your PC as an MCP server inside the Claude desktop app.

  • Downloads public game data on first run: GGG's passive tree export, RePoE and Path of Building data. Nothing from the game data is shipped with this tool.

  • Uses Path of Building's calculation engine for damage and defence numbers (bundled; Windows only for now).

  • Viability verdicts are estimates, not guarantees.

Related MCP server: poe2-mcp-server

Install (players)

  1. Download poe2-build-planner-<version>.mcpb from the Releases page.

  2. Double-click it (or drag it into Claude Desktop → Settings → Extensions) and confirm the install.

  3. Start a new chat and describe the build you want to play.

Works in the Claude desktop app on Windows and macOS. The first start downloads about 30 MB of public game data.

Try it locally (developers)

Needs Node 20+.

npm install
npm run build
npm run smoke        # starts the server and calls every tool
npm run package      # builds release/poe2-build-planner-<version>.mcpb

Then add it to Claude Desktop's config (%APPDATA%\Claude\claude_desktop_config.json on Windows) and restart Claude Desktop:

{
  "mcpServers": {
    "poe2-build-planner": {
      "command": "node",
      "args": ["C:/path/to/PoE2-Build-Planner-Claude-Tool/dist/server.js"]
    }
  }
}

The first start downloads about 30 MB of game data to %APPDATA%\poe2-build-finder\data.

Tools so far

Tool

What it does

build_intake

The questions Claude asks first: what the build is for (campaign, mapping, bossing), how far to push (up to pinnacle bosses), one button or several, budget, Hardcore

list_classes

Classes and released ascendancies

search_skills

Skills by tags/types/weapon, with where each comes from

gem_details

Everything about one gem: tags, skill types, description, level 1/20 text, Spirit cost, recommended supports

compatible_supports

Supports that work with a skill, ranked with reasons

find_passives

Notables/keystones/ascendancy notables that scale the build, with drawback flags

plan_passive_tree

Path to the chosen passives in priority order, with the level to take each point; prefers small passives matching the build on equal routes, and knows ascendancy-gated passives (e.g. Oracle-only) and when their trial comes

leveling_phases

League-start phases (acts, interludes, maps) with levels, checkpoints and quest rewards

check_build

Checks a plan at a character level: skill availability, attribute and Spirit needs, passive budget

evaluate_build

Path of Building numbers (damage, kill times, hits survived, resists) and a viability verdict at a level, checked honestly against the player's goal (on track / rough / not realistic yet, with options), with setup gaps (unused Spirit, no boss skill), budget/mid/high gear, anoints, instills, runes, free-Spirit amulet skills, flasks and weapon swap (Windows)

optimize_build

Tries support swaps, notables, Spirit skills and anoints in Path of Building and keeps what adds damage without losing survivability

compare_builds

Two to four variants calculated the same way, side by side, with which is best for clearing, bossing and survival

suggest_extras

Spirit skills that fit and cost (and which a Lament/Portent/Absent Amulet grants free), jewels, flasks and charms (unique ones too), amulet anoints and helmet instills (Raven-Touched Shard), runes, soul cores and idols per slot, with costs

item_prices

Live prices from the official Currency Exchange for currency, runes, soul cores, Liquid Emotions, omens and other stackables

trade_links

Pre-filled trade site searches for rares (slot + mods + level) and uniques, opened in the player's own browser

stat_priorities

Offensive mods to look for per gear slot and on jewels, plus a defence baseline

find_uniques

Uniques that fit the build, with current mods, level and where they drop (no prices — see below)

create_build_guide

Writes a Maxroll-style guide page (phases, checks, quest rewards, highlighted passive tree, a Build Planner file per phase) and opens it

list_builds / remove_builds

List Build Planner files and guides, and move superseded ones out of the way (never deleted)

export_build

Writes the build into the game's Build Planner (passives with levels, skills and supports, gear hints)

data_status

Cached game data info

Path of Building calculations run inside the extension on Windows (see docs/engine.md); they use assumed gear (budget, mid or high, matched to the player's budget in the end game, with resistances capped as players do in maps) and heuristic verdict bands, so treat them as estimates.

Prices: stackable items (currency, runes, soul cores, Liquid Emotions, omens…) come from GGG's public Currency Exchange data. Uniques and rares aren't priced; trade_links gives trade site searches the player opens themselves (the tool never calls the trade site). For unique and rare prices, the player checks the link — or, if their Claude chat has a browser connection such as Claude in Chrome, Claude offers to look up a few prices in their own browser (only when they say yes). The tool itself has no price backend.

Not calculated yet: timeless jewels (Path of Building for PoE2 has no seed data for them) and Headhunter's stolen monster mods.

examples/Example - Fireball Infernalist.build is a sample export. Copy it into Documents/My Games/Path of Exile 2/BuildPlanner to check that the game loads it.

Credits

License

Bundled third-party software: see THIRD_PARTY_NOTICES.md.

MIT — see LICENSE. Game data is downloaded at runtime and belongs to Grinding Gear Games.

Donations

This tool is and will stay free. Donations support development and keeping it up to date with patches. Everyone gets the same tool.


This product isn't affiliated with or endorsed by Grinding Gear Games in any way.

Available Tools

22 tools
build_intakeQuestions to ask before planning a buildA
Read-only

The questions to ask the player before planning anything, in one short message: their fantasy, league start or existing character, what the build is for (campaign, fast mapping, bossing, balanced), how far they realistically want to push (campaign … pinnacle bosses), how many buttons they want to press, budget, softcore/hardcore, and dislikes. Skip anything they already said. Pass the answers as goals to evaluate_build, compare_builds and optimize_build.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already signals a safe read; the description adds that the return value is 'one short message' of questions and that the answers must be forwarded as `goals`, which is genuinely useful behavioral context. It does not describe what happens if the player refuses or partial answers, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the deliverable, then the enumeration of question topics, then the routing instruction. The list is long but every item is a distinct intake dimension, so nothing is filler; it is slightly run-on but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description must explain what comes back — and it does ('one short message' of questions) plus how to use the result. It is complete for a prompt-template tool, though the exact structure of the returned message is not spelled out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no burden and the baseline is 4. The only parameter mentioned (`goals`) belongs to the downstream tools, not this one, so no additional input semantics are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific deliverable — the set of questions to ask the player before planning — with a scope qualifier ('before planning anything') that no sibling shares. An agent can distinguish this intake/templating tool from evaluate_build, plan_passive_tree and the other planning tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It places the tool in the workflow precisely ('before planning anything'), tells the agent to skip already-answered questions, and routes the collected answers downstream to evaluate_build, compare_builds and optimize_build via the `goals` parameter. It lacks an explicit when-not-use clause, keeping it just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_buildCheck a build at a character levelA
Read-only

Rule-based checks for a planned build at a given character level: which skills are usable yet (and from what level), gem attribute requirements vs Strength/Dexterity/Intelligence from the class, passives and gear (and how to spend "+5 to any Attribute" passives), weapon attribute requirements (give weapons; Giant's Blood tripling is applied), Spirit for persistent skills vs Spirit from quests, passives and gear, the passive point budget, and skill/support rules (the same rules export_build enforces). Missing connecting passives are filled in and counted. Run it for each leveling phase (e.g. levels 12, 28, 45, 65, 90). For damage and survival numbers use evaluate_build.

ParametersJSON Schema
NameRequiredDescriptionDefault
classYesClass or ascendancy name
skillsYes
weaponsNoWeapons for their attribute requirements: item classes ("Two Hand Mace", "Shield") or exact base names
passivesYesMain-tree passives taken by this level (key, id or exact name)
ascendancyNo
gearSpiritNoSpirit from gear, if known (e.g. a sceptre)
characterLevelYes
gearAttributesNoAttributes expected from gear, if known
ascendancyPassivesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description usefully adds behavior the schema doesn't: missing connecting passives are auto-filled and counted, Giant's Blood tripling is applied to weapon requirements, and the check mirrors export_build's enforcement rules. It stops short of describing what the pass/fail result looks like or how violations are surfaced, which matters since there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then uses the remaining sentences for actionable instructions (leveling-phase cadence, sibling routing). It is dense with enumerated check categories but nearly every clause maps to a distinct behavior, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter nested tool with no output schema, the description covers the check domains, a behavioral gotcha (auto-filled passives), and where to go for other needs. The main gap is that it never describes the shape or nature of the check results, which is the one thing an agent must guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, so the description has to compensate, and it does for several params: it tells the agent to supply `weapons` and why (attribute requirements with Giant's Blood tripling), and clarifies how passives interact with '+5 to any Attribute' allocation. It leaves ascendancy/ascendancyPassives and gearAttributes largely to the schema, but adds real value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('rule-based checks') and resource ('a planned build at a given character level') and then enumerates the actual check categories (skill usability, gem/weapon attribute requirements, Spirit, passive budget, skill/support rules). This clearly separates it from evaluate_build, which is named as the different tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit invocation guidance ('Run it for each leveling phase (e.g. levels 12, 28, 45, 65, 90)') and routes the agent to the alternative for a different need ('For damage and survival numbers use evaluate_build'). It also ties scope to a sibling by noting these are 'the same rules export_build enforces'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_buildsCompare build options side by sideA
Read-only

Calculate 2–4 variants of a build the same way and compare them: e.g. two-handed vs one-handed + shield Titan, two ascendancies for the same theme, or a build with and without a key unique. Each variant is a full build (same fields as evaluate_build) with a label; usually they share most fields and differ in weapons, items, passives, skills or ascendancy. Returns damage, kill times, survival, life/ES, resistances, attribute shortfalls and verdicts per variant, the change against the first variant, and which is best for clearing, bossing and survival. Windows only for now.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantsYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description must carry the rest; it discloses the return contents (damage, kill times, survival, life/ES, resistances, attribute shortfalls, per-variant verdicts, delta vs first variant, best-for categories) and the platform constraint ('Windows only for now'). No output schema exists, and these disclosures fill that gap well, though depth/limits of each metric are not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and constraint, then examples, then return summary, then platform note. Four sentences with little waste, though the examples sentence is dense and slightly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a very deep nested schema and no output schema, the description covers the essentials: what to pass (2–4 full-build variants with labels), what differing fields typically are, what comes back, and the OS limitation. An agent can call it correctly without opening the schema, though edge behavior (e.g. what if variants share no fields) is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is a variants array whose structure the description explains: each variant is a full build, carries a label, and variants 'usually share most fields and differ in weapons, items, passives, skills or ascendancy'. It also delegates field detail to evaluate_build, which is a useful pointer given the deep nested schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (calculate and compare), specific resource (2–4 build variants), and explicit differentiation from the sibling evaluate_build by stating variants use 'the same fields as evaluate_build'. The three concrete examples (two-handed vs one-handed, two ascendancies, with/without a unique) make the tool's identity unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear contexts for use via examples and the 2–4 variant constraint, and implicitly routes agents to evaluate_build for single builds. It stops short of an explicit 'when not to use this' or naming which conditions favor it over siblings like optimize_build or check_build, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compatible_supportsCompatible supportsA
Read-only

Support gems that can support a skill, ranked: the game's own recommendations first, then tag matches. Each result explains why. Lineage supports are rare drops (expensive for a budget build).

ParametersJSON Schema
NameRequiredDescriptionDefault
gemIdYesThe skill's exact name (e.g. "Fireball") or its gemId from the search_skills tool
limitNo
preferNoExtra tags to favour, e.g. ["ignite"]
includeLineageNoInclude lineage supports (default true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint in annotations, the description adds meaningful behavior: results are ranked by the game's own recommendations first then tag matches, each result explains its rationale, and lineage supports are flagged as rare/expensive drops. That's real value beyond the annotation, though it doesn't describe output shape or result limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core function followed by ranking behavior and one caveat. No filler or repetition of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description notes each result 'explains why,' partially compensating. For a read-only lookup with a 4-param schema, an agent has enough to call it correctly; only return-format detail is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and documents gemId, prefer, and includeLineage individually. The description adds interpretation the schema lacks: the 'game's recommendations first, then tag matches' ordering clarifies what 'prefer' actually does, and the lineage cost note explains why includeLineage matters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (support gems) and its relation to the input (gems that can support a given skill), plus the ranking logic. This is clearly distinguishable from siblings like search_skills and gem_details, which operate on skills/gems rather than supports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies you use it after identifying a skill to find its supports, but it never states when to prefer this over siblings (e.g. suggest_extras) or any prerequisites. Usage is inferable from context rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_build_guideCreate a build guide pageA

Write a full build guide as a local web page and open it in the player's browser (like a Maxroll or Mobalytics guide): overview, strengths and weaknesses, a tab per phase (skills and supports, key passives with levels, ascendancy, gear to look for, quest rewards, a checklist before moving on, when to switch setups), automatic checks per phase, a zoomable passive tree highlighting each phase, and a downloadable Build Planner file per phase. When the Path of Building engine is available, each phase also gets real numbers and a verdict band at its last level. Use after planning; ask the player first. passivePlan is the plan_passive_tree output (id + takeAtLevel); phases split it by level. Give a phase its own passives only when it respecs. Gear slots use stat_priorities names (Ring, Wand, Focus…).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
openNoOpen in the browser (default true)
avoidNo
classYesClass or ascendancy name
goalsNoThe player's goals from build_intake: stricter targets, an honest goalCheck, and budget-matched end-game gear
notesNo
termsNoWhat the build scales, for the assumed gear in Path of Building numbers
phasesYes
defenceNoDefence layers for the assumed gear (default: life)
summaryYesThe play fantasy and how the build delivers it, in plain language
weaponsNo
gearTierNoAssumed gear quality for every phase's numbers; wins over goals.budget
playstyleNo
strengthsNo
ascendancyNo
weaknessesNo
leagueStartYes
passivePlanYes
ascendancyPassivesNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses externally visible side effects (writes a local web page, opens the browser), a conditional behavior ('When the Path of Building engine is available'), and a consent requirement. It stops short of stating overwrite behavior, file location, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence stating the action and artifact, followed by an accurate enumeration of contents, then two compact sentences for usage and parameter wiring. Dense but every clause maps to a real feature or schema field; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter, deeply nested tool with no output schema and no annotations, the description covers the artifact and the critical plan-to-phases relationship but leaves roughly two-thirds of the parameters (class, leagueStart, goals, gearTier conflicts, defence, terms) to a sparse schema. Adequate but visibly incomplete at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (37%), but the description compensates for the highest-value parameters: passivePlan is identified as the plan_passive_tree output (id + takeAtLevel), phases are said to split it by level, phase-level passives are only for respecs, and gear slots are tied to stat_priorities names. Many other parameters (name, class, leagueStart, summary, weapons, defence, terms) remain unexplained in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact ('Write a full build guide as a local web page and open it in the player's browser'), then enumerates the guide's contents precisely (phases, checks, zoomable passive tree, downloadable Build Planner). The artifact is clearly distinct from siblings like export_build or evaluate_build.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing and a consent gate: 'Use after planning; ask the player first.' That tells the agent this is a terminal step requiring confirmation. It does not, however, name a sibling alternative (e.g. export_build) or state when NOT to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

data_statusGame data statusB
Read-only

Where the game data is cached, when each file was last checked, and whether it loaded.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares this is a non-destructive read, so the safety profile is covered by annotations. The description adds the useful behavioral detail that results include cache location and per-file load/check state, which mild-compensates for the absent output schema, but it says nothing about the shape of the result, whether files are listed exhaustively, or what 'whether it loaded' looks like on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler, and the most useful content (cache location) is front-loaded. Slightly under-specified rather than over-long, but nothing in it is waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only diagnostic with no output schema, describing the three things returned (location, last-checked time, load status) supplies most of what an agent needs to interpret the result. It could note what constitutes a stale/failed state, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies the call is unconditional and takes no arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (game data cache/status) and enumerates the specific content reported: cache location, per-file last-checked timestamps, and load success. It is clear enough to distinguish from every sibling (which are build/analysis tools), but it is written as a noun phrase describing return content rather than stating the operation, so the 'what it does' verb is implicit (report/inspect status) rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of what a stale or failed load implies, and no routing to or away from any sibling tool. The agent must infer that this is a diagnostic call to check data freshness before running build operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_buildCalculate a build with Path of BuildingA
Read-only

Real numbers from Path of Building's calculation engine for a planned build at a character level: damage against normal monsters and against a boss, seconds to kill a normal/rare monster and a boss, hits you survive from monsters and bosses, life, energy shield, resistances (with the campaign's resistance penalty and only the quest rewards earned by that level), Spirit and attributes, plus a verdict band (Comfortable / Workable / Borderline / Not yet) with the weak point and what to fix first. Level 65+ is judged for early maps, T15 and juiced T16 (and pinnacle bosses when that's the goal). With goals (from build_intake) the targets follow the player's purpose and Hardcore, end-game gear follows their budget, and goalCheck says honestly whether the build is on track, rough or not realistic yet for what they want, with options to offer. setupGaps lists what the setup is missing (unused Spirit, no boss skill, no curse/mark/warcry/banner). At level 65+ the assumed rares get resistance mods added to cap resistances, as players do in maps. Damage is broken down into hits, ignite, poison, bleed and minions. By default it assumes budget rare gear for that level (a few mid-roll mods per slot, based on terms and defence), including a budget jewel in each allocated jewel socket; pass items to use specific uniques (by name) or pasted item text in their slots (jewels too), or gear: "none" for no gear. Missing connecting passives are filled in (and listed), and "+5 to any Attribute" passives are spent where the gems and weapon need them. gearTier sets how good the assumed rares are (budget, mid or high). Extras: an amulet anoint and a helmet instill (helmetInstill, via a Raven-Touched Shard), runes, soul cores and idols (socketables), a skill from a Lament/Portent/Absent Amulet with no Spirit cost (amuletSkill), unique flasks and charms (flasks, with flasksActive), and a weaponSwap set with its own weapons, passives and skills. Timeless jewels (Heroic Tragedy, Undying Hate) aren't calculated by Path of Building for PoE2 yet. To compare options side by side, use compare_builds. Numbers are estimates: assumed gear and heuristic bands, not guarantees. Windows only for now.

ParametersJSON Schema
NameRequiredDescriptionDefault
gearNo
avoidNo
classYesClass or ascendancy name
goalsNoThe player's goals from build_intake: stricter targets, an honest goalCheck, and budget-matched end-game gear
itemsNoSpecific items; each replaces the assumed item in its slot. Jewels go in the tree's allocated jewel sockets.
levelYes
termsNoWhat the build scales, for the assumed gear (as for stat_priorities)
anointNoNotable to anoint on the amulet (Liquid Emotions), e.g. "Potent Incantation"
flasksNoUnique flasks and charms by name (or item text); plain life/mana flasks are assumed otherwise
skillsYes
defenceNoDefence layers for the assumed gear (default: life)
weaponsNoWeapon item classes to assume, e.g. ["Staff"], ["Wand", "Focus"], ["One Hand Mace", "Shield"]
gearTierNoQuality of the assumed rares: budget (mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods). Wins over goals.budget; without either, budget. goals.budget only raises end-game (65+) gear, so at campaign levels all three budgets look the same.
passivesYesMain-tree passives taken by this level (key, id or exact name); missing connectors are added
mainSkillNo0-based index of the main damage skill (default 0)
ascendancyNo
weaponSwapNoWeapon swap: a second weapon set with its own passives and skills
amuletSkillNoA skill granted with no Spirit cost by a Lament, Portent or Absent Amulet (replaces the amulet), e.g. "Herald of Ash"
socketablesNoRunes, soul cores and idols to socket, by slot
flasksActiveNoCalculate with flasks active
helmetInstillNoNotable to instill on the helmet via a Raven-Touched Shard (level 60+, expensive)
ascendancyPassivesNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation only declares a safe read, but the description adds rich behavioral context: it's an estimate not a guarantee, Windows-only, Timeless jewels are unsupported, assumed gear is generated when `items` is absent, missing passives are auto-filled, and the default gear tier logic is explained. These caveats and assumptions go well beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense paragraph of roughly 300 words. It is front-loaded with the core purpose, but the mass of detail about gear assumptions, optional features, and limitations is packed into long sentences without structural breaks, making it harder to scan than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description still details the return values (damage, kill times, survivability, resistances, Spirit, verdict band, goalCheck, setupGaps). For a 22-parameter tool with nested objects, it covers assumptions, caveats, and limitations thoroughly enough that an agent knows what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 73%, so the schema already documents many parameters, but the description adds relational meaning: how `terms` and `defence` shape assumed gear, how `gearTier` overrides `goals.budget`, how `items` slots replace assumed gear, and what `socketables`/`anoint`/`amuletSkill` do. Some parameters like `avoid` and `ascendancyPassives` receive no prose explanation, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Real numbers from Path of Building's calculation engine for a planned build at a character level.' It distinguishes itself from siblings by naming compare_builds for side-by-side comparison and referencing build_intake for goals, so an agent can tell which tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes comparison work to compare_builds and explains that `goals` come from build_intake, giving clear context for when to use this tool. However, it does not mention when to prefer check_build, optimize_build, or other evaluative siblings, so the guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_buildExport to the in-game Build PlannerA

Write the finished build as a .build file into Path of Exile 2's BuildPlanner folder, where the game picks it up (passives with the level to take them, skills and supports with level ranges, and gear stat priorities per slot). Ask the player before writing. If the game folder isn't found, the file contents are returned to save manually. Gear slots: Main Hand, Off Hand, Weapon Swap Main Hand, Weapon Swap Off Hand, Helmet, Body Armour, Gloves, Boots, Amulet, Left Ring, Right Ring, Belt.

ParametersJSON Schema
NameRequiredDescriptionDefault
gearNo
nameYes
classYesClass or ascendancy name
writeNoWrite the file (default true). false = just return it
skillsYes
passivesYes
overwriteNoReplace an existing file with the same name that this tool didn't write
ascendancyNo
descriptionNo
levelRangesNoleveling (default): each passive shows from the level you take it. none: the whole tree at once — use for an end-game file (e.g. "Name - Endgame")
ascendancyPassivesNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the write target, the required user confirmation, and the fallback behavior when the folder is missing (contents returned to save manually). It omits any note on the write/overwrite distinction or success response shape, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action before the caveats, and the confirmation rule is stated plainly. The trailing gear-slot enumeration is long but earns its place by defining valid slot values; overall well structured with minor trailing bulk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-param, no-annotation, no-output-schema mutation tool, the description covers the essential operational context: what gets written, the confirmation gate, and the folder-missing fallback. It is complete enough to invoke correctly, though return-value and overwrite semantics remain thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 36%, so the description must compensate, and it does: it enumerates valid gear slot strings (constraining an otherwise free-text slot param) and explains that passives/supports carry level ranges and gear carries stat priorities per slot. It leaves write, overwrite, name, class, and ascendancy meaning to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: writes a finished build as a .build file into the game's BuildPlanner folder. Clearly distinguishable from siblings like list_builds, evaluate_build, or create_build_guide, which don't write in-game files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage via 'finished build' and the confirmation step ('Ask the player before writing'), which tells the agent this is a terminal export action. However, it names no alternative sibling or a when-not-to-use condition, so routing relies on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_passivesFind scaling passivesA
Read-only

Notables, keystones and ascendancy notables whose text matches what the build scales. Give the class (and ascendancy) to get distances from the class start and that ascendancy's nodes. Terms are words from passive text, e.g. fire, spell, cast speed, critical, ignite, minion, projectile, area of effect, energy shield, life. Set listAscendancy to get every node of the ascendancy (no terms needed), to see all 8-point options. Small passives too: kinds ["small"] with near (a node) and within (points) lists the small passives around a node, with keys to use as plan_passive_tree targets (terms optional then). Passives that need an ascendancy node first (e.g. Oracle-only ones need The Unseen Path) show it in requires.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearNoOnly passives within a few points of this node (key, id or exact name)
classNoClass or ascendancy name
kindsNoDefault: keystone, notable, ascendancy-notable
limitNo
termsNoRequired unless listAscendancy or near is set
withinNoPoints from near (default 4)
ascendancyNo
listAscendancyNoList every node of the ascendancy, with stats
includeJewelSocketsNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declaring the safety profile, the description adds genuinely useful behavior: that results expose 'requires' for ascendancy-gated passives, and that returned keys are valid plan_passive_tree targets. It doesn't cover result shape, ordering, or the limit cap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded but written as a dense chain of sentence fragments mixing purpose, term vocabulary, three usage modes, and edge cases. Every clause carries information, yet the lack of separation makes it harder to scan than the content warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, no-output-schema tool the description covers most invocation paths and hints at the returned 'requires' field and key usability. It still leaves the response payload's overall shape and pagination/limit behavior to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description compensates well for the important ones: terms are 'words from passive text' with a rich example list, kinds ["small"] semantics, listAscendancy meaning, near/within behavior, and the terms-optional-unless rule. It leaves limit, includeJewelSockets, and ascendancy (bare in both places) unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (notables, keystones, ascendancy notables) and what it filters on (text matching build scaling terms), plus distances from class start. It also links forward to the sibling plan_passive_tree as a consumer of its keys, though it never contrasts itself with search_skills or other lookup siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditional usage: supply class (and ascendancy) for distances, set listAscendancy for all 8-point options, and use kinds ["small"] with near/within for small passives. It even restates the required-parameter rule ('no terms needed' / 'terms optional then'). It stops short of naming when-not-to-use or an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_uniquesFind unique itemsA
Read-only

Unique items whose mods match what the build scales, with their full current mods, level requirement and where they drop. No prices here: treat boss-only drops (bossDrop: true) as likely expensive and prefer common uniques for budget builds. For a price, use trade_links (and, if this chat has a browser tool, offer to check a few prices with the player's OK). Slots: Helmet, Body Armour, Gloves, Boots, Amulet, Ring, Belt, Shield, Focus, Quiver, Wand, Staff, Sceptre, Bow, Crossbow, One Hand Mace, Two Hand Mace, Spear, Quarterstaff, Talisman, Jewel, Flask, Charm.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNo
limitNo
slotsNo
termsYesWords from mod text, e.g. ["fire", "spell"]
maxRequiredLevelNoe.g. the player's level, for leveling uniques

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, and the description adds real value beyond that: it discloses returned fields (full current mods, level requirement, drop locations), explains the bossDrop field's cost implication, and clarifies it returns no prices. It stops short of any pagination or result-count behavior, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, guidance, and the alternative-tool rule are front-loaded in the first sentences. The trailing slot enumeration is bulky but functional as an enum substitute; it earns its place, though the list does lengthen the entry notably.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so by naming the fields returned and stating the absence of prices. The main gap is unaddressed 'avoid'/'limit' parameters, but the core contract for calling this tool correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40% (terms and maxRequiredLevel documented), so the description must compensate. It does enrich slots by enumerating valid slot values (schema has no enums) and clarifies terms semantics, but 'avoid' and 'limit' are left entirely undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find) and resource (unique items) and scopes it to 'mods match what the build scales', which is far more than restating the name. It also explicitly separates itself from the pricing siblings ('No prices here'), so an agent can tell it apart from item_prices and trade_links.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit routing rule ('For a price, use trade_links') plus a decision heuristic for budget builds (prefer common uniques, treat bossDrop: true as expensive). It names the alternative tool and the condition that selects it, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gem_detailsGem detailsA
Read-only

Everything about one skill, spirit or support gem: tags, skill types (what supports and passives key off), description, what it does at gem levels 1 and 20, Spirit cost, attribute weighting, weapon requirements, earliest character level, support family, and the supports the game recommends for it. Pass the exact name or gemId.

ParametersJSON Schema
NameRequiredDescriptionDefault
gemYesExact gem name, e.g. "Herald of Ash", or gemId

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. With no output schema, the description carries the return-value burden and does so well by enumerating the returned dimensions (tags, skill types, level 1/20 behavior, Spirit cost, attribute weighting, weapon requirements, support family, recommended supports), which is real added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense enumerating sentence plus a short imperative. Front-loaded with the resource, no filler, and every listed field is load-bearing given the absence of an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param read-only lookup with no output schema, the description supplies the missing return contract and the exact-identifier requirement. It could be more complete by clarifying behavior when the name is ambiguous (e.g., name collides across gem types) or not found.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents 'Exact gem name, e.g. "Herald of Ash", or gemId'. The description's 'Pass the exact name or gemId' restates the schema rather than adding format resolution rules, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (one skill/spirit/support gem) and enumerates exactly what is returned, which lets an agent distinguish it from a search or list tool. It stops short of naming search_skills or compatible_supports as alternatives, so the boundary against the overlapping 'recommended supports' sibling is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing line ('Pass the exact name or gemId') gives invocation guidance, but there is no statement of when to reach for this tool versus search_skills (broad discovery) or compatible_supports (support matching). Usage is implied by the verbosity of the field list rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

item_pricesPrices of currency and stackable itemsA
Read-only

Current prices from the official Currency Exchange (the last full hour) for stackable items: currency orbs, runes, soul cores, idols, Liquid Emotions, omens, catalysts, essences, the Raven-Touched Shard and so on. Prices are in Exalted Orbs (and Divine Orbs for expensive items), estimated from what actually traded. Uniques and rares aren't on the exchange: use trade_links.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesItem names, e.g. ["Divine Orb", "Desert Rune"]
leagueNoDefault: the main trade league

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds real context beyond them: the source (official Currency Exchange), freshness (last full hour), denominations (Exalted Orbs, Divine Orbs for expensive items), and that prices are trade-derived estimates. It omits any rate-limit or pagination/return-shape detail, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: scope of items, unit/estimation semantics, and the explicit exclusion pointing to the alternative. The most decision-relevant routing cue is front-loaded alongside the resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only two-parameter query with no output schema, the description supplies item scope, price units, and the key sibling exclusion. Return shape (list vs. map, per-item fields) is left implicit, but that is the only meaningful gap for a tool this simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both names and league. The description adds item-name examples but no syntax, limits (50 max), or league-default detail beyond what the schema states, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (current prices for stackable items) and enumerates the covered categories (currency orbs, runes, soul cores, essences, etc.). It also names the sibling it is not (trade_links for uniques/rares), so an agent can distinguish it without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: this tool is for exchange-traded stackables, while uniques and rares must use trade_links. It also scopes the data source and time window (official Currency Exchange, last full hour), leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

leveling_phasesLeveling phasesA
Read-only

Campaign and end-game phases for a league-start character (Act 1 … Interludes, early maps, end-game), with approximate level ranges, a checkpoint level to run check_build at, passive points and quest Spirit by then, the highest gem level usable, and the quest rewards in each phase (resistances, Spirit, life, and choices). Level ranges come from quest area levels.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes this as a safe read, and the description adds useful context beyond that: it is static reference data whose 'Level ranges come from quest area levels', i.e. a derived lookup table rather than live character state. No auth, mutation, or rate-limit concerns are implied, consistent with the annotation, though pagination/ordering behavior is not mentioned (not relevant for a 0-param static table).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence, front-loaded with the resource name and followed by the enumerated payload. Every clause carries information needed by the agent given there is no output schema, though the long comma-heavy list is slightly harder to scan than a short bulleted structure would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description carries the full burden of describing what comes back, and it does so thoroughly (phases, ranges, checkpoint, passives, Spirit, gem level, quest rewards). It is complete enough to call correctly; only the concrete return shape/field names are left unspecified, which is a minor gap for a static reference table.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a parameterless reference lookup with no input filtering.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (leveling phases for a league-start character) and enumerates its exact contents — phases, level ranges, checkpoint level, passive points, Spirit, gem level, quest rewards. It also ties itself to the sibling check_build via the 'checkpoint level to run check_build at', which helps an agent place it among the build tools. It stops short of a stated verb ('returns/reference lookup'), but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternatives guidance. Only the phrase 'for a league-start character' implies context, and the check_build mention implies a downstream workflow step, but nothing tells the agent whether to prefer this over create_build_guide, evaluate_build, or plan_passive_tree.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_buildsList Build Planner files and guidesA
Read-only

The .build files in Path of Exile 2's BuildPlanner folder (newest first, and whether this tool made each one) and the guide folders this tool created. Use before remove_builds, or to find the file names of earlier exports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the safety profile is covered. The description meaningfully adds behavior beyond that: results are ordered newest first, each entry indicates whether this tool created it, and guide folders returned are only those this tool made — useful provenance semantics an agent would not otherwise know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the ordering/provenance caveats front-loaded, followed by routing guidance. Nothing is wasted, though the leading noun phrase reads as a sentence fragment and could more directly state the listing action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey what comes back; it does so by naming the file names, the newest-first ordering, the creator flag, and the guide folders. That is sufficient for a zero-parameter read tool, with only minor gaps (no mention of whether results can be empty or paginated).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument call by never referencing any input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource (.build files in the Path of Exile 2 BuildPlanner folder) and the secondary output (guide folders this tool created), which clearly separates it from siblings like remove_builds or export_build. The sentence is a noun phrase rather than a verb-led statement, so the listing action is inferred from the title rather than stated outright, but the object of the tool is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use guidance: 'Use before remove_builds, or to find the file names of earlier exports.' That explicitly ties it to a sibling workflow and a lookup purpose. It stops short of stating exclusions (e.g., that it does not filter or search), so it is a strong 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_classesList classesB
Read-only

Playable classes with their released ascendancies and starting attributes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read with no side effects, so the safety burden is covered by annotations. The description contributes only the shape of the payload (ascendancies plus starting attributes); it says nothing about filtering, ordering, or size of the result set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact phrase with no padding, and the key content ('playable classes') leads. It is a fragment rather than a sentence, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument reference-list tool whose annotations cover the safety profile and which has no output schema, the description gives an adequate sketch of what comes back. Only the return format (structure, whether ascendancy data is nested) is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters, so there are no semantics to explain and the schema fully describes the input. Baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (playable classes) and enumerates the scope of what is returned (released ascendancies, starting attributes), which is clearer than a bare 'List classes'. It does not differentiate itself from any sibling, but none of the siblings overlap meaningfully with class/ascendancy reference data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus siblings like evaluate_build, build_intake, or stat_priorities. Usage is only inferable from the name and the fact that it takes no parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_buildFind more damage without losing survivabilityA
Read-only

Tries likely changes to a build in Path of Building, one at a time, and keeps what measurably helps: support swaps on the main skill (or adding one to a free socket), notables that scale the build or its defences, Spirit skills, and an amulet anoint. damage lists changes that raise the objective (boss DPS, clear DPS or both) without giving up survivability (effective HP and max hit within 2%, resistances still capped); survival lists cheap survivability gains; spiritSkills shows what each Spirit skill measured; combined is the best compatible picks calculated together. Passive changes show their point cost and whether they fit the free points. Takes 10-40 seconds. A best-effort search, not a guaranteed best build; numbers are estimates. Use it after the first evaluate_build, and again after applying changes. Windows only for now.

ParametersJSON Schema
NameRequiredDescriptionDefault
gearNo
avoidNo
classYesClass or ascendancy name
goalsNoThe player's goals from build_intake: stricter targets, an honest goalCheck, and budget-matched end-game gear
itemsNoSpecific items; each replaces the assumed item in its slot. Jewels go in the tree's allocated jewel sockets.
kindsNoDefault: all
levelYes
termsNoWhat the build scales, for the assumed gear (as for stat_priorities)
anointNoNotable to anoint on the amulet (Liquid Emotions), e.g. "Potent Incantation"
flasksNoUnique flasks and charms by name (or item text); plain life/mana flasks are assumed otherwise
skillsYes
defenceNoDefence layers for the assumed gear (default: life)
weaponsNoWeapon item classes to assume, e.g. ["Staff"], ["Wand", "Focus"], ["One Hand Mace", "Shield"]
gearTierNoQuality of the assumed rares: budget (mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods). Wins over goals.budget; without either, budget. goals.budget only raises end-game (65+) gear, so at campaign levels all three budgets look the same.
passivesYesMain-tree passives taken by this level (key, id or exact name); missing connectors are added
mainSkillNo0-based index of the main damage skill (default 0)
objectiveNoWhat to maximise. Default from goals.purpose: mapping → clear, bossing → boss, otherwise balanced
ascendancyNo
weaponSwapNoWeapon swap: a second weapon set with its own passives and skills
amuletSkillNoA skill granted with no Spirit cost by a Lament, Portent or Absent Amulet (replaces the amulet), e.g. "Herald of Ash"
socketablesNoRunes, soul cores and idols to socket, by slot
flasksActiveNoCalculate with flasks active
helmetInstillNoNotable to instill on the helmet via a Raven-Touched Shard (level 60+, expensive)
maxEvaluationsNoCalculations to spend (default 40)
ascendancyPassivesNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the safety profile is covered and the description is free to add real behavioral context: a 10-40 second runtime, a platform restriction ('Windows only for now'), and an honesty caveat that it is 'a best-effort search, not a guaranteed best build; numbers are estimates.' It also discloses the acceptance thresholds (within 2%, resistances still capped). It does not describe whether changes persist, but nothing suggests mutation, so no contradiction with readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the change categories, then the return buckets and caveats. Dense but every clause carries information; the enumeration of output keys is slightly list-heavy but warranted given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter tool with nested objects and no output schema, the description compensates well: it explains the return shape (damage, survival, spiritSkills, combined), the constraints applied to each list, the runtime, and the accuracy limits. An agent knows what it will get back and how long it must wait.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 25 parameters and 76% schema description coverage, the schema already documents most inputs, so the baseline of 3 applies. The description adds no per-parameter detail beyond implicitly mapping the supported change categories (support swaps, notables, Spirit skills, anoint) onto the `kinds` enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('tries likely changes to a build in Path of Building, one at a time, and keeps what measurably helps') and enumerates the exact change categories it explores. It also distinguishes itself from the sibling evaluate_build by name, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing: 'Use it after the first evaluate_build, and again after applying changes,' naming the sibling that must run first. It does not state what this tool should not be used for, but the context is otherwise unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_passive_treePlan passive treeA
Read-only

Connect the class start to the chosen passives and say the character level each point can be taken at. By default targets are reached in the order given (priority order); order: "cheapest" takes the nearest first instead. Among equally short routes it prefers small passives matching terms and avoids avoid (e.g. terms ["spell", "fire"] picks Spell Damage smalls over Life Regeneration ones); to force a route, list small passives as targets too (find_passives with kinds ["small"] and near gives their keys). Notables passed on the way to another target are flagged (onTheWay). Passives gated behind an ascendancy node (e.g. Oracle-only passives need The Unseen Path) are only used when that node is in ascendancyPassives, and are flagged with the trial that unlocks them. Also paths the ascendancy nodes (8 points, 2 per trial). Pass passives by key, id or exact name.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoAvoid small passives matching these on equally short routes
classYesClass or ascendancy name
orderNoDefault priority: targets in the order given
termsNoPrefer small passives matching these on equally short routes
passivesYesMain-tree targets in priority order
ascendancyNo
targetLevelNoLevel to budget for (default 90)
ascendancyPassivesNoIn the order they'll be taken (2 per trial)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint, so the description carries the behavioral burden and does so richly: tie-breaking rules for terms/avoid, onTheWay flagging of notables, ascendancy gating requiring the unlocking node to be present and flagged with the trial, and the extra 8 ascendancy points (2 per trial). This is significantly more than the readOnly annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded before the conditional details about tie-breaking and ascendancy gating. It is a dense single paragraph with some nested parentheticals, but every sentence adds actionable rules rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and only a readOnly annotation, the description covers the important behaviors: ordering, tie-breaking, ascendancy gating, and the level annotation it returns. The main remaining gap is the exact shape of the returned route/level data, though it hints at it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 88%, so the baseline is 3, and the description adds real meaning on top: it defines the semantics of order, terms, avoid, ascendancyPassives ordering (2 per trial), and the targetLevel budget ('default 90'). It also notes passives can be passed by key, id, or exact name, which the schema does not spell out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: it connects the class start to chosen passives and reports the character level at which each point can be taken. It is clearly distinguishable from sibling tools like find_passives, which it names as the way to look up small-passive keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the default ordering ('priority order') versus the 'cheapest' alternative, and explicitly tells the agent how to force a route by listing small passives as targets, including the find_passives call needed to get their keys. It stops short of stating when to prefer this tool over optimize_build or check_build among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_buildsRemove old Build Planner files and guidesA
Destructive

Move superseded .build files (only ones this tool made) and guide folders out of the way, into Documents/PoE2 Build Planner/removed/. Nothing is deleted, so the player can move them back. Ask the player first and name exactly what will be moved. File and folder names come from list_builds.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildsNoFile names, e.g. "WFO-levling.build"
guidesNoGuide folder names

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only destructiveHint=true available, the description adds substantial context the annotation cannot: nothing is deleted, files go to Documents/PoE2 Build Planner/removed/<date>, and the move is reversible. It also discloses the important guard that only files this tool created are touched. This exceeds the annotation's safety profile without contradicting it (moving files out of active use is reasonably 'destructive' even though reversible).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and destination, followed by the reversibility guarantee, the required player confirmation, and the input source. No sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter tool with no output schema, the description covers everything an agent needs: what is affected, where items go, that the action is reversible, and the prerequisite of asking the player and sourcing names from list_builds.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by stating that the file and folder names originate from list_builds. It does not add format or validation detail beyond that, so it improves on the schema rather than merely restating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (move) on a specific resource (.build files and guide folders), and scopes it tightly with '(only ones this tool made)' and the destination path. It clearly distinguishes itself from siblings like create_build_guide by explaining that it relocates rather than deletes or creates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a precondition ('Ask the player first and name exactly what will be moved') and points to the sibling that supplies input ('File and folder names come from list_builds'). It stops short of an explicit when-not-to-use or naming a reverse (restore) tool, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_skillsSearch skillsA
Read-only

Find active and spirit skill gems by gem tags, skill types, name words or description text. require terms must all match tags/types/name; text words must all appear in the skill's description (e.g. ["poison"], ["slam"]); prefer terms rank results. Useful terms: fire, cold, lightning, chaos, physical, spell, attack, projectile, area, melee, slam, strike, minion, bow, crossbow, mace, spear, quarterstaff, totem, curse, aura, herald, channelling, duration, persistent, buff. Each result has the gemId, tags, skill types, description, weapon requirements, earliest level and where it comes from (uncut-gem or item). Use gem_details for one gem's full details and compatible_supports for its supports.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoWords that must all appear in the description, e.g. ["poison"]
limitNo
preferNoRaise ranking, e.g. ["projectile", "area"]
weaponNoOnly skills usable with this weapon, e.g. "bow", "mace"
requireNoAll must match tags/types/name, e.g. ["fire", "spell"]
availableByNoOnly skills usable by this character level (for leveling)
includeItemSkillsNoAlso include skills granted by items (weapon bases, uniques)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, so the bar is lower. The description adds real behavioral value by enumerating the fields each result contains (gemId, tags, skill types, description, weapon requirements, earliest level, uncut-gem/item origin) and by spelling out how each filter class behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by filter semantics and routing. The long 'useful terms' enumeration is dense but functional as a value hint; otherwise every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the result fields, and it covers filter behavior and sibling routing. Only minor gaps remain (e.g. limit/pagination behavior), but the definition is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (86%), setting a baseline of 3, but the description meaningfully refines the key filters: it clarifies that require terms must all match tags/types/name, text words must all appear in the description, and prefer only affects ranking. The 'useful terms' list additionally helps the agent choose valid filter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Find active and spirit skill gems') and scopes it by the four search axes (gem tags, skill types, name words, description text). It explicitly distinguishes itself from sibling tools gem_details and compatible_supports, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the three filter modes (require vs text vs prefer) and routes to alternatives: 'Use gem_details for one gem's full details and compatible_supports for its supports.' It gives strong context for use but stops short of explicit when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stat_prioritiesGear and jewel stat prioritiesA
Read-only

For each gear slot (and jewels), the random modifiers that match what the build scales, best first, plus a defence baseline for the build's defence style. Terms are words from mod text (e.g. fire, spell, cast speed, critical, minion, projectile, area of effect, attack speed). Use avoid to rule out mods, e.g. ["attack"] for a caster. Give itemLevel for leveling advice: each mod then shows the best tier that can roll at that level, plus the end-game tier. Slots: Helmet, Body Armour, Gloves, Boots, Amulet, Ring, Belt, Shield, Focus, Quiver, Wand, Staff, Sceptre, Bow, Crossbow, One Hand Mace, Two Hand Mace, Spear, Quarterstaff, Talisman, Jewel, Flask, Charm.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNo
slotsNoDefault: armour, jewellery and jewels
termsYes
defenceNoDefence layers the build uses, e.g. ["energy shield"] or ["life", "armour"]. Resistances are always included. Default: all
perSlotNo
itemLevelNoItem level to plan for: roughly the area level; during the campaign about the character level

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, and the description adds genuinely new behavior: itemLevel causes each mod to show the best tier rollable at that level plus the end-game tier, and a defence baseline is always included with resistances always present. It does not mention pagination or output shape limits, but for a read-only lookup the added behavioral detail is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior, then progressively adds parameter guidance. It is dense rather than padded. The long slot enumeration is tedious but earns its place by supplying the valid string values that the schema does not enumerate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only 50% schema coverage, the description carries the burden well: it describes the return structure (ranked mods per slot, defence baseline), and the effect of the key optional parameters. The only notable gap is `perSlot`, whose purpose and default are never explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, so the description meaningfully compensates: it explains what `terms` mean (words from mod text, with many examples), what `avoid` does, what `defence` produces, the itemLevel tier behavior, and enumerates the valid slot names. Only `perSlot` (the result count, max 20) is left undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specifically what is returned: for each gear slot and jewels, ranked random modifiers that the build scales, plus a defence baseline. The verb+resource is implicit (it computes/lists stat priorities) but the output is described concretely enough that an agent knows what it gets. It does not explicitly differentiate itself from siblings like evaluate_build, but the subject matter (per-slot mod priorities) is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives usage guidance for parameters ('Use `avoid` to rule out mods, e.g. ["attack"] for a caster', 'Give `itemLevel` for leveling advice'), which implies when the tool is useful. However, there is no statement of when to choose this tool over siblings such as evaluate_build or optimize_build — selection guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_extrasSuggest Spirit skills, jewels, flasks, anoints, runes and moreA
Read-only

Suggestions beyond the main skill at a character level: persistent skills (auras, heralds, buffs) that fit the build and what they cost against the Spirit available by then (quests plus any gear Spirit you give), with a pick that fits — and which ones a Lament, Portent or Absent Amulet grants with no Spirit cost (freeWithAmulet, and the amuletSkills section); the best jewel type and its mods, plus fitting unique jewels; the best life and mana flask for the level, useful flask mods, charms, and fitting unique flasks and charms; amulet anoints (notables and their Liquid Emotions recipe, with cost) and the helmet instill (a Raven-Touched Shard in the helmet allows a second notable); and runes, soul cores and idols per gear slot. Costs are in Exalted Orbs from the official Currency Exchange (last full hour) when it can be reached. Try any of these in evaluate_build (anoint, helmetInstill, socketables, amuletSkill, flasks).

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyNoDefault: all
avoidNo
levelYes
termsYesWhat the build scales, e.g. ["fire", "spell", "ignite"]
leagueNoTrade league for prices. Default: the main league
defenceNoDefault: life
allocatedNoPassives already in the tree (keys, ids or names), left out of anoints
mainSkillNoMain skill name (for the jewel type)
gearSpiritNoSpirit from gear, if any
socketSlotsNoSlots for rune suggestions, e.g. ["Body Armour", "Staff"]. Default: armour slots
alreadyUsingNoSpirit skills already in the build

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint already declares a safe read, and the description adds substantive behavior beyond that: costs are Exalted Orbs sourced from the official Currency Exchange for 'the last full hour...when it can be reached' (a data-freshness caveat), and it discloses the freeWithAmulet mechanic and the Raven-Touched Shard second-notable rule. Return format is not described, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire body is a single sprawling sentence stacked with parentheticals and 'and' clauses, which is dense and hard to parse. It is front-loaded with the scope, and most clauses carry information, but the structure works against quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters, no output schema, and only a readOnly annotation, the description carries the disclosure burden and does so thoroughly across all six categories plus the pricing caveat. The remaining gap is the shape of the returned results, which nothing else documents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 82%, so the baseline is 3, but the description adds real meaning the schema lacks: gearSpirit is defined as quests plus user-supplied gear Spirit, mainSkill is scoped to jewel-type selection, and the amuletSkills section explains the amulet-granted free skills. It does not fully clarify 'allocated' or 'avoid' beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (suggest) and enumerates the exact resources covered (Spirit skills, jewels, flasks, anoints, runes/soul cores/idols), scoped 'beyond the main skill at a character level'. This is specific enough to separate it from siblings like find_uniques or optimize_build without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Frames the tool as a follow-up layer ('beyond the main skill') and routes the agent to evaluate_build for applying the results (anoint, helmetInstill, socketables, amuletSkill, flasks). It gives clear context but no explicit when-not or a full comparison against sibling suggestion tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.6.0-beta
    • Changedcompare_builds1 field changed
      • changedInput schema / properties / variants / items / properties / gearTier / description
        Previous value: -"Quality of the assumed rares: budget (default, mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods)"New value: +"Quality of the assumed rares: budget (mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods). Wins over goals.budget; without either, budget. goals.budget only raises end-game (65+) gear, so at campaign levels all three budgets look the same."
    • Changedcreate_build_guide1 field changed
      • addedInput schema / properties / gearTier
        Added value: +{
        +  "description": "Assumed gear quality for every phase's numbers; wins over goals.budget",
        +  "enum": [
        +    "budget",
        +    "mid",
        +    "high"
        +  ],
        +  "type": "string"
        +}
    • Changedevaluate_build1 field changed
      • changedInput schema / properties / gearTier / description
        Previous value: -"Quality of the assumed rares: budget (default, mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods)"New value: +"Quality of the assumed rares: budget (mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods). Wins over goals.budget; without either, budget. goals.budget only raises end-game (65+) gear, so at campaign levels all three budgets look the same."
    • Changedexport_build1 field changed
      • addedInput schema / properties / levelRanges
        Added value: +{
        +  "description": "leveling (default): each passive shows from the level you take it. none: the whole tree at once — use for an end-game file (e.g. \"Name - Endgame\")",
        +  "enum": [
        +    "leveling",
        +    "none"
        +  ],
        +  "type": "string"
        +}
    • Changedfind_passives4 fields changed
      • addedInput schema / properties / kinds
        Added value: +{
        +  "description": "Default: keystone, notable, ascendancy-notable",
        +  "items": {
        +    "enum": [
        +      "keystone",
        +      "notable",
        +      "ascendancy-notable",
        +      "jewel-socket",
        +      "small",
        +      "attribute"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / near
        Added value: +{
        +  "description": "Only passives within a few points of this node (key, id or exact name)",
        +  "type": "string"
        +}
      • changedInput schema / properties / terms / description
        Previous value: -"Required unless listAscendancy is set"New value: +"Required unless listAscendancy or near is set"
      • addedInput schema / properties / within
        Added value: +{
        +  "description": "Points from near (default 4)",
        +  "maximum": 10,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Addedlist_builds
    • Changedoptimize_build1 field changed
      • changedInput schema / properties / gearTier / description
        Previous value: -"Quality of the assumed rares: budget (default, mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods)"New value: +"Quality of the assumed rares: budget (mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods). Wins over goals.budget; without either, budget. goals.budget only raises end-game (65+) gear, so at campaign levels all three budgets look the same."
    • Changedplan_passive_tree4 fields changed
      • addedInput schema / properties / ascendancyPassives / description
        Added value: +"In the order they'll be taken (2 per trial)"
      • addedInput schema / properties / avoid
        Added value: +{
        +  "description": "Avoid small passives matching these on equally short routes",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / order
        Added value: +{
        +  "description": "Default priority: targets in the order given",
        +  "enum": [
        +    "priority",
        +    "cheapest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / terms
        Added value: +{
        +  "description": "Prefer small passives matching these on equally short routes",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedremove_builds
  2. 20 tool updatesv0.5.0
    • First observedbuild_intake
    • First observedcheck_build
    • First observedcompare_builds
    • First observedcompatible_supports
    • First observedcreate_build_guide
    • First observeddata_status
    • First observedevaluate_build
    • First observedexport_build
    • First observedfind_passives
    • First observedfind_uniques
    • First observedgem_details
    • First observeditem_prices
    • First observedleveling_phases
    • First observedlist_classes
    • First observedoptimize_build
    • First observedplan_passive_tree
    • First observedsearch_skills
    • First observedstat_priorities
    • First observedsuggest_extras
    • First observedtrade_links

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Each tool maps to a distinct stage of the build workflow (intake, leveling, passive planning, evaluation, optimization, export, guides, economy), and descriptions explicitly route between similar tools (e.g. check_build for rules vs evaluate_build for numbers). Some overlap remains among evaluate/check/optimize/compare and between suggest_extras and evaluate_build's extras, but the boundaries are clearly explained.

Naming Consistency4/5

All names use snake_case, which keeps them predictable and readable. However, verb-first names (list_builds, find_passives, export_build) mix with noun-first names (gem_details, item_prices, stat_priorities, leveling_phases), so the grammatical pattern is not uniform.

Tool Count4/5

22 tools sits at the heavy end of the range, but the domain is broad (campaign planning, gear, skills, economy, trade, guides) and most tools are genuinely distinct operations. A couple of thin utilities (data_status, list_classes) keep it from being perfectly scoped.

Completeness5/5

The set covers the full lifecycle: intake, leveling phases, passive and skill planning, gear/unique lookup, pricing, trade links, evaluation, optimization, export, and guide generation. Documented limitations (Windows-only PoB, no timeless jewel calculation) are constraints of the engine rather than missing tool surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI-powered Path of Exile 2 character optimization through natural language queries, providing intelligent build recommendations, gear upgrades, and passive tree optimization using the official PoE API and comprehensive game database.
    81
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Provides real-time access to Path of Exile 2 game data including currency exchange rates, item prices, and ladder meta-build statistics. It also enables LLMs to search the community wiki and retrieve datamined game information from public APIs.
    8
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for Path of Exile 2: a queryable game corpus plus Path-of-Building-faithful calculations, so an LLM can import your build, answer questions, and theorycraft against real numbers (not invented ones).
    64
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that enables Claude to analyze, modify, and optimize Path of Exile 2 builds using Path of Building's calculation engine.
    30
    3
    GPL 3.0