# Mixing client and server tools, act-and-answer, and bug fixes

**Version:** v0.8.2

**Published:** May 7, 2026

## Mixing client and server tools in your integrations

The new ContentAgent class lets you combine your own client tools with Content Agent's server tools in a single agent loop. Server-executed tools (like Media Library access or content mutations) forward their results back to your client tools automatically, so the agent can act on both sides without you writing the orchestration. It is our implementation of the AI SDK Agent abstraction, preconfigured with safe defaults for the agent loop.

Migrate from streamText() to ContentAgent to pick this up:

```typescript
Before:

streamText({ model: provider.agent(threadId) })

After:

new ContentAgent({ provider, threadId })
```

Act-and-answer: With this orchestration in place, the agent can call a tool and return its final answer in the same step, delivering faster results for action-oriented queries (for example, "update the issue and confirm it is done").

## Notable bug fixes and improvements

- Fixed an issue where mutations could ignore validation warnings.
- Resolved errors that could occur when working with arrays containing items of a single type.
- Improved how the agent resolves references to documents in unsaved drafts.
- Translation tasks now correctly handle internationalized content in the latest schema versions.
- URL validation now respects relative URLs where allowed.
- Fixed an issue where some operations could fail with API parameter errors.
- Restored the confirmation flow for content edits.
- Recovered text content that could be orphaned during certain edit operations.
- File uploads now accept a wider range of file types.

