{"version":1,"endpoints":[{"method":"GET","path":"/api","summary":"health check","scenario":{"use":"to confirm the world yet lives and answers.","returns":"a single greeting that the service is present and willing."}},{"method":"GET","path":"/api/spec","summary":"this document","scenario":{"use":"to discover every endpoint and its purpose without reading source.","returns":"the full surface map of method, path, query, summary, and scenario for each endpoint the world provides."}},{"method":"GET","path":"/api/skill","summary":"agent-readable skill describing how to use the API, also reachable at /skill, /skill.md, /.well-known/skill, /.well-known/skill.md, /llms.txt","scenario":{"use":"to obtain the complete guide for agents and developers, that all usage patterns and recipes may be learned from a single page.","returns":"a markdown document with YAML frontmatter containing the full instruction for building upon this world."}},{"method":"GET","path":"/api/craft-guide","summary":"crafting and economy skill, also reachable at /craft-guide, /craft-guide.md","scenario":{"use":"to learn the full crafting and economy system, that orb costs, crafting modes, stat boosting, and monster drops may be composed into a progression loop.","returns":"a markdown document teaching the economy from first principles through end-game."}},{"method":"GET","path":"/api/stats","summary":"canonical 9 base stats and inclusive [min, max] bounds","scenario":{"use":"to obtain the canonical stat order before sending values to /api/attributes or /api/drop, that there be no ambiguity in the array.","returns":"the nine base stats in their fixed order and their inclusive bounds from 8 to 24."}},{"method":"GET","path":"/api/slots","summary":"equipment slots, per-slot capacity, derived-attribute domain, and canonical iteration order","scenario":{"use":"to learn which slots exist, how many items each holds, and which derived attributes each slot governs.","returns":"every equipment slot in canonical order with its capacity and derived-attribute domain."}},{"method":"GET","path":"/api/skills","summary":"all skills with flavor text","scenario":{"use":"to obtain the full table of 288 skills from which characters draw their distinctions.","returns":"every skill with id, name, and the prose that describes its nature."}},{"method":"GET","path":"/api/advantages","summary":"all advantages","scenario":{"use":"to obtain the full advantages table for building trait pickers and character creation.","returns":"every advantage as a weighted-table entry, ready to be scored via /api/traits/impact."}},{"method":"GET","path":"/api/disadvantages","summary":"all disadvantages","scenario":{"use":"to obtain the full disadvantages table for building flaw systems and challenge modifiers.","returns":"every disadvantage as a weighted-table entry, ready to be scored via /api/traits/impact."}},{"method":"GET","path":"/api/classes","summary":"all character classes with mainhand weapon mapping","scenario":{"use":"to obtain the 144 classes and the mainhand weapon each is bound to.","returns":"the full class list with name, flavor text, and the weapon that defines the class."}},{"method":"GET","path":"/api/effects","summary":"all status effects with descriptions","scenario":{"use":"to obtain every status effect that items and combat may inflict upon the living.","returns":"the full effects list with name and the prose describing its mechanical consequence."}},{"method":"GET","path":"/api/roll/item","query":"seed?","summary":"roll a fresh item with score, grade, material, and breakdown; seedable, single-flight","scenario":{"use":"to summon one item from the weighted tables at no cost, reproducibly when a seed is given. The forge makes one at a time, so expand an army from one integer with deriveSeed and call once per soul.","returns":"the item enriched with its grade, material, orb value, a breakdown row, the seed that produced it, and the contentVersion that snapshot resolves against."}},{"method":"GET","path":"/api/roll/set","query":"seed?","summary":"roll a full 15-item equipment set with per-slot breakdown; seedable","scenario":{"use":"to outfit a character with a complete equipment set in one call, reproducibly when a seed is given.","returns":"the full equipment object, an aggregate orb value, a per-slot breakdown walked in canonical order, and the contentVersion."}},{"method":"GET","path":"/api/roll/character","query":"seed?, equipmentBonus?","summary":"roll a complete character with stats, traits, equipment, and derived attributes; seedable, single-flight","scenario":{"use":"to bring forth one complete playable character with all systems resolved, reproducibly when a seed is given. Pass equipmentBonus=1 to fold gear stat bonuses into finalStats; by default a fresh roll leaves finalStats equal to modifiedStats.","returns":"base stats, modified stats after traits, final stats, enriched gear, orb breakdown, trait impacts, class, power rating, twenty-three derived attributes, the seed, and the contentVersion."}},{"method":"GET","path":"/api/rarity","query":"indexes | rolls","summary":"score and tier an item by its roll or index vector","scenario":{"use":"to appraise an item and learn its material grade, tier, quality score, and the contribution of each factor.","returns":"the grade, tier, probability, orb value, material envelope, and per-factor breakdown sorted by rarity contribution."}},{"method":"GET","path":"/api/rarity/tiers","summary":"tier definitions and grade ranges","scenario":{"use":"to learn the seven grade definitions from F through S and the boundaries between them.","returns":"the tier table with cumulative-weight share descriptions and grade counts for tools and wearables."}},{"method":"GET","path":"/api/modifiers","query":"indexes | rolls","summary":"advisory modifier budget and hash-derived theme channels for an item","scenario":{"use":"to learn how much power an item of this grade is entitled to and which attribute or elemental channels its name suggests, though the magnitudes remain yours to tune.","returns":"the grade envelope with a single budget number gated by grade and a themed channel for each name factor, derived by the same pinned hash as traits."}},{"method":"GET","path":"/api/modifiers/spec","summary":"the modifier budget table, channel list, and theme derivation spec","scenario":{"use":"to obtain the budget-per-grade schedule and the hash specification, that a client may recompute every budget and theme locally.","returns":"the seven budgets beside their craft costs, the thirty-one channels, and the FNV-1a derivation rule."}},{"method":"GET","path":"/api/craft/cost","query":"tier=1..7","summary":"orb cost to craft at a target tier","example":"/api/craft/cost?tier=5","scenario":{"use":"to learn the orb price required before attempting a craft at the given tier.","returns":"the orb cost and the budget of attempts the server will expend before declaring the craft capped."}},{"method":"GET","path":"/api/craft","query":"tier=1..7 | orbs=N, seed?, budget?","summary":"craft an item by rejection-sampling to a tier or spending orbs in a lottery","example":"/api/craft?orbs=125","scenario":{"use":"to spend orbs and receive an item, either by targeting a material tier or by rolling the best of many.","returns":"the resulting item with its score, grade, tier, and material, plus the number of attempts or the expected percentile band."}},{"method":"GET","path":"/api/salvage","query":"indexes | rolls | tier?","summary":"orb salvage value for disassembling an item, plus the full schedule and sink invariant","example":"/api/salvage?tier=6","scenario":{"use":"to appraise what an item returns when destroyed for orbs, under the published schedule whose expected return per roll stays strictly below one orb.","returns":"the salvage value with the grade envelope, the full grade schedule, and the measured expectation that proves disassembly is a sink, not a printer."}},{"method":"GET","path":"/api/boost/cost","query":"from=8..23, to=9..24","summary":"orb cost to push a stat from one value to another","example":"/api/boost/cost?from=14&to=18","scenario":{"use":"to price the orb cost of raising a stat across the given range.","returns":"the total orbs and each per-step cost along the climb."}},{"method":"GET","path":"/api/drop","query":"stats=9-ints, class, seed?, override?","summary":"calculate the orb drop for slaying an enemy","example":"/api/drop?stats=12-14-10-11-13-16-12-14-11&class=elite","scenario":{"use":"to determine how many orbs a slain enemy yields, given its nine stats (each 8 to 24) and encounter class. Threat scaling, such as a 10,000-HP boss, is your math; multipliers scale the drop, not the stat block.","returns":"the rolled orb amount with the base drop, class multiplier, and variance laid bare, plus a guaranteedItem when override.guaranteedTier is set."}},{"method":"GET","path":"/api/drop/classes","summary":"encounter classes and their drop multipliers","scenario":{"use":"to learn the five encounter classes and the multiplier each bestows upon the base drop.","returns":"trash, veteran, elite, boss, and world-boss with multipliers 1, 3, 10, 50, and 250."}},{"method":"GET","path":"/api/traits/impact","query":"name, kind=advantage|disadvantage","summary":"deterministic stat modifier for a single trait","scenario":{"use":"to learn the exact stat modifier a trait name produces, for the hash is deterministic and does not vary.","returns":"the primary stat, its delta, the secondary stat if the tier warrants one, and the tier of the impact."}},{"method":"GET","path":"/api/traits/impacts","query":"kind=advantage|disadvantage","summary":"precomputed bulk trait impact map","example":"/api/traits/impacts?kind=advantage","scenario":{"use":"to obtain every trait pre-scored with its stat modifier in a single call.","returns":"each trait name with its tier and the primary and secondary deltas the hash has ordained."}},{"method":"GET","path":"/api/attributes","query":"stats=9-ints","summary":"derive 23 attributes from the 5 primary stats","example":"/api/attributes?stats=14-12-10-11-13-16-12-14-11","scenario":{"use":"to expand base stats into health, damage, speed, dodge, and the remaining derived attributes.","returns":"each of the twenty-three attributes with its computed value."}},{"method":"GET","path":"/api/attributes/spec","summary":"attribute formula spec","scenario":{"use":"to obtain the formula behind every derived attribute, that a client may recompute them locally.","returns":"the full formula table with base, primary coefficient, secondary coefficient, and the stats each attribute draws from."}},{"method":"GET","path":"/api/power","query":"stats=9-ints, level?, skills?=0..4","summary":"whole-character power rating from a reconciled stat block","example":"/api/power?stats=14-12-10-11-13-16-12-14-11&skills=2","scenario":{"use":"to grade a whole character as one canonical number, that a roster’s salary cap may be a sum instead of a recipe.","returns":"the power rating beside its maximum for the level, computed by the same formula the character sheet displays."}}]}