{"version":1,"endpoints":[{"method":"GET","path":"/api","workspace":{"title":"Check the connection","description":"Confirm that Set is reachable before drawing an identity or building a game."},"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","workspace":{"title":"Explore the API","description":"Find each operation, its inputs, and what it returns. Use one primitive or compose a whole game."},"summary":"this document","scenario":{"use":"to discover every endpoint and its purpose without reading source.","returns":"the maintained surface map of methods, paths, query descriptions, summaries, scenarios, and workspace titles and descriptions."}},{"method":"GET","path":"/api/skill","workspace":{"title":"Build with Set","description":"Start with one character or learn how to bring Set’s generation, attributes, and economy into your game."},"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","workspace":{"title":"Build an orb economy","description":"Learn how crafting, stat prices, drops, and salvage fit into a progression loop you control."},"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","workspace":{"title":"Read the base stats","description":"Find the nine stats, their accepted bounds, and the order used to calculate attributes and drops."},"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","workspace":{"title":"Plan an equipment set","description":"Read each slot’s capacity and the attributes it can influence. A full set holds fifteen items."},"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 their advisory derived-attribute domains.","returns":"every equipment slot in canonical order with its capacity and derived-attribute domain."}},{"method":"GET","path":"/api/skills","workspace":{"title":"Explore character skills","description":"Browse the practices and distinctions a character can carry into your world."},"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","workspace":{"title":"Explore character advantages","description":"Find the strengths a character may inherit, then inspect their effects on base stats."},"summary":"all advantages","scenario":{"use":"to obtain the full advantages table for building trait pickers and character creation.","returns":"every named advantage from the trait pool, ready to be scored via /api/traits/impact."}},{"method":"GET","path":"/api/disadvantages","workspace":{"title":"Explore character disadvantages","description":"Find the flaws a character may inherit, then inspect their effects on base stats."},"summary":"all disadvantages","scenario":{"use":"to obtain the full disadvantages table for building flaw systems and challenge modifiers.","returns":"every named disadvantage from the trait pool, ready to be scored via /api/traits/impact."}},{"method":"GET","path":"/api/classes","workspace":{"title":"Explore character classes","description":"Browse the classes, their mainhand weapons, and the disciplines that define them."},"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","workspace":{"title":"Choose a status vocabulary","description":"Read the world’s named conditions and descriptions. Give them mechanics in your game."},"summary":"all status effects with descriptions","scenario":{"use":"to obtain the status-effect vocabulary for a game that defines its own effect mechanics.","returns":"effect names and descriptive prose; duration, magnitude, stacking, and resistance belong to the game."}},{"method":"GET","path":"/api/roll","workspace":{"title":"Check the generator connection","description":"Confirm that the generator route answers before requesting an item, equipment set, or character."},"summary":"generator health check","scenario":{"use":"to confirm the generator API is reachable before rolling.","returns":"the same greeting as /api."}},{"method":"GET","path":"/api/roll/item","workspace":{"title":"Roll an item","description":"Draw from the world’s weighted tables. Every item comes with its grade, material, and orb value."},"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","workspace":{"title":"Roll an equipment set","description":"Outfit a character with fifteen items. Inspect their grades, slot domains, and combined orb value."},"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","workspace":{"title":"Roll a character","description":"Bring forth a character with a class, traits, attributes, and a full set of equipment."},"query":"seed=uint32?, equipmentBonus=1|0|true|false? (default off)","summary":"roll a complete character with stats, traits, equipment, and derived attributes; seedable, single-flight","scenario":{"use":"to generate one character with its stats, equipment, traits, and derived values. Pass equipmentBonus=1 for the optional gear approximation; by default finalStats equals 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","workspace":{"title":"Appraise an item","description":"Read an item’s material grade, orb value, and the weighted factors that make its name rare."},"query":"indexes | rolls (19 in-range integers; mutually exclusive)","example":"/api/rarity?rolls=0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0","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","workspace":{"title":"Explore item grades","description":"Read the seven material grades from F through S and how they divide the material tables."},"summary":"tier definitions and grade ranges","scenario":{"use":"to learn the seven grade definitions from F through S and the boundaries between them.","returns":"seven grade descriptions and the material-rank counts for tool and wearable tables."}},{"method":"GET","path":"/api/modifiers","workspace":{"title":"Read an item’s power budget","description":"Find a graded budget and the channels suggested by an item’s name. Decide what that budget buys in your game."},"query":"indexes | rolls (19 in-range integers; mutually exclusive)","example":"/api/modifiers?rolls=0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0","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","workspace":{"title":"Plan item power","description":"Read the budget for each grade and the shared theme channels before defining equipment effects."},"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","workspace":{"title":"Price a material-grade floor","description":"Choose a target grade and read its orb price and maximum sampling budget."},"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","workspace":{"title":"Craft an item using orbs","description":"Craft one item. Spend more orbs to improve your chances of a better result."},"query":"tier=1..7 | orbs=N (positive integer; effective cap 100000), seed=uint32?, budget=positive-int? (tier only; effective cap 1000000)","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":"an enriched item and its slot breakdown, seed, snapshot, and effective inputs; orb crafts include combination/grade odds, exact actual-spend grade expectations, and score samples labeled by reference spend."}},{"method":"GET","path":"/api/salvage","workspace":{"title":"Appraise salvage","description":"Find an item’s orb return under the disassembly schedule. Your game decides when it can be redeemed."},"query":"indexes | rolls | tier=1..7 (mutually exclusive; omit all for the schedule)","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","workspace":{"title":"Price a stat increase","description":"Compare the orb costs of raising a stat, one point at a time, up to Perfect."},"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","workspace":{"title":"Price an enemy’s drop","description":"Use an enemy’s stats and encounter class to calculate an orb reward for a victory in your game."},"query":"stats=9-ints-in-8..24, class, seed=uint32?, override=JSON?","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 orb amount, seed, snapshot, base drop, class multiplier, and variance; a requested guaranteedItem includes salvage, with its requested floor, derived seed, budget, attempts, and cap outcome in guaranteedItemCraft."}},{"method":"GET","path":"/api/drop/classes","workspace":{"title":"Choose a drop class","description":"Compare the five encounter multipliers, from trash to world-boss, before pricing a reward."},"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","workspace":{"title":"Read a trait’s impact","description":"See which stats a named advantage or disadvantage changes, and by how much."},"query":"name, kind=advantage|disadvantage","example":"/api/traits/impact?name=Brave&kind=advantage","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","workspace":{"title":"Compare trait impacts","description":"Read every advantage or disadvantage with its stat deltas, ready for a character builder."},"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","workspace":{"title":"Derive character attributes","description":"Turn a reconciled stat block into health, stamina, damage, movement, and the other derived values."},"query":"stats=9-ints-in-8..24","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","workspace":{"title":"Read the attribute formulas","description":"Inspect the stats and coefficients behind every derived value, then calculate them in your game."},"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","workspace":{"title":"Rate a character","description":"Give a reconciled character one rating for your roster rules. Compare it with the maximum at your chosen level."},"query":"stats=9-ints-in-8..24, level=1..90071992547392?, 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."}},{"method":"GET","path":"/api/basic-lightweight-combat/skill","workspace":{"title":"Basic lightweight combat","description":"Experimental, optional combat rules for a game that needs a starting point."},"summary":"experimental combat skill; also /basic-lightweight-combat and /basic-lightweight-combat.md","scenario":{"use":"to adopt a small damage and initiative model when your game has no combat rules yet; skill-based games can ignore it.","returns":"a Markdown skill with formulas, attribute coverage, request examples, action-count semantics, and replay rules."}},{"method":"GET","path":"/api/basic-lightweight-combat","workspace":{"title":"Resolve experimental combat","description":"Calculate one attack or a window of action opportunities from reconciled stats."},"query":"mode=damage: attacker=<9>, defender=<9>, kind=physical|magical|action?, health?, stamina?, elapsedMs=0..30000?, seed=uint32?; mode=initiative: actors=JSON [{id,stats}] (1..128), startMs=integer?, durationMs=1..30000? (default 5000), end<=1000000000; rulesVersion?, contentVersion?","example":"/api/basic-lightweight-combat?mode=damage&attacker=16-16-16-16-16-16-16-16-16&defender=16-16-16-16-16-16-16-16-16&seed=42","summary":"optional stateless attack resolution or initiative order and move counts; explicitly experimental","scenario":{"use":"to resolve an attack or schedule turns using the optional fallback. Supply nine reconciled integer stats in 8..24; health and stamina remain in your game.","returns":"experimental and version stamps, effective inputs, damage and resource changes with random rolls, or chronological action opportunities and per-actor move counts. Moves are not grid distance or guaranteed attacks."}},{"method":"GET","path":"/api/basic-lightweight-combat/spec","workspace":{"title":"Read the combat formulas","description":"Inspect the experimental damage channels, stamina rules, initiative clock, and input limits."},"summary":"machine-readable experimental combat profile, formulas, limits, exclusions, and version stamps","scenario":{"use":"to implement or inspect the optional combat interpretation locally, including its limits and what it leaves to your game.","returns":"the rules version, content snapshot, stat order, damage kinds, formulas, stamina constants, initiative boundaries, exclusions, and guide links."}}]}