Monitoring — MCP Tools
21 tools in the Monitoring group of the Routebase MCP server.
generate_monitors_from_spec
Create monitors for many spec endpoints at once — the two steps of the generate wizard. 'preview' lists the endpoints of a spec with the ones that already have a monitor marked, so you can pick; 'create' then creates monitors for the endpoints you selected. Both need specId; 'create' also needs environmentId and endpoints. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'preview' or 'create' |
specId |
string | Yes | Public ID (GUID) of the API specification |
specVersionId |
string | No | Public ID (GUID) of the spec version — defaults to the latest published version |
environmentId |
string | No | Public ID (GUID) of the environment the monitors check — required for 'create' |
endpoints |
string | No | Endpoints to create monitors for, as a JSON array. Each item needs endpointPublicId and may carry nameOverride, expectedStatusCodeOverride, intervalSecondsOverride and pathParameterValues (an object of parameter name to value, required for endpoints with path parameters). Example: [{"endpointPublicId":"...","pathParameterValues":{"id":"42"}}]. Get the ids from action 'preview'. Required for 'create' |
defaultIntervalSeconds |
integer | No | Seconds between checks for the created monitors, defaults to 300 |
defaultTimeoutSeconds |
integer | No | Request timeout in seconds for the created monitors, defaults to 30 |
defaultSchemaMode |
string | No | Response schema validation for the created monitors: 'off', 'warn' or 'strict'. Defaults to 'warn' |
get_alert_policy
Get one alert policy with its full rule set and how many scopes it is assigned to. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
policyId |
string | Yes | Public ID (GUID) of the policy, from list_alert_policies |
get_contract_drift
One contract drift event in full: per-field deviations with the value that actually arrived, the route, the request that was sent, and the response body they were read from (first 4 KB, credential headers redacted). Ids come from list_contract_drift. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
driftEventId |
string | Yes | Public ID (GUID) of the drift event |
projectId |
string | No | Public ID (GUID) of the project — defaults to the session context |
get_monitor
Get one monitor with its recent checks. The include flags pull in what the monitor detail page shows next to it: uptime and latency percentiles over 24h to 90d, the alert policy that applies (inherited or its own), its maintenance windows, and the fire/resolve history of its alerts. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
monitorId |
string | Yes | Public ID (GUID) of the monitor, from list_monitors |
includeUptimeStats |
boolean | No (default false) |
Include uptime percentages and response-time percentiles |
includeEffectivePolicy |
boolean | No (default false) |
Include the alert policy that applies to this monitor and where it comes from |
includeMaintenanceWindows |
boolean | No (default false) |
Include the maintenance windows that cover this monitor |
includeAlertHistory |
boolean | No (default false) |
Include the fire/resolve history of this monitor's alerts |
includeFreshnessWatches |
boolean | No (default false) |
Include watched field paths and how long each value has been unchanged |
get_monitoring_settings
Get the project's monitoring defaults: how long check history is kept, the default check interval, timeout, incident threshold and schema validation mode, and whether monitors are created automatically when a spec is published. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | No | Public ID (GUID) of the project — defaults to the project in the session context |
get_monitoring_sync_status
Compare a spec against the monitors that exist for it in one environment: how much of it is covered, which endpoints have no monitor, which monitors point at endpoints that are gone, and how many are drift-watched. The starting point before generating monitors. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
specId |
string | Yes | Public ID (GUID) of the API specification |
environmentId |
string | Yes | Public ID (GUID) of the environment |
projectId |
string | No | Public ID (GUID) of the project — defaults to the project in the session context |
get_schema_drift_report
Get what a monitor's schema validation found: per check whether it passed, and the drift items with their JSON path, severity, expected and actual value. Only returns something for monitors with schema validation on — see manage_drift_watch. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
monitorId |
string | Yes | Public ID (GUID) of the monitor, from list_monitors |
from |
string | No | Only checks at or after this UTC timestamp (ISO 8601) |
to |
string | No | Only checks at or before this UTC timestamp (ISO 8601) |
take |
integer | No (default 50) |
Maximum number of checks to report on, defaults to 50 |
list_alert_policies
List the alert policies of a project with their rules. Set includeAssignments to also get which environments, specs and monitors each policy is attached to — that is where the assignmentId for unassigning comes from. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | No | Public ID (GUID) of the project — defaults to the project in the session context |
includeAssignments |
boolean | No (default false) |
Include the scope assignments of the policies |
list_contract_drift
List the endpoints of a project whose live responses drift from their contract, grouped by endpoint with the drift items, how long it has lasted and the contract version checked against. Resolved events are left out unless asked for. Use get_schema_drift_report for one monitor's history. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | No | Public ID (GUID) of the project — defaults to the session context |
environmentId |
string | No | Only drift in this environment, by its public ID (GUID) |
minSeverity |
string | No | Lowest severity to report: 'error' or 'warning'. Omit for all |
status |
string | No | 'all' or 'resolved' includes closed events; omit for the open ones |
lookbackDays |
integer | No (default 7) |
How far back to list RESOLVED events, in days (1-30, default 7) |
list_incidents
List incidents across the organization, newest first, with the monitor that raised each one and its event timeline. Filter by status, by monitor, by environment or spec, and by time window. Works across the organization, no project context needed.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
status |
string | No | Only incidents in this state: 'open', 'acknowledged' or 'resolved' |
monitorId |
string | No | Public ID (GUID) of a monitor to filter by |
environmentId |
string | No | Public ID (GUID) of an environment to filter by |
apiSpecId |
string | No | Public ID (GUID) of an API specification to filter by |
from |
string | No | Only incidents started at or after this UTC timestamp (ISO 8601) |
to |
string | No | Only incidents started at or before this UTC timestamp (ISO 8601) |
skip |
integer | No (default 0) |
Number of incidents to skip, defaults to 0 |
take |
integer | No (default 50) |
Maximum number of incidents to return, defaults to 50 |
list_maintenance_windows
List the maintenance windows of a project across all scopes, with the window ids needed to cancel them. Set activeOnly to see just the ones in effect right now. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | No | Public ID (GUID) of the project — defaults to the project in the session context |
activeOnly |
boolean | No (default false) |
Only windows that are in effect right now |
list_monitor_checks
List the individual checks a monitor ran, newest first — status code, response time and the timing breakdown (DNS, connect, TLS, first byte). Set onlyErrors to see just the failures. Use from and to to narrow the window. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
monitorId |
string | Yes | Public ID (GUID) of the monitor, from list_monitors |
from |
string | No | Only checks at or after this UTC timestamp (ISO 8601, e.g. '2026-07-31T00:00:00Z') |
to |
string | No | Only checks at or before this UTC timestamp (ISO 8601) |
onlyErrors |
boolean | No | Only return checks that failed |
skip |
integer | No (default 0) |
Number of checks to skip, defaults to 0 |
take |
integer | No (default 50) |
Maximum number of checks to return, defaults to 50 |
list_monitors
List the monitors of a project with their current status. Set grouped to see them as an environment → spec tree the way the sidebar shows them (paging does not apply then). Set includeStats to add 24h uptime, p95 latency and the response-time sparkline per monitor. Requires project context.
Required scope: monitoring:read
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | No | Public ID (GUID) of the project — defaults to the project in the session context |
isEnabled |
boolean | No | Only enabled (true) or only disabled (false) monitors — omit for all |
grouped |
boolean | No (default false) |
Group as an environment → spec → monitor tree instead of a flat list |
includeStats |
boolean | No (default false) |
Include 24h uptime, p95 latency and sparkline buckets per monitor |
skip |
integer | No (default 0) |
Number of monitors to skip, defaults to 0 |
take |
integer | No (default 100) |
Maximum number of monitors to return, defaults to 100 |
manage_alert_policy
Create, change, delete or attach an alert policy — a named set of rules that decides when monitors raise an incident. 'create' needs name and rules; 'update' needs policyId and REPLACES the policy, fields you omit keep their current value; 'delete' needs policyId; 'assign' attaches the policy to a scope and needs policyId, scope and the id for that scope; 'unassign' needs assignmentId from list_alert_policies with includeAssignments; 'migrate_legacy_alerts' converts the project's per-monitor alert rules into policies once. For rules on a single monitor use manage_monitor_alert. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'create', 'update', 'delete', 'assign', 'unassign' or 'migrate_legacy_alerts' |
policyId |
string | No | Public ID (GUID) of the policy — required for 'update', 'delete' and 'assign' |
name |
string | No | Policy name (e.g. 'Production — strict') — required for 'create' |
description |
string | No | Optional description |
isEnabled |
boolean | No | Whether the policy is active — used by 'update' |
rules |
string | No | Rules as a JSON array — required for 'create'. Each item needs alertType and condition, and may carry cooldownMinutes (defaults to 30). condition may be an object or a JSON string. Alert types and the condition each one needs: 'downtime' → {"consecutiveFailures":n}; 'latencyThreshold' → {"thresholdMs":n,"windowChecks":n}; 'errorRate' → {"thresholdPercent":1-100,"windowChecks":n}; 'schemaDrift' → {"minSeverity":"error"|"warning"|"info"}. Example: [{"alertType":"downtime","condition":{"consecutiveFailures":3}}] |
scope |
string | No | What the policy attaches to — required for 'assign': 'environment', 'apiSpec' or 'monitor' |
environmentId |
string | No | Public ID (GUID) of the environment — required for 'assign' with scope 'environment' |
apiSpecId |
string | No | Public ID (GUID) of the API specification — required for 'assign' with scope 'apiSpec' |
monitorId |
string | No | Public ID (GUID) of the monitor — required for 'assign' with scope 'monitor' |
assignmentId |
string | No | Public ID (GUID) of the assignment to remove — required for 'unassign' |
manage_drift_event
Triage one contract drift event. 'acknowledge' marks it as owned — it stops counting as new but stays listed; 'resolve' closes it; 'reopen' undoes either. Drift that stops on its own is closed by the next clean check. Ids come from list_contract_drift. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'acknowledge', 'resolve' or 'reopen' |
driftEventId |
string | Yes | Public ID (GUID) of the drift event |
note |
string | No | Optional note recorded on the event |
projectId |
string | No | Public ID (GUID) of the project — defaults to the session context |
manage_drift_watch
Turn schema drift watching on or off for one spec in one environment. 'enable' provisions or updates a schema-validating monitor for every endpoint of the spec's latest published version — it is idempotent, so running it again after a publish picks up new endpoints. 'disable' stops the validation but keeps the monitors running as plain uptime checks. Both need specId and environmentId. Read the findings with get_schema_drift_report. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'enable' or 'disable' |
specId |
string | Yes | Public ID (GUID) of the API specification |
environmentId |
string | Yes | Public ID (GUID) of the environment to watch |
schemaMode |
string | No | How strictly responses are validated — 'enable' only: 'warn' or 'strict'. Defaults to 'warn' |
alertSharpness |
string | No | How loudly drift is reported — 'enable' only: 'error' or 'warning'. Defaults to 'error' |
manage_incident
Acknowledge or resolve incidents. Pass one incident id or several as a comma-separated list — several are handled as one bulk operation and the result reports how many succeeded and failed. 'acknowledge' marks an incident as seen and being worked on; 'resolve' closes it. The optional note is recorded on the incident timeline. Get the ids from list_incidents. Works across the organization, no project context needed.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'acknowledge' or 'resolve' |
incidentIds |
string | Yes | Public ID (GUID) of the incident, or several separated by commas |
note |
string | No | Optional note recorded on the incident timeline |
manage_maintenance_window
Plan or cancel a maintenance window — a period in which monitors keep running but do not raise incidents, and which is excluded from uptime. 'create' covers a whole scope and needs title, startsAt, endsAt, scope and the id for that scope; it can repeat on a cron schedule. 'create_for_monitor' is the short path for a one-off window on a single monitor and needs monitorId, title, startsAt and endsAt. 'delete' needs windowId from list_maintenance_windows. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'create', 'create_for_monitor' or 'delete' |
windowId |
string | No | Public ID (GUID) of the window to cancel — required for 'delete' |
title |
string | No | What the window is about (e.g. 'Database migration') — required for both create actions |
startsAt |
string | No | When the window starts, as a UTC timestamp (ISO 8601, e.g. '2026-08-01T22:00:00Z') — required for both create actions |
endsAt |
string | No | When the window ends, as a UTC timestamp (ISO 8601) — required for both create actions |
scope |
string | No | What the window covers — required for 'create': 'environment', 'apiSpec' or 'monitor' |
environmentId |
string | No | Public ID (GUID) of the environment — required for 'create' with scope 'environment' |
apiSpecId |
string | No | Public ID (GUID) of the API specification — required for 'create' with scope 'apiSpec' |
monitorId |
string | No | Public ID (GUID) of the monitor — required for 'create_for_monitor', and for 'create' with scope 'monitor' |
isRecurring |
boolean | No (default false) |
Whether the window repeats — 'create' only |
cronExpression |
string | No | Cron expression for the repeat (e.g. '0 2 * * SUN') — required when isRecurring is true |
durationMinutes |
integer | No | How many minutes each repeat lasts — used with isRecurring |
manage_monitor
Create, change or run a monitor — an HTTP check against one URL on a fixed interval. 'create' needs name and targetUrl; 'update' needs monitorId and REPLACES the monitor, fields you omit keep their current value, so you can change one alone; 'delete' needs monitorId; 'toggle' needs monitorId and isEnabled (this is the ONLY way to enable or disable — 'update' does not touch it); 'toggle_custom_alerts' switches a monitor between the inherited alert policy and its own rules; 'trigger_check' runs one check right now and returns its result; 'set_freshness_watches' replaces the paths this monitor watches for values that stopped changing. To create many monitors from a spec at once use generate_monitors_from_spec. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'create', 'update', 'delete', 'toggle', 'toggle_custom_alerts', 'trigger_check' or 'set_freshness_watches' |
monitorId |
string | No | Public ID (GUID) of the monitor — required for every action except 'create' |
name |
string | No | Monitor name (e.g. 'GET /customers — production') — required for 'create' |
targetUrl |
string | No | Absolute URL the check calls (e.g. 'https://api.example.com/customers') — required for 'create' |
httpMethod |
string | No | HTTP method to call, defaults to GET on 'create' |
headers |
string | No | Request headers as a JSON object string (e.g. '{"Authorization":"Bearer x"}') |
requestBody |
string | No | Request body to send, for POST/PUT/PATCH checks |
intervalSeconds |
integer | No | Seconds between checks, defaults to 300 on 'create' |
timeoutSeconds |
integer | No | Request timeout in seconds, defaults to 30 on 'create' |
expectedStatusCode |
integer | No | HTTP status code that counts as healthy, defaults to 200 on 'create' |
region |
string | No | Check region, defaults to 'default' |
schemaValidationMode |
string | No | Response schema validation: 'off', 'warn' or 'strict'. Defaults to 'warn' on 'create' |
environmentId |
string | No | Public ID (GUID) of the environment this monitor belongs to, from list_environments |
isEnabled |
boolean | No | Whether the monitor runs — required for 'toggle' |
useCustomAlerts |
boolean | No | Whether the monitor uses its own alert rules instead of the inherited policy — required for 'toggle_custom_alerts' |
freshnessPaths |
string | No | For 'set_freshness_watches': the COMPLETE set of watched paths as a JSON array (e.g. '["$.data.updatedAt"]'). Known paths keep their history, omitted ones are removed, '[]' clears them |
manage_monitor_alert
Create, change or delete an alert rule that belongs to one monitor and overrides the inherited policy. The monitor must have custom alerts switched on — see manage_monitor action 'toggle_custom_alerts'. A monitor can hold at most one rule per alert type. 'create' needs monitorId, alertType and condition; 'update' needs monitorId and alertId, and keeps the fields you omit (the alert type itself cannot change); 'delete' needs both ids. Get alertId from get_monitor with includeAlertHistory. Alert types and the condition each one needs: 'downtime' → {"consecutiveFailures":n}; 'latencyThreshold' → {"thresholdMs":n,"windowChecks":n}; 'errorRate' → {"thresholdPercent":1-100,"windowChecks":n}; 'schemaDrift' → {"minSeverity":"error"|"warning"|"info"}. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | Yes | What to do: 'create', 'update' or 'delete' |
monitorId |
string | Yes | Public ID (GUID) of the monitor the rule belongs to |
alertId |
string | No | Public ID (GUID) of the alert rule — required for 'update' and 'delete' |
alertType |
string | No | Alert type: 'downtime', 'latencyThreshold', 'errorRate' or 'schemaDrift' — required for 'create' |
condition |
string | No | The condition, as an object or a JSON string — required for 'create'. Shape depends on alertType, see the tool description |
cooldownMinutes |
integer | No | Minutes to wait before the rule can fire again, defaults to 30 on 'create' |
isEnabled |
boolean | No | Whether the rule is active — used by 'update' |
update_monitoring_settings
Change the project's monitoring defaults. Settings you do not pass keep their current value. These apply to monitors created afterwards; existing monitors keep their own values. Requires project context.
Required scope: monitoring:write
| Parameter | Type | Required | Description |
|---|---|---|---|
retentionDays |
integer | No | Days of check history to keep |
defaultCheckIntervalSeconds |
integer | No | Default seconds between checks for new monitors |
defaultTimeoutSeconds |
integer | No | Default request timeout in seconds for new monitors |
defaultIncidentThreshold |
integer | No | How many consecutive failures open an incident |
defaultSchemaValidationMode |
string | No | Default response schema validation for new monitors: 'off', 'warn' or 'strict' |
autoCreateMonitorsOnSpecPublish |
boolean | No | Whether publishing a spec creates monitors for its endpoints automatically |