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

# MCP tool monitors: per-tool health checks

> Set up recurring pings for individual MCP tools so Armature alerts you the moment a tool starts failing, timing out, or becoming unreachable.

A tool monitor is a scheduled health check for a single MCP tool. Every time the monitor fires, Armature calls that tool with a fixed set of arguments and records whether the call succeeded. If the tool returns an error — or if the server is unreachable — the monitor's status updates immediately and any attached alert rules fire. Over time, each monitor builds a run history that lets you spot regressions, measure latency trends, and confirm that a fix actually holds.

## What counts as pass, fail, or error

Every monitor run produces one of three outcomes:

<AccordionGroup>
  <Accordion title="Pass">
    The tool returned a response without throwing and without the MCP `isError: true` flag set. This is the healthy state — the tool responded as expected within the timeout window.
  </Accordion>

  <Accordion title="Fail">
    The tool responded but set `isError: true` in its result. The server was reachable and executed the tool call, but the tool itself reported a logical error. This typically means a problem with your tool's business logic, a dependency it relies on, or the arguments you supplied.
  </Accordion>

  <Accordion title="Error">
    A transport-level failure prevented the tool call from completing. Common causes include the server being unreachable, a connection timeout, an unexpected HTTP status code, or a malformed response that couldn't be parsed as valid MCP. No `isError` flag can be set because the call never made it to the tool itself.
  </Accordion>
</AccordionGroup>

## Monitor cadences

When you create or edit a monitor, you choose how often Armature pings the tool:

| Interval         | Use when                                                 |
| ---------------- | -------------------------------------------------------- |
| Every 1 minute   | Critical tools where any downtime matters immediately    |
| Every 5 minutes  | Important tools that need close attention                |
| Every 15 minutes | Standard production health checks                        |
| Every 1 hour     | Low-frequency tools or those with rate-limiting concerns |

## Set up monitors with the wizard

The fastest way to add tool monitors is through the setup wizard, which launches automatically after you connect a new server. You can also start the wizard from the **Monitors** page at any time.

<Steps>
  <Step title="Pick a server">
    On the **Monitors** page, click **New monitor**. A dialog opens with a dropdown listing all of your active MCP servers. Select the server whose tools you want to monitor and click **Probe & continue**.

    If you are coming from the MCP Servers page immediately after connecting a new server, the wizard launches automatically — you can skip this step.
  </Step>

  <Step title="Wait for the probe">
    Armature calls `tools/list` on the selected server to fetch the current tool catalog. This usually takes a few seconds. If the probe fails, Armature shows the error message and a **Retry** button — verify the server is reachable and try again.

    Tools that already have a monitor on this server are shown in a disabled "Already monitored" bucket so you cannot create duplicates.
  </Step>

  <Step title="Choose which tools to monitor">
    The wizard lists every tool discovered during the probe. Each tool is selected by default. Uncheck any tools you do not want to monitor.

    Armature also runs an AI agent pass to pre-fill suggested argument values for each tool based on its input schema. You can accept these suggestions, edit them, or clear them entirely before saving.
  </Step>

  <Step title="Set the interval for each tool">
    Use the cadence selector next to each tool to choose how frequently Armature should ping it. Different tools can run on different schedules — for example, you might check a payment-processing tool every minute and a reporting tool every hour.
  </Step>

  <Step title="Supply required arguments">
    If a tool requires arguments to execute, fill them in using the structured form Armature generates from the tool's input schema. Required fields are marked; the monitor will not save until all required fields have valid values.

    For tools with complex argument types (nested objects, arrays), Armature renders a JSON editor as a fallback.

    <Tip>
      You can add extra arguments beyond the tool's declared schema by clicking **Add another argument**. This is useful when a tool accepts undeclared optional parameters.
    </Tip>
  </Step>

  <Step title="Save your monitors">
    Click **Save monitors**. Armature creates one monitor per selected tool. The wizard shows a confirmation screen listing how many monitors were saved, then gives you a direct link to the Monitors page.

    If any individual tool fails to save, the wizard reports the error inline — fix it and retry without losing the rest of your selections.
  </Step>
</Steps>

## The monitors list

The **Monitors** page shows every tool monitor across all of your MCP servers. Use the filter bar to narrow the list:

* **All** — every monitor regardless of status
* **Passing** — monitors whose last run returned `pass`
* **Failing** — monitors whose last run returned `fail` or `error`
* **Paused** — monitors that have been manually paused

Use the search box to filter by tool name or server name.

Each row shows:

* The last run status badge (`pass`, `fail`, `error`, or `pending`)
* The tool name and the server it belongs to
* The current cadence (e.g., "every 5 minutes")
* When the last run happened and when the next run is scheduled
* Latency in milliseconds for the last run

## View run history

Click **History** on any monitor row to expand the last 20 runs inline. Each run shows:

* Status (`pass`, `fail`, or `error`)
* Start time and latency
* Error message, if any

Click a specific run row to open a detail modal with the full response payload from the tool call. You can copy the raw response JSON from the detail modal for debugging.

## Edit a monitor

Click **Edit** on a monitor row to modify its cadence or arguments inline. Armature renders the same structured form used during setup. Save your changes, and the updated configuration takes effect on the next scheduled run.

<Note>
  Editing a monitor does not reset its run history. Past runs are preserved exactly as they were.
</Note>

## Pause and resume

Click **Pause** to stop a monitor from running on its schedule without deleting it. Paused monitors appear with a "paused" label in the list and are excluded from the Passing/Failing counts at the top of the page. Click **Resume** to restart scheduling.

## Delete a monitor

Click the trash icon on any monitor row and confirm the deletion. The monitor stops running immediately.

<Warning>
  Deleting a monitor also removes its run history permanently. If you only want to stop it temporarily, use **Pause** instead.
</Warning>

## Alert rules

Attach alert rules to any monitor so you receive a notification when it enters a failing or error state. Click **Add alert** (or the alert chip if rules already exist) on a monitor row to navigate to the Alerts page, where you can attach a Slack or email rule to that monitor.

See [Slack alerts](/alerts/slack) for setup instructions.

<CardGroup cols={2}>
  <Card title="Connect an MCP server" icon="server" href="/mcp-servers/connecting">
    Add a new server and run the initial probe to discover its tools.
  </Card>

  <Card title="Coverage report" icon="chart-bar" href="/mcp-servers/coverage">
    Identify which tools have no workflow coverage and should be tested more thoroughly.
  </Card>
</CardGroup>
