tool-arg-defaults
Apply per-tool default kwargs to LLM-generated tool calls. Caller-supplied values always win. null is a real value, not "use the default".
Usage
use json;
use ToolDefaults;
let mut defaults = new;
defaults.register;
defaults.register;
// LLM only passed "q"
let merged = defaults.apply.unwrap;
// merged == {"q": "anthropic", "timeout": 30, "max_results": 10}
// Caller-supplied timeout wins
let merged = defaults.apply.unwrap;
// merged == {"q": "x", "timeout": 5, "max_results": 10}
Features
register(name, json_object)sets defaults for a toolapply(name, args, strict)merges defaults into caller-supplied args- Caller keys always win (including explicit
null) strict=trueraisesToolNotRegisteredErrorfor unknown toolsupdate/unregisterfor dynamic reconfiguration- Zero dependencies beyond
serde_json
License
MIT OR Apache-2.0