Strands Agents SDK v1.17.0 Release Notes
Features
Configurable Timeout for MCP Agent Tools - PR#1184
You can now set custom timeout values when creating MCP (Model Context Protocol) agent tools, providing better control over tool execution time limits and improving reliability when working with external MCP servers.
from datetime import timedelta
from strands.tools.mcp import MCPAgentTool
# Create MCP tool with custom 30-second timeout
mcp_tool = MCPAgentTool(
...,
timeout=timedelta(seconds=30)
)
agent = Agent(tools=[mcp_tool])This feature is especially useful when working with MCP servers that may have varying response times, allowing you to fine-tune timeout behavior for different use cases.
Bug Fixes
-
Swarm Handoff Timing - PR#1147
Fixed swarm handoff behavior to only switch to the handoff node after the current node completes execution. Previously, the switch occurred mid-execution, causing incorrect event emissions and invalid swarm state when tools were interrupted concurrently with handoff tools. -
LiteLLM Stream Parameter Validation - PR#1183
Added validation for thestreamparameter in LiteLLM to prevent TypeError whenstream=Falseis provided. The SDK now properly handles both streaming and non-streaming responses with clear error messaging. -
Optional MetadataEvent Fields - PR#1187
Fixed handling of MetadataEvents when custom model implementations omit optionalusageormetricsfields. The SDK now provides sensible defaults, preventing KeyError exceptions and enabling greater flexibility for custom model providers. -
A2A Protocol File Data Decoding - PR#1195
Fixed A2A (Agent-to-Agent) executor to properly base64 decode file bytes from A2A messages before passing to Strands agents. Previously, agents were receiving base64-encoded strings instead of actual binary file content.
All changes
- feat: allow setting a timeout when creating MCPAgentTool by @AnirudhKonduru in #1184
- fix(litellm): add validation for stream parameter in LiteLLM by @dbschmigelski in #1183
- fix(event_loop): handle MetadataEvents without optional usage and metrics by @dbschmigelski in #1187
- swarm - switch to handoff node only after current node stops by @pgrayy in #1147
- fix(a2a): base64 decode byte data before placing in ContentBlocks by @dbschmigelski in #1195
New Contributors
- @AnirudhKonduru made their first contribution in #1184
Full Changelog: v1.16.0...v1.17.0