Tools reference

Every tool the MCP server exposes, its arguments, and what it returns.

This page lists every tool the MCP server exposes, with its arguments and what it returns. list_monitors covers every monitor in the key's project. The other tools create and manage HTTP, Keyword, and API monitors.

#Tools

ToolWhat it doesRequired
list_monitorsLists the project's monitors with their current status and 24 hour stats.none
create_monitorCreates a monitor and returns it. Its status is null until the first check.url
update_monitorChanges the fields you pass on an existing monitor. Other fields stay.id
delete_monitorDeletes a monitor and its history.id
test_monitorRuns one check against a draft without saving it and returns the result.url

Each tool returns one text block containing JSON: the monitor, the list of monitors, the check result, or {"ok":true} for a delete. An error comes back as a tool error with the same codes as the REST API, for example {"error":"monitor_limit","limit":5}. See Errors.

#Monitor arguments

create_monitor, update_monitor, and test_monitor accept these arguments. Every one is optional except url on create and test.

ArgumentTypeNotes
urlstringThe http or https URL to check.
namestringDisplay name. Untitled if omitted.
methodstringHEAD (default), GET, POST, PUT, PATCH, DELETE, or OPTIONS.
interval_secnumberSeconds between checks. Raised to the plan's minimum: 300 on the free plan, 60 on Pro and Team.
slow_msnumberLatency at or above which a passing check is slow. Default 1500.
timeout_msnumber1000 to 60000. Default 10000.
expect_statusnumberA status code from 100 to 599 that must match exactly. Omit for any status below 400.
follow_redirectsbooleanFollow 3xx responses and judge the final one. Default false.
check_sslbooleanCertificate expiry warnings. Pro and Team.
check_domainbooleanDomain expiry warnings. Pro and Team.
content_rulesarrayUp to 4 rules: {"type":"text_contains","value":"…"}, {"type":"text_absent","value":"…"}, or {"type":"json_field","path":"data.status","equals":"ok"}. JSON rules need Pro or Team.
request_headersarrayUp to 4 of {"name":"Authorization","value":"Bearer …"}. Stored encrypted.
request_bodystringUp to 8 KB, with POST, PUT, PATCH, or DELETE only.
fail_thresholdnumberConsecutive failures that confirm a down. Default 3.
recover_thresholdnumberConsecutive passes that confirm the recovery. Default 1.

update_monitor also takes enabled. Pass false to pause the monitor and true to resume it.

#Example call

A tools/call request and the shape of its answer:

JSON
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_monitor",
    "arguments": { "url": "https://example.com", "name": "Marketing site" }
  }
}
JSON
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{ "type": "text", "text": "{ \"id\": \"…\", \"name\": \"Marketing site\", \"status\": null, … }" }]
  }
}

#The prompt

The server also offers one prompt, register-monitor, with an optional url argument. It instructs the agent to list the existing monitors, then create the new one, which keeps a chatty agent from creating duplicates.

#What's next?