cronalert-mcp
cronalert-mcp lets you manage CronAlert uptime monitoring through any MCP-compatible AI client (Claude, Cursor, Windsurf, etc.).
Monitor Management
list_monitors— List all monitors with optional status filtering (up,down,unknown) and paginationcreate_monitor— Create an HTTP monitor with a name, URL, check interval, HTTP method, and expected status codeget_monitor— Retrieve detailed info and current status for a specific monitor by IDupdate_monitor— Modify a monitor's name, URL, method, check interval, expected status code, or pause/resume itdelete_monitor— Permanently delete a monitor and all its check history (irreversible)
Status & Incidents
get_check_results— View recent check history for a monitor, including response times, status codes, and uptime percentageget_monitor_incidents— Retrieve incident (downtime) history for a specific monitorlist_incidents— View all currently active incidents across all monitors
Status Pages
list_status_pages— List all public status pages configured for your account
Most list operations support pagination (up to 100 results per page), and the server can be used remotely without local installation via authentication headers.
cronalert-mcp
MCP server for CronAlert uptime monitoring. Manage your monitors, check results, and incidents from Claude, Cursor, Windsurf, or any MCP-compatible AI client.
Quick Start
1. Get your API key
Sign up at cronalert.com and create an API key in Settings > API Keys.
When creating the key, choose a scope:
Read-only — the agent can list and read monitors, check results, and incidents but cannot create, update, or delete anything. Recommended for most agent setups.
Read & write — full access, including destructive tools. Optionally enable "require confirmation" so deletes need a server-issued confirmation token (see Security & permissions).
2. Add to your MCP client
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"cronalert": {
"command": "npx",
"args": ["-y", "cronalert-mcp"],
"env": {
"CRONALERT_API_KEY": "ca_your_api_key_here"
}
}
}
}Claude Code — run:
claude mcp add cronalert -e CRONALERT_API_KEY=ca_your_key -- npx -y cronalert-mcpCursor — add to .cursor/mcp.json:
{
"mcpServers": {
"cronalert": {
"command": "npx",
"args": ["-y", "cronalert-mcp"],
"env": {
"CRONALERT_API_KEY": "ca_your_api_key_here"
}
}
}
}Remote server (no install needed) — connect any MCP client to:
https://cronalert.com/mcpAuthenticate with Authorization: Bearer ca_your_key header. Supports Streamable HTTP transport.
3. Start using it
Ask your AI assistant to manage your monitors (see examples below).
Related MCP server: DevHelm MCP Server
Available Tools
Tool | Description | Type |
| List all monitors with status and response times | Read |
| Create a new HTTP monitor | Write |
| Get details for a specific monitor | Read |
| Update settings, pause/resume | Write |
| Permanently delete a monitor | Write |
| Check history with uptime % and response times | Read |
| Incidents for a specific monitor | Read |
| All active incidents across monitors | Read |
| Your public status pages | Read |
Security & permissions
Approvals in MCP clients are client-side: write tools carry destructiveHint: true, so Claude Code / Desktop / Cursor prompt before running them. CronAlert adds two server-side boundaries so the client prompt isn't the only gate:
Read-only API keys. A read-only key is rejected on every write endpoint (create/update/delete/import) with a 403 — enforced by the server, regardless of the client. Hand agents a read-only key and destructive tools simply cannot succeed. This is the strongest boundary and the recommended default.
Confirmation tokens for deletes. If a read-write key has "require confirmation" enabled,
delete_monitorfirst returns a preview plus a short-lived, resource-boundconfirmTokeninstead of deleting. The agent must calldelete_monitoragain with that token in theconfirmargument. This prevents a single stray or prompt-injected call from destroying data and gives the server an auditable, explicit second step.
The API key is scoped to a single team, so the blast radius of any key is that team's resources.
Examples
Example 1: Create a monitor and check its status
User prompt: "Create a monitor for https://api.example.com/health that checks every minute, then show me its details."
What happens:
The AI calls
create_monitorwithname: "API Health",url: "https://api.example.com/health",checkInterval: 60CronAlert creates the monitor and returns its ID
The AI calls
get_monitorwith the new ID to show the details
Expected output:
{
"id": "abc123",
"name": "API Health",
"url": "https://api.example.com/health",
"method": "GET",
"checkInterval": 60,
"lastStatus": "unknown",
"createdAt": "2026-03-08T12:00:00Z"
}Example 2: Check uptime and respond to incidents
User prompt: "Are any of my monitors down? If so, show me the error details."
What happens:
The AI calls
list_incidentsto check for active incidentsIf incidents exist, it calls
get_monitorfor each affected monitorIt calls
get_check_resultsto get the recent error details
Expected output (no incidents):
{
"data": [],
"message": "No active incidents"
}Expected output (with incident):
{
"data": [
{
"id": "inc_xyz",
"monitorId": "abc123",
"cause": "Expected status 200, got 503",
"startedAt": "2026-03-08T11:45:00Z"
}
]
}Example 3: List monitors and pause one for maintenance
User prompt: "List all my monitors, then pause the staging one."
What happens:
The AI calls
list_monitorsto get all monitorsIt identifies the staging monitor by name
It calls
update_monitorwithid: "staging_id"andpaused: true
Expected output:
{
"id": "staging_id",
"name": "Staging Server",
"isPaused": true,
"lastStatus": "up"
}Requirements
Node.js 18+
A CronAlert account (free tier works)
An API key from Settings > API Keys
Privacy Policy
This MCP server connects to the CronAlert API (cronalert.com/api/v1/) using your API key. It transmits:
Monitor configuration (names, URLs, check intervals) when creating or updating monitors
API key for authentication on every request
Data is processed by CronAlert's servers on Cloudflare's infrastructure. No data is stored locally by the MCP server itself. See our full Privacy Policy for details on data collection, retention, and your rights.
Support
Website: cronalert.com
Email: support@cronalert.com
Issues: GitHub Issues
License
MIT
Available Tools
9 toolscreate_monitorADestructive
Create a new uptime monitor that periodically checks a URL and alerts on failure.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name for the monitor | |
| url | Yes | URL to monitor | |
| checkInterval | No | Check interval in seconds (default 180) | |
| method | No | HTTP method (default GET) | GET |
| expectedStatusCode | No | Expected HTTP status code (default 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, which the description aligns with by describing a creation action. The description adds useful context beyond annotations: it specifies the monitor's purpose (periodic URL checks and alerting on failure), which isn't covered by annotations. However, it doesn't detail rate limits, authentication needs, or specific alert mechanisms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose without unnecessary words. It's front-loaded with the main action and includes essential details (URL checking, alerting) in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (creation with 5 parameters), annotations cover safety (destructive), and schema fully describes inputs, the description provides adequate context. It explains what the monitor does (checks URL, alerts) but lacks output details (no output schema) and doesn't mention error handling or response format, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain 'checkInterval' or 'method' further). Baseline is 3 as the schema does the heavy lifting, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create a new uptime monitor') and specifies the resource ('that periodically checks a URL and alerts on failure'). It distinguishes from siblings like 'get_monitor' or 'update_monitor' by emphasizing creation rather than retrieval or modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting up URL monitoring but doesn't explicitly state when to use this vs. alternatives like 'update_monitor' or prerequisites. It mentions 'alerts on failure' which hints at its purpose, but lacks explicit guidance on when-not-to-use or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_monitorADestructive
Permanently delete a monitor and all its check history. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Monitor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds valuable context about what gets destroyed ('all its check history') and the permanence ('cannot be undone'). This goes beyond the annotations by specifying the scope of destruction and irreversible nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste - the first states the action and scope, the second warns about irreversibility. Every word earns its place and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with good annotations and simple parameters, the description provides adequate context about what gets deleted and the permanence. However, without an output schema, it doesn't describe what the tool returns upon success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single 'id' parameter fully documented. The description doesn't add any parameter-specific information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Permanently delete') and resource ('a monitor and all its check history'), distinguishing it from sibling tools like update_monitor or get_monitor. It provides explicit scope beyond just the monitor itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates this should be used for permanent removal of monitors, but doesn't explicitly state when to choose this over alternatives like update_monitor or when not to use it. The irreversible nature is mentioned, which provides some contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_check_resultsBRead-only
Get recent check results for a monitor, including response times, status codes, and uptime percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Monitor ID | |
| page | No | Page number | |
| limit | No | Results per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's read-only, non-destructive, and closed-world, so the description adds value by specifying the type of data returned (response times, status codes, uptime percentage) and implying pagination ('recent' suggests limited results). However, it doesn't disclose rate limits, auth needs, or detailed behavioral traits beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and lists key data points without unnecessary words. Every part earns its place by clarifying scope and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema) and rich annotations, the description is adequate but incomplete. It covers what data is returned but lacks details on output format, error handling, or how 'recent' maps to pagination, leaving gaps for an agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying 'recent' results, which relates to pagination but doesn't clarify parameter usage or constraints beyond the schema's technical details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('recent check results for a monitor'), specifying the data returned (response times, status codes, uptime percentage). It distinguishes from siblings like 'get_monitor' (which likely returns monitor metadata) by focusing on check results, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_monitor_incidents' or 'list_incidents', nor does it mention prerequisites (e.g., needing a monitor ID). The description implies usage for retrieving performance data but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monitorBRead-only
Get detailed information about a specific monitor including its current status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Monitor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering safety and scope. The description adds that it retrieves 'detailed information' and 'current status', which provides useful context beyond annotations. However, it doesn't disclose behavioral traits like rate limits, authentication needs, or response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get detailed information about a specific monitor') and adds key specifics ('including its current status'). There is no wasted wording, and it's appropriately sized for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema) and rich annotations (covering read-only, non-destructive, closed-world), the description is minimally adequate. It specifies what information is retrieved but lacks details on output format or error handling. For a simple read tool, this is acceptable but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'id' documented as 'Monitor ID'. The description doesn't add any semantic details beyond what the schema provides, such as format examples or where to find the ID. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('monitor'), specifying it provides 'detailed information' and 'current status'. It distinguishes from siblings like 'list_monitors' by focusing on a single monitor, but doesn't explicitly contrast with 'get_check_results' or 'get_monitor_incidents' which might provide related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_monitor' over 'list_monitors' for overviews, or how it differs from 'get_check_results' or 'get_monitor_incidents' for related monitor data. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monitor_incidentsBRead-only
Get incidents for a specific monitor — periods when the monitor was down.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Monitor ID | |
| page | No | Page number | |
| limit | No | Results per page (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and closed-world behavior. The description adds minimal behavioral context by clarifying that incidents represent 'periods when the monitor was down,' which helps interpret the data. However, it lacks details on rate limits, authentication needs, or response format, keeping the score at a baseline level with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, consisting of a single, clear sentence: 'Get incidents for a specific monitor — periods when the monitor was down.' Every word contributes to understanding the tool's purpose without any redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema), the description is minimally adequate. It explains what the tool does but lacks details on output structure, error handling, or integration with sibling tools. With annotations covering safety and world hints, the description meets basic needs but leaves gaps for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters like 'id' (Monitor ID), 'page', and 'limit'. The description does not add any parameter-specific semantics beyond what the schema provides, such as format examples or usage tips, resulting in the baseline score for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get incidents for a specific monitor — periods when the monitor was down.' It specifies the verb ('Get'), resource ('incidents'), and scope ('for a specific monitor'), but does not explicitly differentiate it from sibling tools like 'list_incidents' or 'get_check_results', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'list_incidents' (which might list all incidents) or 'get_check_results' (which could provide different data), nor does it specify prerequisites or exclusions, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incidentsBRead-only
List all active incidents across all monitors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, covering the core safety profile. The description adds the scope constraint ('active incidents across all monitors') which provides useful behavioral context beyond annotations, but doesn't address other aspects like pagination, sorting, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the essential purpose without any wasted words. It's appropriately sized for a simple list operation with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with good annotations but no output schema, the description provides adequate but minimal context. It specifies scope ('active incidents across all monitors') but doesn't explain what constitutes an 'active' incident, return format, or how results are organized. The annotations help but don't fully compensate for the missing output details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the schema fully documents the input structure (none required). The description appropriately doesn't need to explain parameters, and the baseline for this situation is 4 since there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all active incidents across all monitors'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its sibling 'get_monitor_incidents', which appears to be a more targeted version of incident retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_monitor_incidents' or 'get_check_results'. It doesn't mention prerequisites, exclusions, or comparative use cases with sibling tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsARead-only
List all uptime monitors. Optionally filter by status (up, down, unknown) and paginate.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| status | No | Filter by monitor status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering safety and scope. The description adds useful context about optional filtering and pagination, which are behavioral traits not captured in annotations. However, it doesn't mention rate limits, authentication needs, or what happens with large result sets beyond pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List all uptime monitors') and then succinctly adds optional features. Every word earns its place with zero redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with good annotations and full schema coverage, the description is reasonably complete. It covers the core functionality and optional features. The main gap is the lack of output schema, so the description doesn't explain return values (e.g., structure of monitor objects), but this is mitigated by the tool's simplicity and clear annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema itself. The description adds marginal value by mentioning the optional filtering and pagination, but doesn't provide additional semantics beyond what the schema already documents (e.g., format details or usage examples). Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all uptime monitors'), making the purpose immediately understandable. It distinguishes from other list operations by specifying the resource type (monitors vs incidents or status pages). However, it doesn't explicitly differentiate from 'get_monitor' which retrieves a single monitor, leaving some sibling ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage through the optional filtering parameters (status and pagination), suggesting when to use these features. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_monitor' (single monitor) or 'get_check_results' (detailed results), nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_status_pagesBRead-only
List all public status pages configured for your account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a read-only, non-destructive, closed-world operation. The description adds minimal behavioral context by specifying 'public status pages' and 'for your account', which clarifies scope but doesn't detail aspects like pagination, rate limits, or response format. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, read-only operation) and lack of an output schema, the description is adequate but has clear gaps. It doesn't explain what the output looks like (e.g., list format, fields included) or mention any limitations like pagination, which could be important for an agent using this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the schema fully documents the inputs. The description adds no parameter information, which is acceptable here since there are no parameters to explain. A baseline of 4 is appropriate as the description doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all public status pages configured for your account'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_monitors' or 'list_incidents', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_monitors' or 'list_incidents', nor does it mention any prerequisites or contextual constraints. It simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_monitorADestructive
Update an existing monitor's configuration (name, URL, interval, method, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Monitor ID | |
| name | No | Display name | |
| url | No | URL to monitor | |
| checkInterval | No | Check interval in seconds | |
| method | No | HTTP method | |
| expectedStatusCode | No | Expected HTTP status code | |
| paused | No | Pause or resume the monitor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true (mutation) and readOnlyHint=false, which the description aligns with by using 'Update'. The description adds context about what gets modified ('configuration') and examples of fields (name, URL, interval, method), providing useful behavioral details beyond annotations, though it doesn't cover rate limits or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Update an existing monitor's configuration') and includes relevant examples without unnecessary details. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, destructive operation) and lack of output schema, the description is adequate but incomplete. It covers the action and examples of configurable fields, but doesn't address return values, error conditions, or dependencies on other tools, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description lists example fields (name, URL, interval, method, etc.), which adds marginal semantic context but doesn't provide additional meaning beyond what the schema already specifies for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('existing monitor's configuration'), making the purpose evident. It distinguishes from siblings like 'create_monitor' by specifying 'existing', but doesn't explicitly differentiate from other update-related tools (though none are listed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While it implies usage for modifying monitors, there's no mention of prerequisites (e.g., needing monitor ID), exclusions, or comparisons to siblings like 'get_monitor' for checking current configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.1- First observed
create_monitor - First observed
delete_monitor - First observed
get_check_results - First observed
get_monitor - First observed
get_monitor_incidents - First observed
list_incidents - First observed
list_monitors - First observed
list_status_pages - First observed
update_monitor
TDQS
Every tool has a clearly distinct purpose with no ambiguity. The tools are well-organized around specific resources (monitors, incidents, status pages) and actions (create, delete, get, list, update), making it easy for an agent to select the correct tool without confusion.
All tool names follow a consistent verb_noun pattern (e.g., create_monitor, list_incidents, update_monitor). The naming is uniform throughout, using snake_case and clear, descriptive verbs that align with the action each tool performs.
With 9 tools, the server is well-scoped for uptime monitoring and alerting. Each tool serves a distinct and necessary function, covering core operations like CRUD for monitors, incident management, and status page listing, without being overly sparse or bloated.
The tool surface provides complete CRUD/lifecycle coverage for the uptime monitoring domain. It includes creation, retrieval, updating, and deletion of monitors, along with incident tracking and status page management, leaving no obvious gaps for agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.
AI-powered website change monitoring - manage monitors and alerts via MCP.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceMCP server for Uptrack uptime monitoring. Manage monitors and incidents from AI agents like Claude, ChatGPT, and Cursor.13MIT
DevHelm MCP Serverofficial
AlicenseBqualityCmaintenanceMCP server for uptime monitoring, incidents, alerting, and dependency status.1291MIT
Drumbeats MCPofficial
AlicenseAqualityAmaintenanceMCP server for Drumbeats monitoring. Enables creating monitors, triaging incidents, and running HTTP/SSL/DNS checks using natural language from any AI client.16202Apache 2.0
uptimepageofficial
AlicenseNot gradedqualityAmaintenanceMCP server for Uptimepage uptime monitoring. An LLM client can read your monitors and incidents, run a check on demand, and post incident updates. Writes need an OAuth login and a scoped token, and each one is logged.27AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaredhobbs/cronalert-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server