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
| Tool | What it does | Required |
|---|---|---|
list_monitors | Lists the project's monitors with their current status and 24 hour stats. | none |
create_monitor | Creates a monitor and returns it. Its status is null until the first check. | url |
update_monitor | Changes the fields you pass on an existing monitor. Other fields stay. | id |
delete_monitor | Deletes a monitor and its history. | id |
test_monitor | Runs 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.
| Argument | Type | Notes |
|---|---|---|
url | string | The http or https URL to check. |
name | string | Display name. Untitled if omitted. |
method | string | HEAD (default), GET, POST, PUT, PATCH, DELETE, or OPTIONS. |
interval_sec | number | Seconds between checks. Raised to the plan's minimum: 300 on the free plan, 60 on Pro and Team. |
slow_ms | number | Latency at or above which a passing check is slow. Default 1500. |
timeout_ms | number | 1000 to 60000. Default 10000. |
expect_status | number | A status code from 100 to 599 that must match exactly. Omit for any status below 400. |
follow_redirects | boolean | Follow 3xx responses and judge the final one. Default false. |
check_ssl | boolean | Certificate expiry warnings. Pro and Team. |
check_domain | boolean | Domain expiry warnings. Pro and Team. |
content_rules | array | Up 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_headers | array | Up to 4 of {"name":"Authorization","value":"Bearer …"}. Stored encrypted. |
request_body | string | Up to 8 KB, with POST, PUT, PATCH, or DELETE only. |
fail_threshold | number | Consecutive failures that confirm a down. Default 3. |
recover_threshold | number | Consecutive 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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_monitor",
"arguments": { "url": "https://example.com", "name": "Marketing site" }
}
}{
"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?
- Connect an AI agent: endpoint, key, and client setup.
- Create a monitor: what each argument does in the product.