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