v1.103.0

pydantic/pydantic-aiv1.103.0May 27, 2026by dsfaccini

AI Summary

This release enhances MCP server capabilities with prompt management, improves message timestamp handling, and adds streaming support for OpenRouter.

Key Highlights

  • Added `list_prompts` and `get_prompt` functionality to `McpServer`.
  • Round-tripped message timestamps through `UIMessage.metadata`.
  • Added support for `anthropic_eager_input_streaming` in `OpenRouterModel`.
  • Fixed Bedrock mapping of malformed output to FinishReason.error.

New Features

  • Add `list_prompts` and `get_prompt` functionality to `McpServer`
  • Round-trip message timestamps through `UIMessage.metadata`
  • Support `anthropic_eager_input_streaming` in `OpenRouterModel`

Full Release Notes

<!-- Release notes generated using configuration in .github/release.yml at main -->

## What's Changed
### 🚀 Features
* Add `list_prompts` and `get_prompt` functionality to `McpServer` by @bdore in https://github.com/pydantic/pydantic-ai/pull/3889
* Round-trip message timestamps through `VercelAIAdapter`'s `UIMessage.metadata` by @Genmin in https://github.com/pydantic/pydantic-ai/pull/5279
* Support `anthropic_eager_input_streaming` in `OpenRouterModel` by @Alex-Resch in https://github.com/pydantic/pydantic-ai/pull/5656
### 🐛 Bug Fixes
* fix(bedrock): map `malformed_model_output` and `malformed_tool_use` to `FinishReason.error` by @kuishou68 in https://github.com/pydantic/pydantic-ai/pull/5640
* fix(bedrock): recognize `type='adaptive'` in `_is_thinking_enabled` by @sevakva in https://github.com/pydantic/pydantic-ai/pull/5651
* fix(ui): Strip `force_download` flag from client-submitted `FileUrl` parts in `UIAdapter.sanitize_messages` by @colesmcintosh in https://github.com/pydantic/pydantic-ai/pull/5571
* fix(toolsets): warn when prepare callbacks return `None` by @dfm88 in https://github.com/pydantic/pydantic-ai/pull/5188

## New Contributors
* @ejentum made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5594
* @kuishou68 made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5640
* @sevakva made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5651
* @bdore made their first contribution in https://github.com/pydantic/pydantic-ai/pull/3889
* @Genmin made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5279
* @aryanmotgi made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5667
* @dfm88 made their first contribution in https://github.com/pydantic/pydantic-ai/pull/5188

**Full Changelog**: https://github.com/pydantic/pydantic-ai/compare/v1.102.0...v1.103.0