v2.6.1

alibaba/MNNv2.6.1Apr 24, 2026by ysolanky

AI Summary

Adds prompt caching for Claude and a new Parallel MCP backend for web search capabilities.

Key Highlights

  • Claude Prompt Caching (Multi-Block) with configurable TTL
  • Parallel MCP Backend for web search via Parallel's public server
  • OpenAI model string mapping to OpenAIResponses

New Features

  • Multi-block prompt caching for Claude
  • Parallel MCPBackend for web search
  • OpenAI model string mapping

Full Release Notes

# Changelog

## New Features:

- **Claude Prompt Caching (Multi-Block):** Three Anthropic prompt caching enhancements, scoped to the Claude model (#7662):
    - New `system_prompt_blocks: List[SystemPromptBlock]` on `Claude` — each block has `text`, `cache`, and optional `ttl` (`"5m"` or `"1h"`) that overrides the model-level `extended_cache_time` flag per block.
    - New `cache_tools: bool` on Claude (Anthropic, AWS Bedrock, VertexAI). Adds `cache_control` to the last tool so the tool prefix is cached.
    - Deterministic tool ordering in `Model._format_tools` (sort by name), so request prefixes stay stable across runs and prompt caches actually hit. Applies across Anthropic, OpenAI, Gemini, and Bedrock.
- **Parallel MCP Backend:** Added `ParallelMCPBackend` as a new web backend for `WebContextProvider` (#7667). Talks to Parallel's public MCP server at `search.parallel.ai/mcp`, exposing `web_search` + `web_fetch` (compressed markdown output). Keyless by default; Bearer-auth via `PARALLEL_API_KEY` for higher rate limits; optional OAuth endpoint via `use_oauth=True`. Defaults to a 30s timeout (up from `MCPTools`' 10s) because `web_fetch` frequently runs longer on large pages.

## Improvements:

- **OpenAI Model String:** Mapped `"openai:"` model string prefix to `OpenAIResponses` (previously `OpenAIChat`). Added `"openai-chat:"` as a fallback for users who still need `OpenAIChat`. `Agent(model="openai:gpt-5.4")` now resolves to `OpenAIResponses(id="gpt-5.4")`.

## Bug Fixes:

- **A2A:** Pinned `a2a-sdk>=0.3.0,<1.0` in the release workflow. `a2a-sdk` v1.0 has breaking changes that need to be adopted in a follow-up.
- **Cookbook:**
    - Fixed outdated Redis cookbook docs - removed dependency install and setup commands that are no longer needed (#7615).
    - Fixed `output_schema` example to demonstrate `output_schema` with a Pydantic model (it was incorrectly using `output_model` with web search).
    - Fixed typo in `cookbook/05_agent_os/README.md` that referenced a non-existent `agno_agent.py` (corrected to `agno_assist.py`) (#7663).

## What's Changed
* chore: map "openai:" model string to OpenAIResponses by @kausmeows in https://github.com/agno-agi/agno/pull/7655
* fix typo in 05_agent_os readme by @asifshaikh in https://github.com/agno-agi/agno/pull/7663
* [cookbook] fix outdated docs for Redis by @edlng in https://github.com/agno-agi/agno/pull/7615
* feat: add ParallelMCPBackend for web search via Parallel MCP by @Mustafa-Esoofally in https://github.com/agno-agi/agno/pull/7667
* feat: multi-block prompt caching for Claude by @ysolanky in https://github.com/agno-agi/agno/pull/7662
* chore: Release v2.6.1 by @kausmeows in https://github.com/agno-agi/agno/pull/7666

## New Contributors
* @asifshaikh made their first contribution in https://github.com/agno-agi/agno/pull/7663
* @edlng made their first contribution in https://github.com/agno-agi/agno/pull/7615

**Full Changelog**: https://github.com/agno-agi/agno/compare/v2.6.0...v2.6.1