---
title: "MCP Tools"
description: "Explore Middleware MCP Server tools to manage dashboards, widgets, metrics, telemetry, and error tracking with secure AI assistant access."
section: "Ops AI"
breadcrumb: "Ops AI > MCP Server > MCP Tools"
canonical: "https://docs.middleware.io/features/mcp/tools"
---
# MCP Tools

The Middleware MCP Server exposes **22 tools**, grouped by product area. Your assistant calls these tools to read and manage your Middleware data.

Each tool is marked **Read** or **Write**:

- **Read** tools (`list_*`, `get_*`, and `query`) never change your data.
- **Write** tools create, update, or delete resources.

To connect a client and start using these tools, see [Setup](/features/mcp/setup).

## Dashboards

Manage the full dashboard lifecycle, including cloning and favorites.

| Tool | Access | Description |
| --- | --- | --- |
| `list_dashboards` | Read | List dashboards and reports, with filtering and pagination. Use it to discover what exists before reading or editing. |
| `get_dashboard` | Read | Get a single dashboard by its key, including its layout and widgets. |
| `create_dashboard` | Write | Create a new dashboard. |
| `update_dashboard` | Write | Update an existing dashboard's properties. |
| `delete_dashboard` | Write | Delete a dashboard. |
| `clone_dashboard` | Write | Duplicate an existing dashboard into a new one. |
| `set_dashboard_favorite` | Write | Mark a dashboard as a favorite, or remove it from favorites. |

## Widgets

Build and adjust the widgets on a dashboard, and pull their data.

| Tool | Access | Description |
| --- | --- | --- |
| `list_widgets` | Read | List the widgets on a report or display scope. |
| `get_widget_data` | Read | Fetch the data for a single widget. |
| `create_widget` | Write | Add a new widget. |
| `update_widget` | Write | Update an existing widget's configuration. |
| `delete_widget` | Write | Remove a widget. |
| `update_widget_layouts` | Write | Update the position and size of widgets on a dashboard. |

## Querying telemetry

These three tools are **generic**. Together they cover every telemetry type in Middleware — logs, metrics, traces and spans, and events — so there is no separate tool to learn per signal. You discover what is available, then query it.

| Tool | Access | Description |
| --- | --- | --- |
| `get_resources` | Read | List the resource types available to query, such as hosts, services, containers, or pods. Start here when you do not yet know how the data in a project is organized. |
| `get_metrics` | Read | List the available metrics, along with the filters and group-by tags each one supports. Use it to find the exact metric name and the dimensions you can slice it by. |
| `query` | Read | Run a query against any telemetry type over a time range. This is the single entry point for logs, metrics, traces, spans, and events. |

### How they fit together

1. **Discover the scope** — `get_resources` tells you which resource types exist in the selected project.
2. **Discover the fields** — `get_metrics` returns the metric names, along with the filters and group-by tags that are valid for each.
3. **Fetch the data** — `query` runs the actual request, with your filters, grouping, and time range, and returns the results.

Your assistant chains these on its own. When you ask something like *"what is the p99 latency for the checkout service over the last 6 hours?"*, it calls `get_metrics` to resolve the metric and its tags, then calls `query` with the right filters and time range.

> **Note:** Because `query` handles every signal, there are no dedicated log, trace, or metric tools. Anything you can query in the Middleware UI can be requested through `query` — including log searches, trace and span lookups, and metric aggregations.

## Error tracking

Triage errors and incidents.

| Tool | Access | Description |
| --- | --- | --- |
| `list_errors` | Read | List errors and incidents with filtering and pagination. Each entry includes a clickable `issue_url` you can open in Middleware. |
| `get_error_details` | Read | Get detailed information about a specific error or incident, looked up by its fingerprint. |

## RUM

Inspect Real User Monitoring applications, sessions, and frontend errors.

| Tool | Access | Description |
| --- | --- | --- |
| `list_rum_applications` | Read | List your RUM applications with session counts, error rate, and p75 load time, along with deep links. |
| `list_rum_sessions` | Read | List the sessions for a single RUM application, with session-replay deep links. |
| `get_rum_session` | Read | Get one RUM session in full: metadata, events, errors, network activity, and a deep link. |
| `list_rum_errors` | Read | List recent frontend errors with page and user-action context, and deep links to the sessions. |

## Restricting the available tools

You can expose a narrower set of tools on a connection by adding the `exclude_tools` query parameter to the endpoint URL. Listed tools are hidden from the client and cannot be called:

```
https://mcp.middleware.io/mcp?exclude_tools=create_dashboard,update_dashboard,delete_dashboard,clone_dashboard,set_dashboard_favorite,create_widget,update_widget,delete_widget,update_widget_layouts
```

The example above removes every write tool, leaving a read-only connection. See [Setup](/features/mcp/setup#restrict-tools-per-connection) for details.

Need assistance or want to learn more about Middleware? Get in touch with us via our Contact Us page or join our Slack channel.
