@shinyaz

Strands Agents Structured Output internally works as a tool

When using Strands Agents SDK's Structured Output with a ConversionResult Pydantic model passed to structured_output_model, an unexpected tool name appeared in the metrics.

Output
tool_usage:
  get_exchange_rate: calls=1, success=1
  ConversionResult: calls=1, success=1

ConversionResult is counted as a tool. I didn't define this as a tool, so why does it show up in tool_usage?

Turns out Structured Output internally converts the Pydantic model into a tool specification and registers it with the LLM. The LLM outputs structured data using the same tool-calling mechanism, and the SDK validates it. So the agent loop goes: LLM → call get_exchange_rate → receive result → call ConversionResult tool → validation passes → done.

If you see a Pydantic model name in tool_usage during debugging, it's the Structured Output internals. You can also check call_count and error_count to monitor validation success rates and catch excessive retries.

Share this post

Shinya Tahara

Shinya Tahara

Solutions Architect @ AWS

I'm a Solutions Architect at AWS, providing technical guidance primarily to financial industry customers. I share learnings about cloud architecture and AI/ML on this site.The views and opinions expressed on this site are my own and do not represent the official positions of my employer.