github strands-agents/harness-sdk mcp/v0.3.0

4 hours ago

mcp/v0.3.0

Auto-drafted from commits in mcp/v0.2.9..mcp/v0.3.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

🚀 Features

  • feat(mcp-ts)!: swap to @modelcontextprotocol/client 2.0 (#4093) (ab8ff46)
  • feat(bidi): require explicit model IDs for providers (#4525) (8732c7c)
  • feat(agent): add Agent.shutdown() for scope-based cleanup (#4519) (fec0427)
  • feat(defaults): opus 5 and high thinking by default (#4460) (c3fc5ff)
  • feat(site): launch the redesigned Strands website (#4446) (1fd2ad6)
  • feat: merge in the Strands harness (#4447) (4095cf5)
  • feat(bedrock): requestTimeout option on BedrockModel (#4408) (153c423)
  • feat(py): add mcp_router vended tool (#4252) (803a4d6)
  • feat(session-py): support snapshot session management for Graph and Swarm (#4240) (5d5ffd2)
  • feat(vended-tools): port handoff_to_user tool to TypeScript (#4382) (1004292)
  • feat(vended-tools): add handoff_to_user tool (#4348) (98b4977)
  • feat(bidi): distinguish audio deltas from complete content (#4366) (b14f1ba)
  • feat(models): select the bedrock-runtime endpoint from bedrock_mantle_config (#4360) (9a8349d)
  • feat(bidi): accept shared content blocks as input (#4331) (a9361c5)
  • feat(anthropic): non-clobbering seam for Anthropic-direct server-side tools (web search) (#3568) (a0cbf29)
  • feat(storage): add bm25 search strategy (#4079) (495d154)
  • feat(sandbox): include partial output in shell timeout errors (#4325) (bd4020f)
  • feat(vended-tools): port Python notebook improvements to TS (#4281) (6c79888)
  • feat(context-py): port strategy presets and agent rewire (#4282) (08ed4cf)
  • feat(context-ts): add context strategy presets + rewire defaults to use class (#4256) (a8b1b90)
  • feat(bidi): render live transcripts with audio output (#4287) (381ab48)
  • feat(vended-tools): add web_fetch tool for TypeScript (#4153) (f800228)
  • feat(context-py): add session manager integration (#4254) (bea15fe)
  • feat(bidi): add transcript completion events (#4230) (4ece5b0)
  • feat(bidi): share lifecycle hooks and add response completion hooks (#4280) (90a5a02)
  • feat: automatically use openAI prompt-cache keys from session id (#4083) (7462908)
  • feat(bidi): align model configuration and parameter overrides (#4255) (0d2beba)
  • feat(vended-tools): include exit_code in shell tool result (#4269) (1efa1ee)
  • feat(vended-tools): port notebook tool to Python (#4132) (545d9ed)
  • feat(bidi): simplify Google and OpenAI model configs (#4189) (6d4f61f)
  • feat(python): add backgroundTasks to Agent (#4226) (42e5a61)
  • feat: export context manager types as experimental (#4231) (ec6eb54)
  • feat: accept cache_config on Ollama, Writer, and SageMaker (#4232) (42aedfc)
  • feat(context-py): port stash integration (#4187) (a642b41)
  • feat(mcp): add prefix_with_server_name and continue_on_error defaults to load_servers (#4177) (def3be9)
  • feat(context-py): port offloading stratgies (#4146) (e3f3ee4)
  • feat(bidi): add AudioCapable and typed model config (#4144) (d835251)
  • feat(mcp-py): relax mcp version to <2.2 (#4151) (24e556b)
  • feat(context-manager): add session support for L1 (#4118) (3f2ee2f)
  • feat(mcp/py): support SEP-2663 tasks (#4125) (83982c2)
  • feat(python): add internal in-process task engine / manager (#4115) (726478d)
  • feat!: require Node.js 22+, drop Node 20 support (#4145) (24bc5c3)
  • feat(py): add web_fetch vended tool (#4001) (8cd82e6)
  • feat(bidi): implement LocalAgent (#4108) (d1da8a0)
  • feat: add cache config to llama.cpp (#4127) (9be952f)
  • feat: support caching for vercel provider (#4055) (a02c1db)
  • feat(mcp-py): extend MRTR to prompts and resources, scope hand-sent cancel to 1.x (#4121) (582bb48)
  • feat(mcp-py): refresh tools on list-changed notifications for 2.x (#4112) (27a30e0)
  • feat(mcp-py): added MRTR input-required support for 2.x (#4094) (47b9dad)
  • feat(bidi): add reconnect() for openai (#4104) (48d360d)
  • feat(agent): add LocalAgent protocol (#4091) (577a9d6)
  • feat(models): add tools_ttl to CacheConfig and deprecate cache_tools (#3893) (#3985) (8e403d7)
  • feat(mcp): added call_tool support for 2.x (#4090) (b0ff900)
  • feat(context-manager): add L1 stash for durable storage of offloaded content (#3924) (1f059ff)
  • feat(bidi): add reconnect() for gemini google live (#4078) (c1a8884)
  • feat(ts): porting classifier routing strategy from python (#3987) (f2f15f4)
  • feat(py): support multiple continuation inputs (#3953) (4705f0c)
  • feat(ts): add backgroundTasks to Agent (#4026) (c1d5e4e)
  • feat(mcp): added server/discover for SEP-2575 (#3821) (00dd3c5)
  • feat: mcp v2 compatible changes under a flag (#3708) (534692a)
  • feat(storage): add QmdSearchStrategy with BM25 full-text search (#3897) (3d15419)
  • feat(models): add cache_config to Mistral (#3986) (eabcb13)
  • feat(bidi): proactive session reconnect for bidi session (#3874) (23d39ac)
  • feat(ts): add internal BackgroundTaskManager interface + InProcessTaskManager impl (#3876) (45bcea8)
  • feat(bedrock): support API key authentication (#3601) (01a5aad)
  • feat(ts): add model routing (#3903) (f861b33)
  • feat(python): add session_id property to Agent (#4007) (1e5ff58)
  • feat(python): inject an external cancellation signal into agent invocations (#3999) (726b71a)
  • feat(typescript): add sessionId getter to Agent (#4000) (130633f)
  • feat(memory-py): add FileMemoryStore (#3925) (5181133)
  • feat(routing): add configurable classifier strategy (#3846) (90e0586)
  • feat(ts): add internal InProcessTaskEngine (#3838) (f40adf0)
  • feat: add strands-xa11y to integrations catalog (#3933) (4311be5)
  • feat(models): add cache_key to CacheConfig for key-routed cache providers (#3949) (f34de8c)
  • feat(memory-ts): export key-aware extractor and make it model-configurable (#3948) (25a8ae6)
  • feat(catalog): add TealTiger governance pluginAdd strands-tealtiger plugin configuration (#3906) (243646d)
  • feat: add context manager offloading strategies (#3505) (bc37995)
  • feat(memory-ts): add FileMemoryStore (#3825) (baca68e)
  • feat(typescript): add audio content blocks (#3865) (a1e880a)
  • feat(python): add audio content blocks (#3862) (7f9a0b8)
  • feat(ts): thread per-call model through InvokeModelStage (#3875) (70cafa5)
  • feat(bidi): add echo suppression support (#3580) (3547e88)
  • feat(ts): support multiple continuation inputs (#3837) (c186207)
  • feat(site): add /community/ editorial hub and 14-lesson course (#3520) (0b46c84)
  • feat(memory): support min/max score filtering in Bedrock knowledge base store (#3726) (9137149)
  • feat(ci): count only complexity a PR adds, in both SDKs (#3771) (a129c34)
  • feat(catalog): add band (#3843) (b049710)
  • feat(site): add strands-dynamodb-storage to the catalog and tier compat-layer providers (#3830) (b155814)
  • feat(ts): add execution-scoped cancellation to ToolContext (#3807) (0ca278c)
  • feat(site): built-in SDK integrations and maintainer tiers in the catalog (#3766) (766e4f4)
  • feat: add injected content behind cache points (#3704) (d2567ce)
  • feat(site): expire New sidebar badges 30 days after addedDate (#3815) (ef2dbe5)
  • feat: add after tool call duration (#3589) (47d9b2f)
  • feat(py): add agent-as-tool delegation (#3346) (26ba078)
  • feat(mcp): add client OAuth authentication for streamable HTTP (#3554) (48123d7)
  • feat(mcp): surface tool annotations in ToolSpec (#3528) (5ef6ab7)
  • feat(anthropic): enable prompt caching via cache_config and cache_tools (#3571) (d2d1cd2)
  • feat(model-routing): add ModelRouter and accept it via Agent(model=) (#3474) (26770e1)
  • feat(catalog): add strands-github-storage integration (#3750) (7f19592)
  • feat(storage-py): add top level storage (#3743) (0b296c3)
  • feat(middleware): add AgentStreamStage with middleware-initiated interrupts (#3594) (792afbd)
  • feat(ts): support appending to notebooks (#3459) (1a06dff)

🐛 Fixes

  • fix(mcp-server): migrate off removed mcp.server.fastmcp for mcp 2.x compat (#4547) (18becd7)
  • fix: simplify and clarify CLI UX; fix bugs (#4548) (43b15b7)
  • fix(hitl): reject non-boolean classifier decisions (#4538) (08f5bdd)
  • fix(site): render search overlay correctly on standalone pages (#4529) (3cff1be)
  • fix(cli): align @strands-agents/sdk range with harness (fixes interventions instanceof crash) (#4530) (d13c214)
  • fix(cli): improve onboarding and terminal responsiveness (#4518) (2db4074)
  • fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e)
  • fix(cli): install provider SDKs with the CLI (#4508) (91a4478)
  • fix(sandbox): preserve UTF-8 across stream chunk boundaries (#4157) (20231cb)
  • fix(mcp-py): send auth flow requests as yielded and strip decoded framing headers (#4233) (f4567bf)
  • fix(harness): let an explicit web_search: 'exa' win over native search (#4491) (523d4d0)
  • fix(harness): default effort back to 'auto' so no-reasoning models resolve (#4473) (98547f1)
  • fix(cli): depend on the published harness in exported projects (#4478) (8ecf1eb)
  • fix(harness): align Node requirement and default model docs (#4469) (1f08ea6)
  • fix(context-ts): accept a ContextManager instance in Agent contextManager (#4459) (9248cab)
  • fix(tools): stop schema normalization from mutating caller-owned specs (#4426) (5e46a48)
  • fix(agent-ts): keep only text when re-roling a summary as a user message (#4421) (0f4a99c)
  • fix(agent-py): keep only text when re-roling a summary as a user message (#4402) (16ddba4)
  • fix(memory-py): make MemoryStore optional methods instantiable under type checkers (#3966) (54ca0be)
  • fix(openai): surface prompt-cache write tokens on Chat Completions (#4361) (59fa749)
  • fix(ci): pin the strands command to the commit it was issued against (#4393) (539c212)
  • fix(interventions): propagate handler-raised interrupts regardless of onError (#4373) (f505f82)
  • fix(interventions): propagate handler-raised interrupts regardless of on_error (#4372) (45777ec)
  • fix(ts): interrupt retry backoff on cancellation (#4291) (e7fd22b)
  • fix(agent): reject unrecognized limits keys instead of silently applying no cap (#4356) (3bbfb60)
  • fix(agent): reject unrecognized limits keys instead of silently applying no cap (#4355) (534e8b6)
  • fix: deliver background results through the registered management tool (#4347) (45c2ffd)
  • fix(agent): make AgentResult.to_dict JSON-serializable with bytes (#4313) (39da4bb)
  • fix(python): force structured output retry by tool name (#4263) (f627f54)
  • fix(mistral): preserve image blocks in requests (#4200) (8423dd3)
  • fix(bidi): align reference semantics with Agent and Model (#4286) (0a26e12)
  • fix(skills-py): avoid leaking YAML parse error and dropping valid ski… (#4192) (9663bcf)
  • fix(bidi): clean up CRT streams on shutdown (#4253) (7bda6c7)
  • fix(models): route Bedrock Mantle openai.gpt-6-* to /openai/v1 (#4267) (056f325)
  • fix(session): filter malformed immutable snapshot IDs (#4199) (6d6c8fc)
  • fix(telemetry): use semantic system instructions for agent spans (#4222) (e5ebbd6)
  • fix(models): resolve nested Bedrock model prefixes (#4221) (21b27d4)
  • fix(context): fix various context manager parity items (#4228) (bebf3e8)
  • fix(openai): emit tool results before user text to preserve tool_use/tool_result adjacency (#4234) (5f636bb)
  • fix(file-editor): stop str_replace and insert from expanding tabs on the write path (#4182) (332a148)
  • fix: handle empty input for zero-argument tools without warning (#4195) (f86a170)
  • fix(context-offloader): preserve non-bytes image/document blocks (#4017) (#4059) (0bce4ed)
  • fix(vercel): emit tool results before user text to preserve tool_use/tool_result adjacency (#4138) (3b4ca85)
  • fix(session): remove orphaned toolResults at any index, not only the first (#4154) (ca188fe)
  • fix(mcp-py): added httpx2 adapter (#4183) (c956822)
  • fix: gate the deprecated cache_tools point on the resolved cache strategy (#4186) (55803bc)
  • fix(typescript): remove @tobilu/qmd from optional dependencies (#4178) (6cdd21b)
  • fix(bidi): rename reconnect to restart (#4143) (34d0362)
  • fix(openai): report max_tokens when a Responses function call is cut off (#4139) (4bddde6)
  • fix(mcp-py): resolve the OAuth scope keyword rename on mcp 2.x (#4147) (61deac5)
  • fix(bidi): internal renames for bidi constants and private class (#4140) (10a9b37)
  • fix(ts): close the model invoke span when the consumer breaks the stream (#3898) (2c18d8f)
  • fix(storage): reject backslashes in storage keys (#4126) (d00fed6)
  • fix(bedrock): handle missing reasoningText in non-streaming conversion (#4124) (26ee1a1)
  • fix: include cached tokens in input_tokens (#4080) (33f139b)
  • fix(sagemaker): parse each SSE event within a PayloadPart (#4036) (f51718e)
  • fix(bidi): bedrock nova sonic reconnect (#4082) (7b0f874)
  • fix(ts-telemetry): close cycle telemetry when the stream iterator exits early (#4054) (d51ad20)
  • fix(mcp): pass list pagination as params for the mcp 2.x version (#3984) (7cec80d)
  • fix(python): close agent trace span on BaseException cancellation (#4013) (ed05dcf)
  • fix(file-editor): stop str_replace and insert from rewriting untouched bytes (#4014) (e448bea)
  • fix: count cached tokens in context-size and compaction baseline (#3886) (a6c2e5e)
  • fix(ci): treat empty integration test reports as a no-op (#4006) (8f795c3)
  • fix(ts): support content blocks in AfterToolsEvent.endTurn and simplify delegation (#3995) (f1f58c7)
  • fix(python): simplify agent delegation by making end_turn accept content blocks (#3961) (4a23c8f)
  • fix: forward cancellation signal to OpenAI (#3936) (24094c1)
  • fix(telemetry): emit semconv-compliant cache usage attributes (#3964) (5cadef4)
  • fix(bedrock): detect Mantle context overflow errors (#3973) (6c01dee)
  • fix: prevent in-place mutation of message history in normalizer (#2326) (afc5602)
  • fix(openai): append the format to message document filenames (#3912) (8321140)
  • fix(bidi): use shared Google API key in integration test (#3977) (db582b9)
  • fix(test-infra): grant Bidi integration test permissions (#3975) (d87e00f)
  • fix(docs): address post-merge review comments on storage page (#3976) (574b984)
  • fix(llamacpp): yield trailing usage metadata chunk after finish_reason (#3902) (#3955) (08d71e5)
  • fix(ci): restore always() in upload-metrics if guard (#3970) (b730949)
  • fix: harden mantle routing integ tests (#3957) (91d5274)
  • fix: convert JSON content blocks to text for Amazon Nova models in tool results (#1985) (5204f76)
  • fix: harden vercel document test (#3958) (7b42cf9)
  • fix(models/bedrock): redact blocked content when guardrail trace is disabled (#3772) (cab36d0)
  • fix(models): warn and skip cachePoint message blocks instead of raising (#3947) (36289b8)
  • fix: count Gemini tool-use tokens as input and thinking tokens as output (#3892) (aac15db)
  • fix(catalog): update strands-tealtiger to integrationType: intervention (#3921) (44c826d)
  • fix(bedrock)!: cache system prompt in auto mode (#3681) (697c833)
  • fix(multiagent): accumulate cache token counters in Graph and Swarm (#3884) (606e1b8)
  • fix: fix failing unit tests for bedrock caching (#3887) (2b6af5a)
  • fix: read prompt_tokens_details cache reads in TS OpenAI Chat (#3885) (2b2d9bd)
  • fix(bidi): failing tests (#3883) (35eef8c)
  • fix(bidi): emit gemini usage metadata alongside content events (#3725) (4654a6c)
  • fix(plugins): preserve initialization failures (#3482) (e09d4d6)
  • fix(site): set catalog addedDate values from actual git history (#3864) (7f37881)
  • fix(anthropic): raise on unsupported document and image formats instead of sending undeliverable requests (#3790) (651f771)
  • fix(bedrock): inherit cache_config ttl on an untimed tools cache point (#3858) (8bd807d)
  • fix(openai): classify Bedrock Mantle context-overflow errors (#3722) (333885b)
  • fix(bedrock): omit falsy cache point TTLs (#3799) (27fccbf)
  • fix(build): include strandly workspace in root build and type-check (#3804) (1cba4a9)
  • fix(bedrock-kb): unwrap NumericValue metadata back to the stored number (#3655) (234ede9)
  • fix(site): rebuild the test content snapshot when content changes (#3773) (7c266b3)
  • fix(anthropic): deliver url-source images instead of silently dropping them (#3792) (8c3b210)
  • fix(anthropic): throw on undeliverable document blocks instead of silently dropping them (#3786) (a2ac118)
  • fix(streaming): log warning when tool input JSON is malformed (#2054) (2e11e73)
  • fix(bedrock/py): retry incompatible tool-result turns (#3622) (1114e8b)
  • fix(ts): abort in-flight Bedrock requests on cancellation (#3337) (2c6c531)
  • fix(site): keep root lockfile bumps out of the other language's changelog (#3717) (d73ed03)
  • fix(test): Move count_tokens fixture to gemini-3.1-flash-lite (#3763) (93b6774)
  • fix(models/gemini): emit thought signature as its own reasoning delta (#3306) (9a020b7)
  • fix(openai): send tool-result documents as file_data, not file_url (#3674) (20ecff5)
  • fix(context-offloader): report retrieval failures as tool errors (#3680) (d723329)
  • fix(conversation): trim at complete tool pairs (#3447) (13990f0)
  • fix(test): move count_tokens fixture off retired gemini-2.0-flash (#3755) (86b98f6)
  • fix(vended-tools): keep the pre-rename name on the deprecated bash aliases (#3751) (679665f)
  • fix(bidi): update bidi google-genai version floor (#3740) (5f357ae)
  • fix(bedrock): honor a cache point placed in the last user message (#3677) (d69941a)
  • fix(openai): send document content as file_data on the Responses API (#3576) (ff73bd9)

♻️ Refactoring

  • refactor(bidi): adopt production component names (#4444) (d6e9571)
  • refactor(bidi): standardize owner-package imports (#4369) (d5f064f)
  • refactor(bidi): separate audio buffering and processing modules (#4310) (7a62450)
  • refactor(bidi): refine model audio configuration (#4303) (a1e7e4c)
  • refactor(bidi): rename model configuration validator (#4297) (a04273c)
  • refactor(python): share repository session methods through LocalAgent (#4257) (08cc6e7)
  • refactor(bidi): make BidiModel extend Model (#4081) (df837aa)
  • refactor(bidi): refine audio processing configuration (#3952) (1872856)
  • refactor(bidi): rename model providers (#3956) (3f1e99b)
  • refactor(python): port pending tool execution state (#3894) (29dfce6)
  • refactor(site): consolidate src/utils into src/util (#3777) (6ff1d97)
  • refactor(vended-tools): treat bash as its own deprecated tool (#3756) (e4d57c1)

📚 Documentation

  • docs(harness): add versioning policy for Strands harness and the CLI (#4535) (2c49c9c)
  • docs: add authorship to Strands harness (#4521) (adb9c24)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.57.0 (#4517) (880c5bd)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.19.0 (#4516) (68cf9d2)
  • docs: use Strands wordmarks in package READMEs (#4475) (42c4c42)
  • docs: remove stale test issue references (#4467) (1e2d99d)
  • docs: update README badges and resource links (#4477) (4d376d8)
  • docs(blog): update deployment providers and install instructions (#4466) (ada9513)
  • docs: refresh README with the Strands wordmark (#4462) (7b2e050)
  • docs(fix): Strands CLI and some text nits (#4457) (ec0bdb9)
  • docs: fix broken link (#4454) (431d137)
  • docs(blog): add "Introducing Strands Harness" post (#4445) (f28adcd)
  • docs(catalog): add Pushary customer approvals (#4346) (a95bf76)
  • docs: add DeepKeep integration to catalog (#3996) (57ae56c)
  • docs: add OrcaRouter model provider integration (#4057) (ae1bceb)
  • docs(mcp): document OAuth and server configuration (#4368) (2706860)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.15.0 (#4022) (a59b124)
  • docs(changelog): sync strands-agents/harness-sdk backfill (#4025) (69a156d)
  • docs(observability): add third-party backends section to traces (#4358) (e384825)
  • docs(changelog): sync strands-agents/evals backfill (#4357) (1883e89)
  • docs(context-manager): split into modes, strategies, and presets pages (#4336) (af902b6)
  • docs(context-management): update to ContextManager strategy API (#4332) (d1e1d0a)
  • docs(blog): add framework-agnostic evaluation post (#4114) (8709dd7)
  • docs: ai usage reflection blog (#4148) (1ede04b)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.55.1 (#4259) (66101c7)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.55.0 (#4238) (57d0705)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.17.0 (#4239) (1317a43)
  • docs: add Lelu to the integrations catalog (#4196) (b31169e)
  • docs: blog post on hitting 99.95% on ARC-AGI-3 with Strands harness (#4048) (e5b6b6d)
  • docs: add model routing guide (#4092) (f271cab)
  • docs: recommend snapshot session manager (#4116) (85d3b88)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.16.0 (#4085) (1adf5f1)
  • docs: add mem0-strands (memory-store) (#4003) (5bf5d66)
  • docs(site): name the SDK and install packages on agent-retrieved pages (#4044) (9062527)
  • docs(blog): add Agents for Humans hackathon challenge post (#3927) (02bbf0a)
  • docs(design): align 0016 with shipped ClassifierStrategy (#4046) (717f7e4)
  • docs: lead README and llms.txt with when to choose Strands (#4045) (3289148)
  • docs: blog post on Strands Robots networking and the Model Hardware Standard (#4024) (1941a72)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.54.0 (#4023) (b506d6a)
  • docs(cedar): make environment-gating example fail closed (#3697) (4feef91)
  • docs(team): record decision on null vs undefined input handling (#3889) (c0f0456)
  • docs(evals): add model-output chaos end-to-end example (#3827) (c3c3881)
  • docs(storage): add agent-level storage to storage concept page (#3971) (ae31078)
  • docs(site): detail session, agent, and concurrency limitations (#3545) (992e106)
  • docs: add TypeScript direct tool calling examples (#3559) (3163b35)
  • docs(community): add strands hackathon link (#3929) (bdba330)
  • docs: link messaging-platform support from the AG-UI page (#3803) (6eaba39)
  • docs(changelog): sync strands-agents/evals backfill (#3926) (1fd743a)
  • docs(changelog): sync strands-agents/harness-sdk backfill (#3920) (f6765ab)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.53.0 (#3919) (0310ac3)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.14.0 (#3917) (30a4376)
  • docs(catalog): point the aidress-mcp card at our Strands docs page (#3899) (a3a424f)
  • docs: add bidi observability documentation (#3739) (7a66861)
  • docs: list aidress-mcp in the integrations catalog (#3364) (53eb575)
  • docs(integrations): standardize OpenAI-compatible provider pages and add OpenRouter (#3829) (6120087)
  • docs: file-based memory store (#2895) (ff2bdd0)
  • docs(bedrock): move Mantle guide to the Bedrock page and document the Mantle config (#3831) (77e2151)
  • docs(production): add agent execution boundaries (#3457) (8fd742a)
  • docs: add note for disabling conversation managers (#3823) (cc99e8c)
  • docs(site): add agent-as-tool delegation docs (#3484) (21f13b5)
  • docs: add Figma-to-code blog post from CreativeX Novum team (#3744) (f827291)
  • docs(skills): update API review label names in strands-review skill (#3805) (56bfae4)
  • docs(catalog): add Python language to strands-github-storage (#3781) (ad83f74)
  • docs(team): require both decorator and log when deprecating a tool (#3599) (4eb468b)
  • docs(changelog): sync strands-agents/evals backfill (#3794) (ad6421e)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.13.0 (#3796) (66fef8d)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.52.0 (#3788) (be5f06a)
  • docs(community): add Neo4j Agent Memory session manager (#3757) (ea1027a)
  • docs(community): add Zep memory integration (#3742) (bf275c7)
  • docs: add prescriptive guidance for keeping cognitive complexity low (#3741) (cc7597c)
  • docs: add business KPI best practice to metrics page (#3720) (ae44fe9)

✅ Tests

  • test(mcp-py): pin native OTel trace continuity on the mcp 2.x version (#4131) (7edb796)
  • test(mcp): added mcp 2.x integ tests (#4129) (0b2597a)
  • test(bedrock): stabilize the cache-point-after-document integ test (#4119) (e13bfcd)
  • test: harden bedrock kb integ tests (#3954) (64d54a1)
  • test(openai): remove unwinnable rate-limit throttling integ test (#3891) (f79ce81)
  • test(site): compare content collections against files on disk (#3856) (ecc3dfc)
  • test: add integration testing for caching (#3793) (5b3e060)
  • test(models): retry inconclusive Mantle routing probes (#3747) (9eaaff4)

👷 CI

  • ci: add Python lint/format gate to pre-commit hook (#4528) (219dbf6)
  • ci(python): enforce formatting checks (#4526) (83a7f47)
  • ci(typescript): bump the production-minor group across 1 directory with 3 updates (#4344) (b2e8d1c)
  • ci(typescript): bump hono from 4.13.0 to 4.13.8 (#4386) (6be001d)
  • ci(typescript): bump fast-uri from 3.1.5 to 3.1.8 (#4385) (50549ae)
  • ci(docs): bump astro from 7.2.6 to 7.3.3 in /site (#4436) (8a2ad9b)
  • ci(docs): bump prettier from 3.9.6 to 3.9.8 in /site (#4434) (57a919b)
  • ci(docs): bump typedoc-plugin-markdown from 4.13.0 to 4.13.1 in /site (#4485) (d46cba8)
  • ci(docs): bump p-limit from 7.3.2 to 7.3.3 in /site (#4483) (f5e9d27)
  • ci: add @strands-agents/cli CI + npm release pipeline (#4468) (7586562)
  • ci(python): bump cedarpy from 4.8.7 to 4.12.0 in /strands-py (#4365) (bc98cb9)
  • ci: add @strands-agents/harness (harness-ts) npm release pipeline (#4455) (9ee621d)
  • ci: add strands-harness (harness-py) PyPI release pipeline (#4453) (42bd80c)
  • ci: add CI for the merged harness-py and harness-ts packages (#4450) (343bc73)
  • ci(docs): bump astro-og-canvas from 0.13.0 to 0.13.2 in /site (#4433) (46626cf)
  • ci(docs): bump vite from 8.2.2 to 8.3.0 in /site (#4319) (b14fef6)
  • ci(docs): bump node-html-parser from 9.0.2 to 9.0.4 in /site (#4264) (1b13f6c)
  • ci(typescript): add install-size guard to pack test (#4179) (e1f35db)
  • ci(docs): bump typedoc-plugin-markdown from 4.12.0 to 4.13.0 in /site (#4073) (aba32d9)
  • ci(docs): bump p-limit from 7.3.1 to 7.3.2 in /site (#4163) (103642b)
  • ci: move codecov config to repo root so Codecov discovers it again (#4174) (f4a3191)
  • ci: use strands-agents 4-core runner pool (#4141) (0918098)
  • ci: cancel superseded PR runs to reduce runner concurrency (#4134) (022e5a5)
  • ci(docs): bump node-html-parser from 9.0.1 to 9.0.2 in /site (#4099) (6d325ef)
  • ci(docs): bump markdown-it from 15.0.0 to 15.0.1 in /site (#4075) (d8f250d)
  • ci(docs): bump @astrojs/starlight from 0.41.7 to 0.41.9 in /site (#4072) (55cd79a)
  • ci(docs): bump astro from 7.2.2 to 7.2.6 in /site (#4030) (c2d2d4f)
  • ci(docs): bump @types/markdown-it from 14.1.2 to 14.2.0 in /site (#3908) (7848cd9)
  • ci(docs): bump satteri from 0.9.5 to 0.10.5 in /site (#3939) (82f5c6c)
  • ci(typescript): bump the production-minor group across 1 directory with 3 updates (#3942) (ec9c20a)
  • ci(docs): bump @types/jsdom from 28.0.3 to 30.0.0 in /site (#3878) (b6b252f)
  • ci(docs): bump vite from 8.2.1 to 8.2.2 in /site (#3943) (652ac97)
  • ci(typescript): bump the production-minor group across 1 directory with 2 updates (#3880) (44b4dff)
  • ci: bump dorny/paths-filter from 3.0.2 to 4.0.3 (#3907) (5ace6ad)
  • ci: refresh dependencies and isolate test results (#3900) (4ba5106)
  • ci(python): update mypy requirement from <2.0.0,>=1.15.0 to >=1.15.0,<3.0.0 in /strands-py (#3868) (0a1b266)
  • ci(python): scope portaudio install to a gated bidi job (#3890) (6ae356d)
  • ci(typescript): bump @aws-sdk/client-bedrock-runtime from 3.1106.0 to 3.1107.0 in the production-minor group (#3869) (af2fcac)
  • ci(docs): bump astro from 7.2.0 to 7.2.2 in /site (#3851) (003bd9f)
  • ci(docs): bump sanitize-html from 2.17.6 to 2.17.7 in /site (#3849) (b7e0e0a)
  • ci: bump astral-sh/setup-uv from 9.0.0 to 10.0.1 (#3848) (dd5c918)
  • ci(typescript): bump @aws-sdk/client-bedrock-runtime from 3.1105.0 to 3.1106.0 in the production-minor group (#3850) (8b32f28)
  • ci(typescript): bump @aws-sdk/client-bedrock-runtime from 3.1104.0 to 3.1105.0 in the production-minor group (#3816) (3e3859e)
  • ci(typescript): bump @aws-sdk/client-bedrock-runtime from 3.1097.0 to 3.1104.0 in the production-minor group (#3801) (6fbb686)
  • ci(python): update litellm requirement from <=1.95.0,>=1.75.9 to >=1.75.9,<=1.96.0 in /strands-py (#3775) (928bc00)
  • ci(anthropic): re-enable anthropic integration tests (#3783) (1c45a8b)
  • ci(docs): bump markdown-it from 14.3.0 to 15.0.0 in /site (#3605) (243f779)
  • ci(docs): bump js-yaml from 4.3.0 to 4.3.1 in /site in the npm_and_yarn group across 1 directory (#3782) (d4129c3)
  • ci(docs): bump the npm_and_yarn group across 1 directory with 2 updates (#3670) (b487b9a)
  • ci(docs-preview): link catalog and standalone page changes in the preview comment (#3774) (c2df950)
  • ci(release): post release notes to the announcements discussion board (#3707) (cf4a68a)
  • ci(docs): bump astro from 7.1.6 to 7.2.0 in /site (#3732) (d77c163)
  • ci(docs): bump @astrojs/starlight from 0.41.6 to 0.41.7 in /site (#3731) (80817ee)
  • ci(docs): bump vite from 8.2.0 to 8.2.1 in /site (#3733) (96c7350)
  • ci: bump dorny/paths-filter from 4.0.2 to 4.0.3 (#3729) (f2a8cb4)

🔧 Chores

  • chore(harness-ts): lift the @strands-agents/sdk <1.18.0 cap (#4520) (15c42ff)
  • chore: remove duplicate docs-strands-command workflow (#4380) (3199382)
  • chore(bidi): upgrade pywebrtc audio to 0.2 (#4149) (2acc974)
  • chore(python): deprecate LlamaAPI model provider (#4011) (36c9e41)
  • chore(python): update Bidi Bedrock dependencies (#3997) (6471283)
  • chore(bidi): consolidate development configuration (#3960) (d12b7b8)
  • chore(site): refresh catalog stats (#3847) (b10c261)
  • chore: remove vestigial strandly workspace (#3806) (0d7b218)
  • chore(site): refresh catalog stats (#3728) (e69f8f2)
  • chore: skipped mcp otel instrumentation for mcp v2 (#3611) (dbc97c7)

🔖 Other

  • Docs/blog deploy and install updates (#4474) (1da0d15)
  • Rename file number appropriately for design doc 0018-shared-agent-model-types.md (#4376) (cf9c8a5)
  • feat(bidi) compress event queues to be one event queue for bidi lifecycle events (#4173) (562ada4)
  • design: propose shared agent and model types (#3855) (fba4701)
  • style(python): apply ruff formatting (#3866) (2a4fc5d)

Don't miss a new harness-sdk release

NewReleases is sending notifications on new releases.