When Claude called a zero-argument tool like get_status, Agno's Anthropic adapter treated the empty input as nothing and left function.arguments out of the stored call. Replaying that history through an OpenAI model then failed, because OpenAI expects the field.
The adapter now serializes every tool input in both streaming and non-streaming responses, so an empty input is kept as "{}".
# Before: a zero-argument call was stored without arguments
{"id": "toolu_01", "type": "function", "function": {"name": "get_status"}}
# Now: the empty input is kept
{"id": "toolu_01", "type": "function", "function": {"name": "get_status", "arguments": "{}"}}Learn more about the Claude model in the documentation.
Frequently asked questions
When Claude called a tool with no arguments, the Agno Anthropic adapter left out function.arguments. OpenAI models expect that field, so replaying the history failed. Agno now stores the empty input as "{}".
Yes. Agno serializes every Claude tool input in both streaming and non-streaming responses, so zero-argument calls keep an arguments field and the history replays on any model.


