v3.0.10

pascalorg/editorv3.0.10Sep 16, 2026by harshsinha03

Upgrading?

AI Summary

Adds support for Azure OpenAI Responses API and Elasticsearch vector database, enhances MCP configuration, and fixes numerous bugs related to readers, chunking, and Slack event handling.

Key Highlights

  • Added AzureOpenAIResponses model for Azure OpenAI deployments.
  • Added Elasticsearch vector database with hybrid search capabilities.
  • Enhanced MCP configuration with root_host, path, and path_aliases.
  • TextReader, MarkdownReader, and CSVReader now accept text streams.

Breaking Changes

  • CodingTools: run_shell is now opt-in and requires enable_run_shell=True.
  • PublicSurface: When using JWT auth, MCP now accepts only localhost by default.

New Features

  • Azure OpenAI Responses API integration.
  • Elasticsearch vector database support.
  • DocumentationMarkdown transform for Knowledge.sync_pages.
  • MCP Server Card JSON pretty-printing.

Full Release Notes

# Changelog

## **New Features:**

- **Azure OpenAI Responses**: Added `AzureOpenAIResponses` to use the Responses API with Azure OpenAI deployments. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/90_models/azure/openai/responses.py).
- **Elasticsearch**: Added `Elasticsearch` vector database with vector, keyword and hybrid search. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/07_knowledge/09_archive/vector_dbs/elasticsearch_db.py).
- **DocumentationMarkdown**: Added a `transform` for `Knowledge.sync_pages` that converts Mintlify and Fumadocs components into plain Markdown. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/27_public_pages/documentation_markdown.py).

## **Improvements:**

- **MCPConfig**: Added `root_host`, `path` and `path_aliases` to serve MCP on a dedicated hostname or a custom endpoint path.
- **MCP Server Card**: `/mcp/server-card` now returns pretty-printed JSON.

## **Bug Fixes:**

- **MCP Tools**: Preserve `AudioContent` from MCP tool results as audio artifacts.
- **Slack**: Deduplicate event retries by `event_id` instead of dropping them.
- **Remote Agents**: `RemoteAgent.role` and `RemoteTeam.role` are now properties that return the role instead of a bound method; use `.role`, not `.role()`.
- **Readers**: `TextReader`, `MarkdownReader` and `FieldLabeledCSVReader` now accept text streams.
- **PPTXReader**: Read text inside grouped shapes.
- **JSONReader**: `async_read()` now uses the chunking strategy's async `achunk()`.
- **Chunking**: Preserve newlines and tabs when cleaning text before chunking.
- **CSVReader**: `async_read()` keeps every data row across pages with `RowChunking(skip_header=True)`.
- **SitemapReader**: Keep filenames like `myindex.html` intact and continue discovery past an invalid `.xml.gz` sitemap.
- **Tools & Workflows**: Keep falsy values like `0`, `False` and `[]` in sync tool results and `Parallel` workflow step outputs.
- **agnoctl**: `agno connect` now reads and writes client configs as UTF-8 (agnoctl 0.2.1).
- **DynamoDB**: Serialize booleans as native `BOOL` values.

## **Breaking Changes:**

- **CodingTools**: `run_shell` is now opt-in (`enable_run_shell=True`), and restricted mode runs commands without a shell.
- **PublicSurface**: With `authorization=True` and `PublicSurface(mcp=True)`, MCP now accepts only localhost by default; add your domain to `MCPConfig(allowed_hosts=[...])`.

