v0.14.0 — character tool-surface parity
Characters get first-class treatment on the tool surface. A client asking "which character suits an engineering build?" previously had to guess names one at a time — an observed 7 round-trips and 42 seconds. It's now one call.
Added
list_characters— survey characters byscaling_stat,wanted_tag,banned_item_group,special_effect,class_bonus_setorcan_start_with. Returns full records, not summaries, so no follow-upget_characteris needed;detail="summary"opts out.- Batch lookups —
get_weapon,get_itemandget_characternow acceptnameas a string or a list of strings, returning{"results": [...]}in order. One bad name doesn't fail the batch. starting_weapon_poolon every character record (schema v7 → v8).- Six character filter vocabularies in
get_filter_options.
Notes for consumers
scaling_statis a derived union — characters have no scaling-stat field. Matched records carry ascaling_matchobject naming which signal fired (positive gain modifier, positive flat bonus, or wanted_tag) so you can weigh matches yourself: Engineer{gain_pct: 25, flat: 10, wanted: true}is not the same as Technomage{wanted: true}. Characters penalised in a stat are excluded from matches.starting_weapon_poolis the run-start selection pool, not a fixed starting weapon. Most characters offer a dozen or more; Beast Master and Bull offer none. Only 46 of 62 weapons can ever start a run.- Backward compatible — passing a plain string to the three
get_*tools behaves exactly as in 0.13.0. Tool count 21 → 22. - Rebuild your dataset with
build_dataset.pyto pick up schema v8; the character tools needstarting_weapon_poolforcan_start_with.
Full changelog: v0.13.0...v0.14.0