Release v0.6.103
·
4244 commits
to bf93df7d6b40d64f38a6f90ff428b26f5cca5170
since this release
fix(core/tools): an MCP schema without `required` requires nothing Pydantic omits `required` entirely when every argument is optional, which is how FastMCP writes most of a Python server's tools. Our Object serializer read an absent list as "every property is required", so the model was told `agent` needs all fifteen of its arguments and `mpc` all seventeen — 17 of the Hanzo server's 95 tools, measured by running their live schemas through the converter. JSON Schema reads an absent list as requiring nothing, so write that list where a server omits one. While in the same resolver: measure a scalar `type` against the same six types the union path already measures against, rather than against `!= "null"`. The list is named once and read by both, so they cannot disagree about what we can hold, and a type outside it degrades to an accept-all string instead of failing the whole tool it sits in.