Skip to content

Release v0.6.103

Choose a tag to compare

@zeekay zeekay released this 21 Aug 19:44
· 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.