# AgentMiddleware

> **Interface** in `langchain`

📖 [View in docs](https://reference.langchain.com/javascript/langchain/index/AgentMiddleware)

Base middleware interface.

## Signature

```javascript
interface AgentMiddleware
```

## Properties

- `afterAgent`
- `afterModel`
- `beforeAgent`
- `beforeModel`
- `contextSchema`
- `name`
- `stateSchema`
- `tools`
- `wrapModelCall`
- `wrapToolCall`

## Examples

```typescript
const middleware = createMiddleware({
  name: "myMiddleware",
  stateSchema: z.object({ count: z.number() }),
  tools: [myTool],
});
```

---

[View source on GitHub](https://github.com/langchain-ai/langchainjs/blob/0c9440396c725d43b4758eb1b931c955e64ad8ec/libs/langchain/src/agents/middleware/types.ts#L378)