Description
<div align="center"> <div> <a href="https://strandsagents.com"> <img src="https://strandsagents.com/latest/assets/logo-github.svg" alt="Strands Agents" width="55px" height="105px"> </a> </div> <h1> Strands Agents </h1> <h2> A model-driven approach to building AI agents in just a few lines of code. </h2> <div align="center"> <a href="https://github.com/strands-agents/sdk-python/graphs/commit-activity"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/strands-agents/sdk-python"/></a> <a href="https://github.com/strands-agents/sdk-python/issues"><img alt="GitHub open issues" src="https://img.shields.io/github/issues/strands-agents/sdk-python"/></a> <a href="https://github.com/strands-agents/sdk-python/pulls"><img alt="GitHub open pull requests" src="https://img.shields.io/github/issues-pr/strands-agents/sdk-python"/></a> <a href="https://github.com/strands-agents/sdk-python/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/strands-agents/sdk-python"/></a> <a href="https://pypi.org/project/strands-agents/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/strands-agents"/></a> <a href="https://python.org"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/strands-agents"/></a> </div> <p> <a href="https://strandsagents.com/">Documentation</a> β <a href="https://github.com/strands-agents/samples">Samples</a> β <a href="https://github.com/strands-agents/sdk-python">Python SDK</a> β <a href="https://github.com/strands-agents/tools">Tools</a> β <a href="https://github.com/strands-agents/agent-builder">Agent Builder</a> β <a href="https://github.com/strands-agents/mcp-server">MCP Server</a> </p> </div> Strands Agents is a simple yet powerful SDK that takes a model-driven approach to building and running AI agents. From simple conversational assistants to complex autonomous workflows, from local development to production deployment, Strands Agents scales with your needs. ## Feature Overview - **Lightweight & Flexible**: Simple agent loop that just works and is fully customizable - **Model Agnostic**: Support for Amazon Bedrock, Anthropic, Gemini, LiteLLM, Llama, Ollama, OpenAI, Writer, and custom providers - **Advanced Capabilities**: Multi-agent systems, autonomous agents, and streaming support - **Built-in MCP**: Native support for Model Context Protocol (MCP) servers, enabling access to thousands of pre-built tools ## Quick Start ```bash # Install Strands Agents pip install strands-agents strands-agents-tools ``` ```python from strands import Agent from strands_tools import calculator agent = Agent(tools=[calculator]) agent("What is the square root of 1764") ``` > **Note**: For the default Amazon Bedrock model provider, you'll need AWS credentials configured and model access enabled for Claude 4 Sonnet in the us-west-2 region. See the [Quickstart Guide](https://strandsagents.com/) for details on configuring other model providers. ## Installation Ensure you have Python 3.10+ installed, then: ```bash # Create and activate virtual environment python -m venv .venv source .venv/bin/activate # On Windows use: .venv\Scripts\activate # Install Strands and tools pip install strands-agents strands-agents-tools ``` ## Features at a Glance ### Python-Based Tools Easily build tools using Python decorators: ```python from strands import Agent, tool @tool def word_count(text: str) -> int: """Count words in text. This docstring is used by the LLM to understand the tool's purpose. """ return len(text.split()) agent = Agent(tools=[word_count]) response = agent("How many words are in this sentence?") ``` **Hot Reloading from Directory:** Enable automatic tool loading and reloading from the `./tools/` directory: ```python from strands import Agent # Agent will watch ./tools/ directory for changes agent = Agent(load_tools_from_directory=True) response = agent("Use any tools you find in the tools directory") ``` ### MCP Support Seamlessly integrate Model Context Protocol (MCP) servers: ```python from strands import Agent from strands.tools.mcp import MCPClient from mcp import stdio_client, StdioServerParameters aws_docs_client = MCPClient( lambda: stdio_client(StdioServerParameters(command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"])) ) with aws_docs_client: agent = Agent(tools=aws_docs_client.list_tools_sync()) response = agent("Tell me about Amazon Bedrock and how to use it with Python") ``` ### Multiple Model Providers Support for various model providers: ```python from strands import Agent from strands.models import BedrockModel from strands.models.ollama import OllamaModel from strands.models.llamaapi import LlamaAPIModel from strands.models.gemini import GeminiModel from strands.models.llamacpp import LlamaCppModel # Bedrock bedrock_model = BedrockModel( model_id="us.
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 1.36.0 | Imported from PyPI (1.36.0) | Low | 4/21/2026 |
| v1.36.0 | ## What's Changed * feat(hooks): accept callable hook callbacks in Agent constructor by @agent-of-mkmeral in https://github.com/strands-agents/sdk-python/pull/1992 * fix: handle missing optional fields in non-streaming citation conversion by @agent-of-mkmeral in https://github.com/strands-agents/sdk-python/pull/2098 * fix(telemetry): add common gen_ai attributes to event loop cycle spans by @giulio-leone in https://github.com/strands-agents/sdk-python/pull/1973 * fix(telemetry): use per-inv | High | 4/17/2026 |
| v1.35.0 | ## What's Changed ### Features #### Bedrock Service Tier Support β [PR#1799](https://github.com/strands-agents/sdk-python/pull/1799) Amazon Bedrock now offers service tiers (Priority, Standard, Flex) that let you control the trade-off between latency and cost on a per-request basis. `BedrockModel` accepts a new `service_tier` configuration field, consistent with how other Bedrock-specific features like guardrails are exposed. When not set, the field is omitted and Bedrock uses its def | Medium | 4/8/2026 |
| v1.34.1 | ## What's Changed * fix: fix type imcompatible by @JackYPCOnline in https://github.com/strands-agents/sdk-python/pull/2018 * fix: isolate langfuse env vars by @lizradway in https://github.com/strands-agents/sdk-python/pull/2022 * fix: restore explicit span.end() to fix span end_time regression by @zastrowm in https://github.com/strands-agents/sdk-python/pull/2032 * feat(context): track context tokens by @lizradway in https://github.com/strands-agents/sdk-python/pull/2009 **Full Changelo | Medium | 4/1/2026 |
| v1.34.0 | ## What's Changed * chore: remove Cohere from required integ test providers by @zastrowm in https://github.com/strands-agents/sdk-python/pull/1967 * feat: add AgentAsTool by @notowen333 in https://github.com/strands-agents/sdk-python/pull/1932 * feat: auto-wrap Agent instances passed in tools list by @agent-of-mkmeral in https://github.com/strands-agents/sdk-python/pull/1997 * feat(telemetry): emit system prompt on chat spans per GenAI semconv by @sanjeed5 in https://github.com/strands-agent | Medium | 3/31/2026 |
| v1.33.0 | Pins litellm<=1.82.6 to supply chain attack - [Sβupply Chain Attack in litellm 1.82.8 on PyPI](https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/) ## What's Changed * fix: summarization conversation manager sometimes returns empty response by @Unshure in https://github.com/strands-agents/sdk-python/pull/1947 * fix: remove agent from swarm test to get more consistency out of it by @Unshure in https://github.com/strands-agents/sdk-python/pull/1946 * fix: CRITICAL: Hard pin `lit | Medium | 3/24/2026 |
| v1.32.0 | ## What's Changed * fix(event-loop): ensure all cycle metrics include end time and duration by @stephentreacy in https://github.com/strands-agents/sdk-python/pull/1903 * fix: pin upper bound for mistralai dependency by @mkmeral in https://github.com/strands-agents/sdk-python/pull/1935 * fix: override end_turn stop reason when streaming response contains toolUse blocks by @atian8179 in https://github.com/strands-agents/sdk-python/pull/1827 ## New Contributors * @stephentreacy made their fi | Low | 3/20/2026 |
| v1.31.0 | ## What's Changed * feat: pass A2A request context metadata as invocation state by @mkmeral in https://github.com/strands-agents/sdk-python/pull/1854 * fix: s3session manager bug by @mehtarac in https://github.com/strands-agents/sdk-python/pull/1915 * fix(graph): only evaluate outbound edges from completed nodes by @giulio-leone in https://github.com/strands-agents/sdk-python/pull/1846 * fix(openai): always use string content for tool messages by @giulio-leone in https://github.com/strands-a | Low | 3/19/2026 |
| v1.30.0 | ## What's Changed * feat: add "anthropic" cache strategy to bypass model ID check by @kevmyung in https://github.com/strands-agents/sdk-python/pull/1808 * feat: serialize tool results as JSON when possible by @clareliguori in https://github.com/strands-agents/sdk-python/pull/1752 * fix: summary manager using structured output by @pgrayy in https://github.com/strands-agents/sdk-python/pull/1805 * feat(mcp): expose server instructions from InitializeResult on MCPClient by @ShotaroKataoka in ht | Low | 3/11/2026 |
| v1.29.0 | ## What's Changed * test: pin virtualenv to <21 for hatch bug by @clareliguori in https://github.com/strands-agents/sdk-python/pull/1771 * fix(telemetry): added latest semantic conventions as span attributes for langfuse by @poshinchen in https://github.com/strands-agents/sdk-python/pull/1768 * fix: preserve guardrail_latest_message wrapping after tool execution by @austinmw in https://github.com/strands-agents/sdk-python/pull/1658 * feat(conversation-manager): improve tool result truncation | Low | 3/4/2026 |
| v1.28.0 | ## What's Changed * fix: update region for agentcore in our new account by @afarntrog in https://github.com/strands-agents/sdk-python/pull/1715 * fix: remove test that fails for python 3.14 by @Unshure in https://github.com/strands-agents/sdk-python/pull/1717 * feat(hooks): support union types and list of types for add_hook by @Unshure in https://github.com/strands-agents/sdk-python/pull/1719 * feat: make pyaudio an optional dependency by lazy loading by @mehtarac in https://github.com/stran | Low | 2/25/2026 |
| v1.27.0 | ## What's Changed * feat: Propagate exceptions to AfterToolCallEvent for decorated tools (#1565) by @charles-dyfis-net in https://github.com/strands-agents/sdk-python/pull/1566 * feat(workflows): add conventional commit workflow in PR by @mkmeral in https://github.com/strands-agents/sdk-python/pull/1645 * fix: the A2AAgent returns empty AgentResult content by @afarntrog in https://github.com/strands-agents/sdk-python/pull/1675 * auto run review workflow on maintainer PR by @mehtarac in https | Low | 2/19/2026 |
| v1.26.0 | ## What's Changed * ci: bump aws-actions/configure-aws-credentials from 5 to 6 by @dependabot[bot] in https://github.com/strands-agents/sdk-python/pull/1632 * docs: add guidance on using Protocol instead of Callable for extensible interfaces by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/1637 * feat(mcp): Implement basic support for Tasks by @LucaButBoring in https://github.com/strands-agents/sdk-python/pull/1475 * fix(multiagent): set empty text part data in `parts` | Low | 2/11/2026 |
| v1.25.0 | ## Major Features ### A2AAgent: First-Class Client for Remote A2A Agents - [PR#1441](https://github.com/strands-agents/sdk-python/pull/1441) The new `A2AAgent` class makes it simple to connect to and invoke remote agents that implement the [Agent-to-Agent (A2A) protocol](https://github.com/google/a2a). `A2AAgent` implements the `AgentBase` protocol, so it can be called synchronously, asynchronously, or used in streaming mode just like a local `Agent`. It automatically discovers the remote | Low | 2/5/2026 |
| v1.24.0 | ## What's Changed * test: fix flaky openai structured output test by adding Field guidance by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/1534 * interrupts - multiagent - do not emit AfterNodeCallEvent on interrupt by @pgrayy in https://github.com/strands-agents/sdk-python/pull/1539 * ci: add workflow for lambda layer publish by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/870 * fix: Populate tool_args correctly for steering by @clareliguori in | Low | 1/29/2026 |
| v1.23.0 | ## Major Features ### Configurable Retry Strategy for Model Calls - [PR#1424](https://github.com/strands-agents/sdk-python/pull/1424) Agents now support customizable retry behavior when handling model throttling exceptions. The new `ModelRetryStrategy` class allows you to configure maximum retry attempts, initial delay, and maximum delay, replacing the previously hardcoded retry logic. ```python from strands import Agent, ModelRetryStrategy agent = Agent( model="anthropic.cl | Low | 1/21/2026 |
| v1.22.0 | ## Major Features ### MCP Resource Operations - [PR#1117](https://github.com/strands-agents/sdk-python/pull/1117) The MCP client now supports resource operations, enabling agents to list, read, and work with resources provided by MCP servers. This includes static resources, binary resources, and parameterized resource templates. ```python from strands.tools.mcp import MCPClient with MCPClient(server_transport) as client: # List available resources resources = client.list_r | Low | 1/13/2026 |
| v1.21.0 | ## Major Features ### Custom HTTP Client Support for OpenAI and Gemini - [PR#1366](https://github.com/strands-agents/sdk-python/pull/1366) The OpenAI and Gemini model providers now accept a pre-configured client via the `client` parameter, enabling connection pooling, proxy configuration, custom timeouts, and centralized observability across all model requests. The client is reused for all requests and its lifecycle is managed by the caller, not the model provider. ```python from str | Low | 1/2/2026 |
| v1.20.0 | ## Major Features ### Swarm Interrupts for Human-in-the-Loop - [PR#1193](https://github.com/strands-agents/sdk-python/pull/1193) Swarm multi-agent systems now support interrupts, enabling Human-in-the-Loop patterns for approval workflows and user interaction during agent execution. Interrupts can be triggered via BeforeNodeCallEvent hooks or directly within agent tools using ToolContext. ```python from strands import Agent, tool from strands.experimental.hooks.multiagent import Before | Low | 12/15/2025 |
| v1.19.0 | ## What's New - **Bidirectional Agents (Experimental):** This release introduces BidiAgent for real-time voice conversations with AI agents through persistent connections that support continuous audio streaming, natural interruptions, and concurrent tool execution. This experimental feature allows developers to build voice assistants and interactive applications with support for Amazon Nova Sonic, OpenAI Realtime API, and Google Gemini Live. - **Steering (Experimental):** Enables modular p | Low | 12/3/2025 |
| v1.18.0 | ## What's Changed * multi agent input by @pgrayy in https://github.com/strands-agents/sdk-python/pull/1196 * interrupt - activate - set context separately by @pgrayy in https://github.com/strands-agents/sdk-python/pull/1194 * In PrintingCallbackHandler, make the verbose description and counting⦠by @marcbrooker in https://github.com/strands-agents/sdk-python/pull/1211 * fix: fix swarm session management integ test. by @JackYPCOnline in https://github.com/strands-agents/sdk-python/pull/1155 | Low | 11/21/2025 |
| v1.17.0 | # Strands Agents SDK v1.17.0 Release Notes ## Features ### Configurable Timeout for MCP Agent Tools - [PR#1184](https://github.com/strands-agents/sdk-python/pull/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. ```python from datetime import timedelta from strands.tools.mcp import MCPAgentTool # Create MCP t | Low | 11/18/2025 |
| v1.16.0 | ## Major Features ### Async Hooks Support - [PR#1119](https://github.com/strands-agents/sdk-python/pull/1119) Hooks now support asynchronous callbacks, allowing your hook code to run concurrently with other async tasks without blocking the event loop. This is particularly beneficial for async agent invocations and scenarios where hooks perform I/O operations. ```python import asyncio from strands import Agent from strands.hooks import BeforeInvocationEvent, HookProvider, HookRegistry | Low | 11/12/2025 |
| v1.15.0 | ## Major Features ### SystemContentBlock Support for Provider-Agnostic Caching - [PR#1112](https://github.com/strands-agents/sdk-python/pull/1112) System prompts now support `SystemContentBlock` arrays, enabling provider-agnostic caching and advanced multi-prompt system configurations. Cache points can be defined explicitly within system content. ```python from strands import Agent from strands.types.content import SystemContentBlock # Define system content with cache points syste | Low | 11/4/2025 |
| v1.14.0 | ## Major Features ### Structured Output via Agentic Loop Agents can now validate responses against predefined schemas using JSON Schema or Pydantic models. Validation occurs at response generation time with configurable retry behavior for non-conforming outputs. ``` agent = Agent() result = agent( "John Smith is a 30 year-old software engineer", structured_output_model=PersonInfo ) # Access the structured output from the result person_info: PersonInfo = result.structure | Low | 10/29/2025 |
| v1.13.0 | ## What's Changed * feat: replace kwargs with invocation_state in agent APIs by @JackYPCOnline in https://github.com/strands-agents/sdk-python/pull/966 * feat(telemetry): updated semantic conventions, added timeToFirstByteMs into spans and metrics by @poshinchen in https://github.com/strands-agents/sdk-python/pull/997 * chore(telemetry): added gen_ai.tool.description and gen_ai.tool.json_schema by @poshinchen in https://github.com/strands-agents/sdk-python/pull/1027 * fix(tool/decorator): va | Low | 10/17/2025 |
| v1.12.0 | ## What's Changed * feat: Refactor and update tool loading to support modules by @Unshure in https://github.com/strands-agents/sdk-python/pull/989 * Adding Development Tenets to CONTRIBUTING.md by @Unshure in https://github.com/strands-agents/sdk-python/pull/1009 * Revert "feat: implement concurrent message reading for session managers (#897)" by @pgrayy in https://github.com/strands-agents/sdk-python/pull/1013 * feat(models): use tool for litellm structured_output when supports_response_sch | Low | 10/10/2025 |
| v1.11.0 | ## What's Changed * fix: GeminiModel argument in README by @tosi29 in https://github.com/strands-agents/sdk-python/pull/955 * tool - executors - concurrent - remove no-op gather by @pgrayy in https://github.com/strands-agents/sdk-python/pull/954 * feat(telemetry): updated traces to match OTEL v1.37 semantic conventions by @poshinchen in https://github.com/strands-agents/sdk-python/pull/952 * event loop - handle model execution by @pgrayy in https://github.com/strands-agents/sdk-python/pull/9 | Low | 10/8/2025 |
| v1.10.0 | ## What's Changed * feat: add optional outputSchema support for tool specifications by @vamgan in https://github.com/strands-agents/sdk-python/pull/818 * feat: add Gemini model provider by @notgitika in https://github.com/strands-agents/sdk-python/pull/725 * Improve OpenAI error handling by @mkmeral in https://github.com/strands-agents/sdk-python/pull/918 * ci: update sphinx-autodoc-typehints requirement from <2.0.0,>=1.12.0 to >=1.12.0,<4.0.0 by @dependabot[bot] in https://github.com/stran | Low | 9/29/2025 |
| v1.9.1 | ## What's Changed * feat: decouple Strands ContentBlock and BedrockModel by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/836 * fix: Invoke callback handler for structured_output by @zastrowm in https://github.com/strands-agents/sdk-python/pull/857 * fix: Update prepare to use format instead of test-format by @zastrowm in https://github.com/strands-agents/sdk-python/pull/858 * fix: add explicit permissions to auto-close workflow by @Unshure in https://github.com/strands | Low | 9/19/2025 |
| v1.9.0 | ## What's Changed * feat(telemetry): add cache usage metrics to OpenTelemetry spans by @vamgan in https://github.com/strands-agents/sdk-python/pull/825 * docs: improve docstring formatting by @waitasecant in https://github.com/strands-agents/sdk-python/pull/846 * ci: bump actions/setup-python from 5 to 6 by @dependabot[bot] in https://github.com/strands-agents/sdk-python/pull/796 * ci: bump actions/github-script from 7 to 8 by @dependabot[bot] in https://github.com/strands-agents/sdk-python/ | Low | 9/17/2025 |
| v1.8.0 | ## What's Changed * Moved tool_spec retrieval to after the before model invocation callback by @pghazanfari in https://github.com/strands-agents/sdk-python/pull/786 * fix(graph): fix cyclic graph behavior by @mkmeral in https://github.com/strands-agents/sdk-python/pull/768 * fix(models): filter reasoningContent in Bedrock requests using DeepSeek by @aryan835-datainflexion in https://github.com/strands-agents/sdk-python/pull/652 * docs: cleanup docs so the yields section renders correctly by | Low | 9/10/2025 |
| v1.7.1 | ## What's Changed * fix: don't emit ToolStream events for non generator functions by @zastrowm in https://github.com/strands-agents/sdk-python/pull/773 * fix(tests): adjust test_bedrock_guardrails to account for async behavior by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/785 * fix(doc): replace invalid Hook names in doc comment with BeforeInvocationEvent & AfterInvocationEvent by @deepyes02 in https://github.com/strands-agents/sdk-python/pull/782 * fix: Remove statu | Low | 9/5/2025 |
| v1.7.0 | ## What's Changed * feat: Implement typed events internally by @zastrowm in https://github.com/strands-agents/sdk-python/pull/745 * summarization manager - add summary prompt to messages by @pgrayy in https://github.com/strands-agents/sdk-python/pull/698 * feat: Use TypedEvent inheritance for callback behavior by @zastrowm in https://github.com/strands-agents/sdk-python/pull/755 * feat: claude citation support with BedrockModel by @theagenticguy in https://github.com/strands-agents/sdk-pytho | Low | 9/2/2025 |
| v1.6.0 | ## What's Changed * fix: fix non-serializable parameter of agent from toolUse block by @JackYPCOnline in https://github.com/strands-agents/sdk-python/pull/568 * Add .DS_Store to .gitignore by @vawsgit in https://github.com/strands-agents/sdk-python/pull/681 * feat(a2a): support A2A FileParts and DataParts by @jer96 in https://github.com/strands-agents/sdk-python/pull/596 * ci: update pre-commit requirement from <4.2.0,>=3.2.0 to >=3.2.0,<4.4.0 by @dependabot[bot] in https://github.com/strand | Low | 8/26/2025 |
| v1.5.0 | ## What's Changed * feature(graph): Allow cyclic graphs by @mkmeral in https://github.com/strands-agents/sdk-python/pull/497 * chore: request to include code snippet section by @poshinchen in https://github.com/strands-agents/sdk-python/pull/654 * feat: Add configuration option to MCP Client for server init timeout by @fhwilton55 in https://github.com/strands-agents/sdk-python/pull/657 * fix: Properly handle prompt=None & avoid agent hanging by @zastrowm in https://github.com/strands-agents/ | Low | 8/19/2025 |
| v1.4.0 | ## What's Changed * fix(telemetry): added mcp tracing context propagation by @poshinchen in https://github.com/strands-agents/sdk-python/pull/569 * Change max_tokens type to int to match Anthropic API by @vinc3m1 in https://github.com/strands-agents/sdk-python/pull/588 * feat: Add additional intructions for contributors to find issues that are ready to be worked on by @mehtarac in https://github.com/strands-agents/sdk-python/pull/595 * feat(a2a): configurable request handler by @jer96 in htt | Low | 8/8/2025 |
| v1.3.0 | ## What's Changed * fix(deps): pin a2a-sdk>=0.2.16 to resolve #572 by @minorun365 in https://github.com/strands-agents/sdk-python/pull/581 * chore: pin a2a to a minor version while it is still in beta by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/586 * fix: sessions code fence, a2a tests & lint by @theagenticguy in https://github.com/strands-agents/sdk-python/pull/591 * fix(event_loop): raise dedicated exception when encountering max toke⦠by @dbschmigelski in https: | Low | 8/4/2025 |
| v1.2.0 | ## What's Changed * Support for Amazon SageMaker AI endpoints as Model Provider by @dgallitelli in https://github.com/strands-agents/sdk-python/pull/176 * fix: Remove leftover print statement from sagemaker model provider by @mehtarac in https://github.com/strands-agents/sdk-python/pull/553 * [Feat] Update structured output error message by @Unshure in https://github.com/strands-agents/sdk-python/pull/563 * feat(mcp): retain structured content in the AgentTool response by @dbschmigelski in h | Low | 7/30/2025 |
| v1.1.0 | ## What's Changed * Update to use dedicated github logo by @zastrowm in https://github.com/strands-agents/sdk-python/pull/505 * deps(a2a): address interface changes and bump min version by @jer96 in https://github.com/strands-agents/sdk-python/pull/515 * ci: expose STRANDS_TEST_API_KEYS_SECRET_NAME to integration tests by @dbschmigelski in https://github.com/strands-agents/sdk-python/pull/513 * Don't re-run workflows on un/approvals by @zastrowm in https://github.com/strands-agents/sdk-pytho | Low | 7/24/2025 |
| v1.0.1 | ## What's Changed * Switch readme to use light logo for better display in github dark mode by @zastrowm in https://github.com/strands-agents/sdk-python/pull/475 * build(pyproject): update development status classifier by @awsarron in https://github.com/strands-agents/sdk-python/pull/480 * fix: enable parallel execution in graph workflow by @ahmetatalay in https://github.com/strands-agents/sdk-python/pull/485 * docs: Update README.md with Writer by @samjulien in https://github.com/strands-age | Low | 7/18/2025 |
| v1.0.0 | ## What's Changed * refactor(a2a): configurable host and port and remove excessive logging by @jer96 in https://github.com/strands-agents/sdk-python/pull/423 * models - bedrock - remove signaling by @pgrayy in https://github.com/strands-agents/sdk-python/pull/429 * feat(multiagent): Graph - support multi-modal inputs by @awsarron in https://github.com/strands-agents/sdk-python/pull/430 * deps(a2a): upper bound a2a sdk dep by @jer96 in https://github.com/strands-agents/sdk-python/pull/432 * | Low | 7/15/2025 |
| v0.3.0 | ## Breaking Changes * Model Providers: * OpenAI and LiteLLM model providers no longer accept base64 encoded images. These providers will now handle base64 encoding of image bytes automatically. See [issue #252](https://github.com/strands-agents/sdk-python/issues/252). * Model providers now implement asynchronous functions. Custom model providers must be updated accordingly. See [PR#306](https://github.com/strands-agents/sdk-python/pull/306). * The API interface for model provid | Low | 7/11/2025 |
| v0.2.1 | ## What's Changed This is a hotfix for v0.2.0 * tools - parallel execution - sleep by @pgrayy in https://github.com/strands-agents/sdk-python/pull/355 **Full Changelog**: https://github.com/strands-agents/sdk-python/compare/v0.2.0...v0.2.1 | Low | 7/4/2025 |
| v0.2.0 | ## Minor Version Bump to v0.2.0 For this minor version bump, we are introducing a number of backwards-incompatible changes. Leading up to the 1.0.0 release of the SDK, we are incrementally releasing backwards-incompatible changes to align with our vision of the 1.0.0 interface. These changes are meant to fix deficiencies that were part of our initial implementation, or to make Strands easier to understand and use. Below are a list of these changes, and steps to migrate your code if they affect | Low | 7/2/2025 |
| v0.1.9 | ## What's Changed * feat: add meter by @poshinchen in https://github.com/strands-agents/sdk-python/pull/219 * models - openai - images - b64 validate by @pgrayy in https://github.com/strands-agents/sdk-python/pull/251 * chore: Inline event loop helper functions by @zastrowm in https://github.com/strands-agents/sdk-python/pull/222 * feat: add structured output support using Pydantic models by @theagenticguy in https://github.com/strands-agents/sdk-python/pull/60 * fix: Emit warning that defa | Low | 6/24/2025 |
| v0.1.8 | ## What's Changed * Fix: Enable underscores in direct method invocations to match hyphens by @zastrowm in https://github.com/strands-agents/sdk-python/pull/178 * feat: implement summarizing conversation manager by @stefanoamorelli in https://github.com/strands-agents/sdk-python/pull/112 * chore: moved truncation logic to conversation manager and added should_truncate_results by @poshinchen in https://github.com/strands-agents/sdk-python/pull/192 * refactor: Disallow similar tool names in the | Low | 6/18/2025 |
| v0.1.7 | ## What's Changed * models - unsupported content types by @pgrayy in https://github.com/strands-agents/sdk-python/pull/144 * feat: Add CachePoint type definition to ContentBlock by @moritalous in https://github.com/strands-agents/sdk-python/pull/142 * [Docs] add meta copyright header by @seyeong-han in https://github.com/strands-agents/sdk-python/pull/153 * refactor: Update conversation manager interface by @Unshure in https://github.com/strands-agents/sdk-python/pull/161 * models - correct | Low | 6/9/2025 |
| v0.1.6 | ## What's Changed * style(callback_handler): fix docstring for PrintingCallbackHandler.__call__ by @awsarron in https://github.com/strands-agents/sdk-python/pull/126 * chore(tests): Add unit tests for user agent changes by @clareliguori in https://github.com/strands-agents/sdk-python/pull/125 * Increasing Coverage Message Processor : From 79% to 94% by @fede-dash in https://github.com/strands-agents/sdk-python/pull/115 * feat: Add non-streaming support to BedrockModel by @Unshure in https:// | Low | 5/30/2025 |
| v0.1.5 | ## What's Changed * models - openai - argument none by @pgrayy in https://github.com/strands-agents/sdk-python/pull/97 * docs(readme): add open PRs badge + link to samples repo + change 'Docs' to 'Documentation' by @awsarron in https://github.com/strands-agents/sdk-python/pull/100 * docs(readme): add logo by @awsarron in https://github.com/strands-agents/sdk-python/pull/101 * docs(readme): add logo, title, badges, links to other repos, standardize headings by @awsarron in https://github.com/ | Low | 5/26/2025 |
| v0.1.4 | ## What's Changed * fix: Updated GitHub Action to use GitHub native approvals by @yonib05 in https://github.com/strands-agents/sdk-python/pull/67 * models - litellm - capture usage by @pgrayy in https://github.com/strands-agents/sdk-python/pull/73 * fixing various typos in markdowns and scripts by @didier-durand in https://github.com/strands-agents/sdk-python/pull/74 * fix(docs): add missing quotation marks in pip install commands by @JackYPCOnline in https://github.com/strands-agents/sdk-py | Low | 5/23/2025 |