## What's Changed
* fix: read text from grouped shapes in PPTXReader by @devYRPauli in https://github.com/agno-agi/agno/pull/10037
* feat: add support for Elasticsearch vector database by @sannya-singal in https://github.com/agno-agi/agno/pull/10018
* [feat] Add Azure OpenAI Responses model by @rastagan-git in https://github.com/agno-agi/agno/pull/9841
* [fix] Accept text streams in FieldLabeledCSVReader by @n1uz1 in https://github.com/agno-agi/agno/pull/10020
* [fix] Preserve MCP AudioContent as audio artifacts by @devansh173 in https://github.com/agno-agi/agno/pull/10036
* fix: serialize booleans as BOOL instead of {"N": "True"} in DynamoDB storage by @Anai-Guo in https://github.com/agno-agi/agno/pull/9978
* [fix] Use UTF-8 for infra file helpers by @Ghraven in https://github.com/agno-agi/agno/pull/10113
* docs: fix broken external links in cookbook by @Shxiao101 in https://github.com/agno-agi/agno/pull/9980
* fix: pretty-print MCP server-card JSON by @ashpreetbedi in https://github.com/agno-agi/agno/pull/10084
* fix: detect public MCP access alongside JWT REST auth by @ashpreetbedi in https://github.com/agno-agi/agno/pull/10083
* feat: add optional documentation Markdown source transform by @ashpreetbedi in https://github.com/agno-agi/agno/pull/10094
* feat: configure MCP hostname and endpoint routing by @ashpreetbedi in https://github.com/agno-agi/agno/pull/10090
* fix: add missing @property to RemoteAgent.role and RemoteTeam.role by @kausmeows in https://github.com/agno-agi/agno/pull/10172
* cookbook: export DocumentationMarkdown and make its example run end to end by @sannya-singal in https://github.com/agno-agi/agno/pull/10178
* fix: accept text streams in MarkdownReader by @Minouccc in https://github.com/agno-agi/agno/pull/10168
* [fix] Await async chunking in JSONReader by @Kyousuk1e in https://github.com/agno-agi/agno/pull/10167
* [fix] Preserve non-index filenames during sitemap URL canonicalization by @yyydddkkk in https://github.com/agno-agi/agno/pull/10189
* fix: repair cookbook import, dead links and typo by @Shxiao101 in https://github.com/agno-agi/agno/pull/10134
* fix: dedupe Slack event retries by event_id instead of dropping them by @Himanshu040604 in https://github.com/agno-agi/agno/pull/10073
* fix: docs correct the Perplexity and v0 base_url defaults in their docstrings by @xizhuomengcontin in https://github.com/agno-agi/agno/pull/10192
* [fix] Accept text streams in TextReader by @RaycarlLei in https://github.com/agno-agi/agno/pull/10203
* fix: dependency bump urllib3 to 2.7.0 and requests to 2.33.0 in mcp_toolbox_demo by @katsugtgz in https://github.com/agno-agi/agno/pull/10184
* test: fix flaky test_tool_hook_receives_messages by @harshsinha03 in https://github.com/agno-agi/agno/pull/10212
* [fix] keep falsy tool results (0, False, []) on the sync tool execution path by @BlueX888 in https://github.com/agno-agi/agno/pull/9948
* fix: CONTRIBUTING paths, agno_infra license note, and docstring accuracy by @simpleqt in https://github.com/agno-agi/agno/pull/9722
* fix: retain falsy values in previous workflow content by @guanzhuohe273-hub in https://github.com/agno-agi/agno/pull/10208
* fix: Preserve CSV data rows when skipping headers across pages by @baba9811 in https://github.com/agno-agi/agno/pull/9995
* fix: document PythonTools has no code sandbox by @ysolanky in https://github.com/agno-agi/agno/pull/10218
* fix: harden CodingTools run_shell against interpreter RCE by @ysolanky in https://github.com/agno-agi/agno/pull/10210
* [fix] Continue sitemap discovery after invalid gzip data by @RaycarlLei in https://github.com/agno-agi/agno/pull/10213
* fix: use UTF-8 for agnoctl client config text by @Ghraven in https://github.com/agno-agi/agno/pull/10038
* fix: run CodingTools restricted shell without a shell to neutralize operator injection by @ysolanky in https://github.com/agno-agi/agno/pull/10220
* fix: Preserve newlines and tabs in clean_text by @icn5381 in https://github.com/agno-agi/agno/pull/9985

## New Contributors
* @rastagan-git made their first contribution in https://github.com/agno-agi/agno/pull/9841
* @n1uz1 made their first contribution in https://github.com/agno-agi/agno/pull/10020
* @devansh173 made their first contribution in https://github.com/agno-agi/agno/pull/10036
* @Shxiao101 made their first contribution in https://github.com/agno-agi/agno/pull/9980
* @Minouccc made their first contribution in https://github.com/agno-agi/agno/pull/10168
* @Kyousuk1e made their first contribution in https://github.com/agno-agi/agno/pull/10167
* @yyydddkkk made their first contribution in https://github.com/agno-agi/agno/pull/10189
* @xizhuomengcontin made their first contribution in https://github.com/agno-agi/agno/pull/10192
* @RaycarlLei made their first contribution in https://github.com/agno-agi/agno/pull/10203
* @katsugtgz made their first contribution in https://github.com/agno-agi/agno/pull/10184
* @simpleqt made their first contribution in https://github.com/agno-agi/agno/pull/9722
* @guanzhuohe273-hub made their first contribution in https://github.com/agno-agi/agno/pull/10208
* @baba9811 made their first contribution in https://github.com/agno-agi/agno/pull/9995
* @icn5381 made their first contribution in https://github.com/agno-agi/agno/pull/9985

**Full Changelog**: https://github.com/agno-agi/agno/compare/v3.0.9...v3.0.10

Related Repositories