# Fettle MCP server

Source: https://glimind.com/server/mcp-registry%2Fsh.fettle%2Fmcp
Registry id: `mcp-registry/sh.fettle/mcp`
Status: live (checked 2026-10-26T20:39:15.775Z)

## Measurements (30 days)

- Uptime: 99.92%
- Checks: 2601
- Outages (90 days): 2

## Install

```json
{
  "mcpServers": {
    "fettle-mcp-server": {
      "type": "http",
      "url": "https://api.fettle.sh/mcp"
    }
  }
}
```

Claude Code:

```sh
claude mcp add --transport http fettle-mcp-server https://api.fettle.sh/mcp
```

## Tools (49)

- `acknowledge_incident`: Mark an open incident as being handled so its repeat alerts stop; the recovery alert still goes out when it resolves. Use it when someone is working on the outa
- `bulk_create_monitors`: Create 1 to 100 monitors in one call, all or nothing; for a single monitor use create_monitor. Requires a key with the write scope. An invalid item, or a batch 
- `bulk_pause_monitors`: Pause up to 100 monitors in one call, all or nothing: no checks run and each open incident closes without an alert. Use it to stop monitoring a whole project or
- `bulk_resume_monitors`: Resume up to 100 paused monitors in one call, all or nothing; each goes back to PENDING and is checked on the next tick. For one monitor use resume_monitor; to 
- `bulk_update_monitor_tags`: Add and/or remove tags across up to 300 monitors in one call, all or nothing: each monitor ends with (its tags | add) - remove. Use it to retag a fleet; to repl
- `bulk_update_monitors`: Set the same interval, timeout, regions, channels, threshold or cooldown on up to 100 monitors in one call, all or nothing. For example, move twenty PING monito
- `check_now`: Queue one existing monitor to run on the scheduler's next tick instead of waiting out its interval, for example to confirm a fix. It returns the monitor record,
- `check_target`: Run one real check of a target from one region chosen by Fettle, without creating anything. It reports status (up, down, error or unknown), region, response_tim
- `create_heartbeat`: Create a heartbeat: Fettle alerts when a scheduled job stops calling its ping_url. Use it for cron jobs, backups and workers that should report in; to probe a U
- `create_maintenance_window`: Create a one-time or recurring maintenance window that silences alerts for some or all monitors. While a window is in effect its monitors keep being checked, bu
- `create_monitor`: Create one monitor that checks a URL, host or port on a schedule from one or more regions, and return it in the get_monitor shape. Use check_target first to cat
- `create_status_page_incident`: Open a new incident on a status page with its first message, to tell the page's visitors about an outage. It is public and emails the page's confirmed subscribe
- `delete_heartbeat`: Delete one heartbeat for good: its ping_url stops working (404) and no tool restores it. Use it only when the user asked for deletion; to stop alerts for a whil
- `delete_maintenance_window`: Delete one maintenance window; alerts for its monitors resume at once and no tool restores it. To suspend a window but keep it, use update_maintenance_window wi
- `delete_monitor`: Delete one monitor: it stops being checked and disappears from the organization's monitors, and no tool restores it. Use it only when the user explicitly asked 
- `delete_status_page_incident`: Remove an incident and its timeline from a status page; it stops showing at once, nothing is sent to subscribers, and no tool restores it. Use it for an inciden
- `delete_tag`: Remove a tag from every monitor and heartbeat that carries it; the items themselves stay, and no tool restores the tag. Use it to retire a tag across the organi
- `get_exposed_ports_preset`: List the ports that should never be reachable from the internet (databases, queues, admin panels). Returns ports, each a port number and the service that usuall
- `get_heartbeat`: Read one heartbeat in full, including how long its last run took. It has name, state, period_seconds, grace_seconds, ping_url, last_ping_at, last_success_at, la
- `get_incident`: Read one incident in full, with every alert sent for it. It has id, monitor_id or heartbeat_id (exactly one is set), started_at, resolved_at, cause, cause_detai
- `get_maintenance_window`: Read one maintenance window with its schedule and its next three occurrences. It has the list_maintenance_windows fields plus next_occurrences, each with start 
- `get_monitor`: Read one monitor's full configuration and current state. It has type, target, interval_seconds, timeout_seconds, regions, config, status, is_active, confirmatio
- `get_plan_usage`: Show the organization's plan, its limits and current usage, to check that new monitors, heartbeats or regions fit before creating them or to explain a 403 namin
- `get_response_time_by_region`: Chart one monitor's average response time over time, one series per region, to see where it is slow and since when. Returns monitor_id, window, bucket_seconds a
- `get_status_page`: Read one status page with its components. It has the list_status_pages fields, where each component has id, monitor_id, display_name and position. Use it to get
- `get_uptime_daily`: Report one monitor's uptime for each UTC day, oldest first and ending today, to find the day an outage or degradation began. Each day has date, uptime_percentag
- `get_uptime_summary`: Report one monitor's uptime percentage, average response time and incident count over the last 24 hours, 7 days and 30 days at once, to answer how reliable it h
- `list_active_maintenance`: List the enabled maintenance windows in effect at this moment, to tell whether a monitor's alerts are silenced now. An ORG-scope window covers every monitor, a 
- `list_channels`: List the organization's notification channels (up to 100), to get the ids that channel_ids of monitors and heartbeats take. Each has id, type (TELEGRAM, WEBHOOK
- `list_check_results`: List one monitor's individual check results, newest first, to find out why it is DOWN: which regions fail and with what status code or error. Each has id, regio
- `list_heartbeats`: Find heartbeat (cron / dead-man's-switch) monitors. Each has id, name, state (PENDING until a success ping makes it UP or a /fail ping makes it DOWN; later UP, 
- `list_incidents`: List the organization's monitor and heartbeat incidents, newest first, to see what is or was down and which alerts went out. Each item has id, monitor_id or hea
- `list_maintenance_windows`: List every maintenance window of the organization, enabled or not, in effect or not. Each has id, name, enabled, scope (ORG or MONITOR), dtstart, duration_minut
- `list_monitors`: Find monitors in the organization by name, target, type, status or tag. Each row is short: id, name, type, target, status, is_active, tags, interval_seconds, ss
- `list_regions`: List every check region of the platform, to show the user where checks can run. Returns regions, each with code (what a regions argument takes), display_name, c
- `list_status_page_incidents`: List the incidents shown on one status page, newest first, both posted by a person and opened by Fettle. Each has id, title, status, is_auto (opened by Fettle f
- `list_status_pages`: List the organization's public status pages. Each has id, slug, name, description, is_published (publicly visible now), history_days, created_at, groups (each w
- `list_tags`: List the tags used in the organization, most-used first, each with monitor_count and heartbeat_count, as items. Call it before tagging anything so you reuse an 
- `pause_heartbeat`: Pause one heartbeat: it is no longer reported late, pings to its ping_url are accepted but ignored, and its open incident closes without an alert. Use it when t
- `pause_monitor`: Stop checking one monitor without deleting it: its status becomes PAUSED and an open incident on it closes without a recovery alert. Use it when the user wants 
- `post_status_page_update`: Add a message to an existing status page incident and set its status; RESOLVED closes it. It is public and emails the page's confirmed subscribers: confirm the 
- `preview_maintenance_window`: Compute the next three occurrences, each with start and end, that a schedule would produce, without saving anything. Use it to check a recurring schedule before
- `rename_tag`: Rename a tag on every monitor and heartbeat that carries it; an item that already has the new name keeps one copy. Use it to fix a naming scheme across the orga
- `resume_heartbeat`: Resume one paused heartbeat: it goes back to PENDING with no deadline, so it is not reported late until its next success ping restarts the clock. Use it once th
- `resume_monitor`: Restart checks on one paused monitor: its status goes back to PENDING and it is checked on the scheduler's next tick. For many monitors use bulk_resume_monitors
- `update_heartbeat`: Change one heartbeat's name, timing, channels or tags; only the fields you pass change. A new period or grace applies from the next ping: the current deadline (
- `update_maintenance_window`: Change one maintenance window's name, schedule, scope or monitors, or switch it off with enabled false; only the fields you pass change. While a window is in ef
- `update_monitor`: Change one monitor's settings and return it in the get_monitor shape. Only the fields you pass change, and at least one besides monitor_id is required (422 othe
- `update_status_page_incident`: Change a status page incident's title without telling anyone: nothing is sent to subscribers. To change its status or add a message use post_status_page_update.

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
