Skip to main content
Glama
cornndawwg

poe2-build-planner

by cornndawwg

Find more damage without losing survivability

optimize_build
Read-only

Optimizes Path of Exile 2 builds by testing incremental changes like support swaps, passives, and spirit skills, keeping only those that measurably improve damage or survivability.

Instructions

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.

Input Schema

TableJSON 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 (default, mid rolls), mid (good rolls, more mods), high (perfect rolls, full mods)
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

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantive behavioral context that annotations do not carry: runtime of 10-40 seconds, that it is a best-effort search with estimated numbers rather than a guaranteed optimum, the acceptance constraint (no loss of EHP/max hit within 2%, resistances still capped), and a platform limitation (Windows only). readOnlyHint already covers the safety profile, so this is genuine added value.

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 the change categories, then the return shape, then timing/caveats. Three dense sentences with no filler, though the enumeration of change types and result keys runs long enough that a reader must parse carefully; a bulleted split would read faster.

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?

Given 25 parameters, nested objects and no output schema, the description compensates by naming the return keys (damage, survival, spiritSkills, combined) and explaining what each contains, plus cost, variance and platform limits. An agent can decide whether to call it and interpret the result without further sources.

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 76%, so the schema does most of the work, but the description adds real meaning: it maps the change categories to the `kinds` enum values (support swaps, notables, Spirit, anoint), ties `objective` to boss DPS vs clear DPS vs both, and explains that passive picks report point cost and fit against free points. Parameters like `avoid`, `maxEvaluations` and `terms` get no description-level elaboration.

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 candidate changes to a Path of Building build and keeps what measurably helps) and enumerates the exact change categories it searches: support swaps, notables, Spirit skills, anoint. This makes it clearly distinct from evaluate_build (measure) and suggest_extras 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?

Explicitly names the sequencing: 'Use it after the first evaluate_build, and again after applying changes,' which routes the agent relative to the sibling that measures the build. It stops short of saying when NOT to use it (e.g. before a baseline evaluation exists, or when the caller wants a quick single check), so it isn't a full when/when-not/alternatives statement.

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