v3.0.5

agno-agi/agnov3.0.5Sep 1, 2026by kausmeows

AI Summary

This release focuses on surfacing embedding failures during knowledge ingestion, introducing a new 'partial' content status and raising errors instead of masking them. It also adds new toolkits like GandrTools and a new model provider (llmman).

Key Highlights

  • Embedding failures are surfaced instead of masked
  • New 'partial' content status for incomplete embeddings
  • New GandrTools text-to-speech toolkit
  • New llmman model provider
  • Optional embedding retry during ingestion

Breaking Changes

  • ContentStatus enum gains 'partial' status
  • Embedders raise EmbeddingError instead of returning empty vectors
  • AWS Bedrock embedding failures raise EmbeddingError, not ModelProviderError
  • GET /knowledge/content/{id}/status returns 404 for missing/non-owned content
  • skip_if_exists=True no longer skips failed or partial content

New Features

  • partial content status
  • Optional embedding retry during ingestion
  • GandrTools
  • llmman model provider

Full Release Notes

# Changelog

## **Breaking Changes**

- **Embedding failures are surfaced, not masked.** Ingestion now reports embedding failures instead of returning success. Content that previously showed `completed` may now show `failed` or `partial` — those ingests were always incomplete, they were only *reported* as successful. The `ContentStatus` enum in the API (`/openapi.json`) gains `partial`, changing from `["processing","completed","failed"]` to `["processing","completed","partial","failed"]`. No schema migration is required (the status column is already `varchar`).
- **Embedders raise `EmbeddingError` instead of returning an empty vector on failure.** Calling a vector DB's `search()` directly now raises where it previously returned `[]`; `Knowledge.search()` is unaffected and still returns no results.
- **AWS Bedrock embedding failures raise `EmbeddingError`, not `ModelProviderError`.** Existing `except ModelProviderError` handlers around Bedrock embedding will stop catching — switch to `except EmbeddingError`.
- **`GET /knowledge/content/{id}/status` returns 404 for missing/non-owned content** instead of 200 with `status: "failed"`.
- **`skip_if_exists=True` no longer skips content recorded as `failed` or `partial`,** so incomplete content is re-embedded rather than silently marked complete.

## **New Features**

- **`partial` content status**: new `ContentStatus.PARTIAL` for files where some chunks embedded and others did not — searchable but incomplete, so neither `completed` nor `failed`. (**#9814**)
- **Optional embedding retry during ingestion** (off by default): enable with `Knowledge(max_embedding_retries=3, embedding_retry_backoff=1.0)`. Authentication failures ignore both settings and fail on the first attempt (the same credential is rejected every time). Note: each retry re-embeds the whole document.
- **GandrTools**: new text-to-speech toolkit for the Gandr TTS API.
- **llmman model provider**: new model provider.

## **Improvements**

- **Actionable embedding failure messages**: failure messages now name the chunk count, embedder, reason and recovery step, instead of "Could not insert embedding".
- **Re-ingest no longer destroys searchable chunks**: an `embed_before_replace` guard embeds documents before deleting existing ones, so a failing re-ingest aborts before anything is removed (previously a failed re-embed could leave a document with zero chunks).
- **`MCPTools` accepts static `headers=`**: connect-time auth headers can be passed directly on the `url=` path for Streamable HTTP and SSE, without constructing `StreamableHTTPClientParams`.

## What's Changed
* feat: add headers= argument to MCPTools for connect-time auth by @LHMQ878 in https://github.com/agno-agi/agno/pull/9444
* chore: re-enable litellm and crawl4ai extras by @RayST3 with @Copilot in https://github.com/agno-agi/agno/pull/9868
* feat: Add GandrTools text to speech toolkit for the Gandr TTS API by @AALG123 in https://github.com/agno-agi/agno/pull/9852
* [feat] Add llmman model provider by @ericcurtin in https://github.com/agno-agi/agno/pull/9863
* fix: repair broken cookbook models, imports, and image URL by @Himanshu040604 in https://github.com/agno-agi/agno/pull/9889
* fix: surface embedding failures during knowledge ingestion by @sannya-singal in https://github.com/agno-agi/agno/pull/9814
* chore: Release v3.0.5 by @kausmeows in https://github.com/agno-agi/agno/pull/9888

## New Contributors
* @AALG123 made their first contribution in https://github.com/agno-agi/agno/pull/9852
* @ericcurtin made their first contribution in https://github.com/agno-agi/agno/pull/9863

**Full Changelog**: https://github.com/agno-agi/agno/compare/v3.0.4...v3.0.5