v3.0.10

data-privacy-stack/presidiov3.0.10Sep 16, 2026by harshsinha03

Upgrading?

AI Summary

Adds vector database support (Elasticsearch), Azure OpenAI Responses, and fixes various reader and MCP tool bugs.

Key Highlights

  • Added Elasticsearch vector database with vector, keyword, and hybrid search.
  • Added Azure OpenAI Responses model support.
  • Added MCP hostname and endpoint routing configuration.
  • Fixed text extraction issues in PPTX and CSV readers.

Breaking Changes

  • `CodingTools run_shell` is now opt-in (`enable_run_shell=True`).
  • With `authorization=True` and `PublicSurface(mcp=True)`, MCP now accepts only localhost by default unless `allowed_hosts` is set.

New Features

  • Azure OpenAI Responses API support.
  • Elasticsearch vector database integration.
  • DocumentationMarkdown transform for Knowledge.sync_pages.
  • MCP hostname and endpoint routing.

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