> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Middleware Registry • AI Agent SDK

> MiddlewareRegistry: Registry for runtime-scoped tool result middleware.

# MiddlewareRegistry

> Defined in the [**Middleware Registry**](https://praison.ai/docs/sdk/reference/praisonaiagents/modules/middleware_registry.md) module.

AI Agent

Registry for runtime-scoped tool result middleware.

Thread-safe singleton-like registry that manages middleware instances
for different runtime environments. Plugin harnesses register their
middleware here, and the core tool execution system uses it to normalize
results before they reach hooks and memory adapters.

## Methods

> [card] [register()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-register.md)
>
> Register middleware for a specific runtime.

> [card] [unregister()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-unregister.md)
>
> Unregister middleware for a runtime.

> [card] [get\_middleware()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-get_middleware.md)
>
> Get middleware for a runtime.

> [card] [has\_middleware()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-has_middleware.md)
>
> Check if middleware is registered for a runtime.

> [card] [list\_runtimes()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-list_runtimes.md)
>
> List all registered runtime IDs.

> [card] [clear()](https://praison.ai/docs/sdk/reference/praisonaiagents/functions/MiddlewareRegistry-clear.md)
>
> Clear all registered middleware.

## Usage

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# In plugin harness initialization
    registry = MiddlewareRegistry()
    registry.register("claude_harness", ClaudeHarnessMiddleware())
    
    # In core tool execution (agent.execute_tool)
    registry = MiddlewareRegistry()
    middleware = registry.get_middleware("claude_harness")
    normalized = middleware.normalize(result, tool_name, ctx)
```

## Source

> [card] [View on GitHub](https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/runtime/middleware_registry.py#L20)
>
> `praisonaiagents/runtime/middleware_registry.py` at line 20

***

## Related Documentation

> [card] [Middleware Feature](https://praison.ai/docs/docs/features/middleware)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.