watchcron-mcp
OfficialLists the notification channels configured in WatchCron, including Slack channels alongside email and webhooks, so an agent can see where monitor alerts are delivered.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@watchcron-mcpCreate a monitor for my daily backup that runs every 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
watchcron-mcp
Monitor your cron jobs and scheduled tasks from AI agents. MCP server for WatchCron.
Features
List all cron job monitors and their current status
Create new monitors with simple interval or cron expression schedules
Get the ping URL to add to your crontab or task scheduler
View ping history and incident timeline
Pause and resume monitors
Update monitor settings (schedule, grace period, tags)
Delete monitors you no longer need
List notification channels (email, Slack, webhook)
Related MCP server: healthchecks-io-mcp
Quick Start
1. Get your API key
Sign up and generate an API key at watchcron.com.
2. Configure your AI client
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"watchcron": {
"command": "npx",
"args": ["-y", "watchcron-mcp"],
"env": {
"WATCHCRON_API_KEY": "your_api_key_here"
}
}
}
}Claude Code
claude mcp add watchcron \
npx -y watchcron-mcp \
-e WATCHCRON_API_KEY=your_api_key_hereCursor
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"watchcron": {
"command": "npx",
"args": ["-y", "watchcron-mcp"],
"env": {
"WATCHCRON_API_KEY": "your_api_key_here"
}
}
}
}Windsurf
Add to your Windsurf MCP configuration with the same npx -y watchcron-mcp command and set the WATCHCRON_API_KEY environment variable.
Available Tools
list_monitors
List all cron job monitors in your project. Optionally filter by tag.
Parameter | Type | Description |
| string | Filter monitors by tag (optional) |
get_monitor
Get detailed info about a specific monitor.
Parameter | Type | Description |
| string | Monitor UUID |
create_monitor
Create a new cron job monitor. Returns the ping URL to add to your cron job.
Parameter | Type | Default | Description |
| string | required | Monitor name (e.g. "Daily backup") |
| string | — | Optional description |
|
| required | Fixed interval or cron expression |
| number | — | Interval in seconds (for simple schedule, min 60) |
| string | — | Cron expression (for cron schedule) |
| string | UTC | Timezone for schedule |
| number | — | Grace period before alerting |
| string[] | — | Tags for organizing |
update_monitor
Update an existing monitor's settings.
Parameter | Type | Description |
| string | Monitor UUID |
| string | New name |
| string | New description |
|
| New schedule type |
| number | New interval |
| string | New cron expression |
| string | New timezone |
| number | New grace period |
| string[] | New tags |
delete_monitor
Permanently delete a monitor.
Parameter | Type | Description |
| string | Monitor UUID |
pause_monitor
Pause or resume a monitor.
Parameter | Type | Default | Description |
| string | required | Monitor UUID |
| boolean | true | true to pause, false to resume |
get_pings
Get recent ping history for a monitor.
Parameter | Type | Default | Description |
| string | required | Monitor UUID |
| number | 10 | Number of pings to return (1-100) |
get_incidents
Get status change history (down/up transitions).
Parameter | Type | Default | Description |
| string | required | Monitor UUID |
| number | 10 | Number of incidents to return (1-100) |
list_channels
List notification channels (email, Slack, webhook, etc.).
No parameters required.
Example Prompts
"Show me all my cron monitors"
"Create a monitor for my daily backup that runs every 24 hours"
"Create a monitor for '*/5 * * * *' called 'Health check'"
"What's the status of my database cleanup monitor?"
"Show me the last 20 pings for monitor abc-123"
"Pause the nightly report monitor"
"Has my backup job had any incidents recently?"
"List my notification channels"
How It Works
Your AI agent receives a request about cron job monitoring
The agent calls WatchCron tools (list, create, check status, etc.)
The MCP server communicates with the WatchCron API
Results are returned to the AI agent in a readable format
Typical workflow
You: "Set up monitoring for my backup script that runs at 2am daily"
Agent: Creates a monitor with cron expression "0 2 * * *"
Returns the ping URL
You: Add to your crontab:
0 2 * * * /path/to/backup.sh && curl -fsS https://watchcron.com/ping/xxx > /dev/nullRequirements
Node.js 18+
A WatchCron API key (sign up)
Other Projects by WatchCron
ScreenshotRun — Screenshot API for developers and AI agents
SnapshotArchive — Automated website monitoring with visual diff detection
License
MIT
Available Tools
9 toolscreate_monitorA
Create a new cron job monitor. Returns the ping URL that your cron job should call. Supports simple interval (every N seconds) or cron expression schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Monitor name (e.g. 'Daily backup', 'DB cleanup') | |
| tags | No | Tags for organizing monitors | |
| timezone | No | Timezone (e.g. 'UTC', 'America/New_York') | |
| description | No | Optional description | |
| grace_seconds | No | Grace period in seconds before alerting (default: server default) | |
| schedule_type | Yes | Schedule type: 'simple' for fixed interval, 'cron' for cron expression | |
| period_seconds | No | Interval in seconds (required for simple schedule, min 60) | |
| cron_expression | No | Cron expression (required for cron schedule, e.g. '*/5 * * * *') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the tool returns a ping URL and supports two schedule modes, but it does not mention permissions, side effects, uniqueness constraints, or failure behavior for a mutation operation.
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?
Three short sentences front-load the core action, then cover the return value and scheduling modes. There is no redundant or filler language.
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 8 parameters, full schema coverage, and no output schema, the description covers the essential points: what is created, what is returned, and how scheduling works. The main remaining gap is the lack of annotation-backed safety context, which is a behavioral rather than structural omission.
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 all eight parameters are already documented in the input schema. The description reinforces the schedule_type distinction between simple interval and cron expression, but adds no syntax or validation detail beyond the schema.
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 states a specific verb and resource ('Create a new cron job monitor') and immediately distinguishes the operation from siblings like list_monitors, update_monitor, and delete_monitor. It also names the supported schedule modes, making the tool's role unambiguous.
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 makes clear that this is the tool for creating a monitor, but it does not explicitly say when to use it versus alternatives such as update_monitor or pause_monitor. Usage is implied by the verb 'Create' rather than stated through explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_monitorB
Permanently delete a cron job monitor. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Monitor UUID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the single most important trait: the deletion is permanent and irreversible. It omits other relevant behavior an agent would want before a destructive call, such as what happens to associated pings/incidents or whether an active monitor must be paused first.
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 short sentences with zero waste, and the irreversible nature is front-loaded where an agent will see it before acting.
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 one-parameter delete tool with a fully documented schema and no output schema, the definition covers purpose and the critical irreversibility warning. Only secondary details about side effects on related data are missing.
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 coverage is 100% for the single 'uuid' parameter, which is already documented as 'Monitor UUID to delete.' The description adds no syntax, format, or sourcing detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource: 'Permanently delete a cron job monitor.' The adverb 'permanently' implicitly separates it from pause_monitor, but no sibling is named explicitly, so the differentiation is left to inference.
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?
There is no statement of when to use this versus alternatives such as pause_monitor or update_monitor, and no prerequisites or exclusions. The 'cannot be undone' warning signals caution but is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incidentsA
Get status change history (incidents) for a monitor. Shows when the monitor went down, recovered, or changed status.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Monitor UUID | |
| limit | No | Number of incidents to return (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Get' and 'history' imply a safe read, and the description usefully discloses what the records represent (down, recovered, status changes). However, nothing is said about ordering, time-range/retention limits, or pagination beyond the default cap in the schema.
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 short sentences, zero filler, with the core purpose front-loaded and the explanatory gloss immediately after. Nothing could be removed without losing information.
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 simple two-parameter read tool with fully documented schema, the description covers the essential question of what the returned records mean, which matters since there is no output schema. It falls short only on ordering and pagination/retention behavior that an agent would need to interpret a truncated result set.
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 coverage is 100%, with both uuid and limit documented including default and min/max bounds, so the schema does the heavy lifting. The description adds no parameter-level meaning (e.g., that limit truncates the most recent incidents) beyond what is already structured.
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?
States a specific verb (Get) and resource (status change history / incidents for a monitor), and the parenthetical clarifies what an 'incident' means here. It distinguishes itself from get_pings only implicitly — pings are raw checks, incidents are status transitions — but that contrast is never named, so an agent must infer the boundary.
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?
Usage is implied by the description: call this when you need to know when a monitor went down or recovered. There is no explicit guidance on when to prefer this over get_pings or get_monitor, and no mention of prerequisites such as needing a valid monitor UUID from list_monitors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monitorA
Get detailed information about a specific cron job monitor, including its status, schedule, ping URL, last ping time, and next expected ping.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Monitor UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the shape of the response (status, schedule, ping URL, last ping time, next expected ping), which is useful. However, it says nothing about behavior for an unknown UUID, permission requirements, or read-only semantics beyond the verb 'Get'.
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?
A single front-loaded sentence that identifies the resource and then lists what comes back; every clause earns its place with no filler.
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 one-parameter read tool with a fully documented schema and no output schema, enumerating the returned fields is the main thing needed, and the description does that. It falls slightly short only on error/permission behavior, which is minor for this complexity.
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 coverage is 100% and the sole parameter 'uuid' is already documented as 'Monitor UUID'. The description only implies identification via 'a specific cron job monitor', adding no format or sourcing guidance beyond the schema, so the baseline 3 applies.
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?
States a specific verb ('Get') and resource ('detailed information about a specific cron job monitor'), and enumerates the returned fields, which lets an agent distinguish it from list_monitors at a glance. The word 'specific' signals the single-resource lookup versus a listing.
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?
Usage is only implied: an agent infers it should call this when it already has a monitor identifier and needs full details. The description never explicitly contrasts with list_monitors or get_pings, nor does it state prerequisites such as needing a valid UUID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pingsB
Get recent ping history for a monitor. Shows when pings were received, their type (success/start/fail), source IP, and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Monitor UUID | |
| limit | No | Number of pings to return (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully describes returned ping attributes (timestamp, type, source IP, duration), but does not state read-only behavior, ordering, time range, or error handling.
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, no wasted words, with the primary action front-loaded and the returned fields summarized efficiently.
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?
With no output schema, the description compensates by listing the key returned fields, which helps the agent understand the result shape. It remains slightly incomplete about ordering or time-range behavior, but is adequate for a simple retrieval tool.
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 both parameters (uuid and limit) are already documented in the input schema. The description adds no additional parameter semantics beyond what the schema provides, which is appropriate for the baseline score.
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?
States a specific verb and resource: retrieves recent ping history for a monitor. The description also lists the returned fields, making the tool's purpose clear, though it does not explicitly distinguish this tool from siblings like get_monitor or get_incidents.
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?
Provides no explicit guidance on when to use this tool versus alternatives such as get_monitor or get_incidents. The intended use is implied by 'for a monitor,' but there are no exclusions or comparative instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsA
List notification channels configured in your WatchCron project (email, Slack, webhook, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; "List" implies a safe read, and "configured in your WatchCron project" usefully states the scope of the result set. It does not state pagination behavior, ordering, or what happens when no channels exist, and leaves read-only status implicit rather than declared.
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?
A single front-loaded sentence with zero filler; the resource is named first and the example channel types are a compact parenthetical.
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 zero-param list tool with no output schema, the description conveys enough about return contents (notification channel records of various types) and scope to call it correctly. Minor gaps are the shape of each returned item and pagination, which are low-risk for this tool.
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?
The schema has zero parameters, which is the baseline-4 case; the description correctly implies a no-argument, project-wide listing. No parameter meaning needs to be added.
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?
Specific verb ("List") plus specific resource ("notification channels") scoped to the WatchCron project, with concrete example types (email, Slack, webhook). It is clearly distinguishable from the monitor-centric siblings (list_monitors, get_monitor, etc.), though it never explicitly contrasts itself with them.
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?
Usage is only implied: an agent can infer this is the discovery call for channels before configuring notifications. There is no explicit when-to-use/when-not-to-use guidance and no mention that it takes no arguments or that it should precede channel selection elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsA
List all cron job monitors in your WatchCron project. Shows name, status, schedule, last ping time, and ping URL for each monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter monitors by tag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses the return fields (name, status, schedule, last ping, ping URL), effectively compensating for the absent output schema, but says nothing about permissions, pagination, or result ordering.
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 tight sentences with no filler; the resource and scope are front-loaded and the returned fields follow. Nothing needs trimming.
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 simple read-only list tool with zero required parameters and no output schema, the description covers what it does and what comes back. Only pagination/ordering behavior is left unstated.
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 single tag parameter is already documented in the schema and the baseline is 3. The description never mentions the tag filter, so it adds no meaning beyond what the schema provides.
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?
States a specific verb and resource ("List all cron job monitors") plus scope ("in your WatchCron project"), and enumerates the returned fields. It implicitly distinguishes itself from get_monitor (which fetches one), though it never names the sibling explicitly.
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?
Usage is only implied by "List all" — an agent can infer this is the enumeration call versus get_monitor for a single monitor. There is no explicit when-to-use/when-not guidance and no mention of the tag filter as a way to narrow the listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_monitorA
Pause or resume a cron job monitor. Paused monitors won't trigger alerts when pings are missed.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Monitor UUID | |
| paused | No | true to pause, false to resume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the key effect that paused monitors suppress missed-ping alerts, but it does not cover permissions, reversibility details, or what happens to existing pings/incidents.
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 short sentences with the core action front-loaded and no wasted text. The behavioral consequence is placed immediately after the action.
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 simple two-parameter toggle with full schema coverage and no output schema, the description is largely sufficient. A note on return behavior or permissions would make it fully complete, but those are minor gaps here.
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 uuid and paused parameters are already documented. The description reinforces the pause/resume meaning but adds no syntax or edge-case semantics beyond the schema.
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 names a specific verb pair and resource: pause or resume a cron job monitor. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling update_monitor, which could plausibly also toggle state.
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 sentence about paused monitors not triggering alerts implies when the tool is useful, but there is no explicit guidance on when to use pause_monitor versus update_monitor or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_monitorC
Update an existing cron job monitor's settings (name, schedule, grace period, tags).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| tags | No | New tags | |
| uuid | Yes | Monitor UUID | |
| timezone | No | New timezone | |
| description | No | New description | |
| grace_seconds | No | New grace period | |
| schedule_type | No | New schedule type | |
| period_seconds | No | New interval in seconds | |
| cron_expression | No | New cron expression |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden yet says nothing about partial-update semantics (are unmentioned fields preserved or reset?), required permissions, reversibility, or the response. For a mutation tool accepting 9 fields, this is a significant gap; only 'existing' hints at a precondition.
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?
A single efficient sentence with the verb and resource front-loaded and no wasted words. It is appropriately sized, though brevity here comes partly at the cost of completeness.
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?
A 9-parameter mutation tool with no annotations and no output schema needs more than one sentence: partial-update behavior, failure modes, and required permissions are all missing. The definition is not sufficient for an agent to call it confidently.
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 baseline is 3. The description names 4 of 9 fields (name, schedule, grace period, tags) but adds no syntax or format guidance for cron_expression, timezone, or schedule_type beyond what the schema already states.
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 states a specific verb (Update) and resource (an existing cron job monitor) and enumerates representative settings. 'Existing' distinguishes it from create_monitor, though it doesn't address the pause_monitor/delete_monitor 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?
There is no indication of when to prefer this tool over siblings like pause_monitor (which also mutates a monitor's state) or when not to use it. The only implicit guidance is 'existing', leaving the agent to infer prerequisites and conditions.
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.
9 tool updates
v1.0.0- First observed
create_monitor - First observed
delete_monitor - First observed
get_incidents - First observed
get_monitor - First observed
get_pings - First observed
list_channels - First observed
list_monitors - First observed
pause_monitor - First observed
update_monitor
TDQS
Scored across 9 tools
Each tool has a distinct resource+action target: monitor CRUD is split cleanly across list/get/create/update/delete, with pause_monitor covering the orthogonal state toggle. get_pings and get_incidents target clearly separate history types, and list_channels is the only channel tool, so there are no ambiguous boundaries.
All tools follow a consistent snake_case verb_noun pattern (list_monitors, get_monitor, create_monitor, delete_monitor, get_pings, get_incidents). The single deviation, pause_monitor, still fits the pattern even though it also resumes.
Nine tools is well-scoped for a cron monitoring service, with each tool earning its place across the lifecycle (create/list/get/update/delete) plus observability and notification surfaces. No redundant or filler tools.
Monitor lifecycle is fully covered (create, list, get, update, delete, pause/resume) with ping and incident history reads, so core workflows have no dead ends. The gap is channels: list_channels exists with no create/update/delete-channel counterpart, and there is no manual ping/test trigger.
Related MCP Connectors
Manage Cronitor monitors and send telemetry pings — list, inspect, create, update, delete.
Monitor websites, APIs, and servers: create monitors, triage incidents, and query uptime stats.
Manage CronPulser from an AI agent: HTTP, Runner and TLS jobs, alerts, Runners and run history.
Know when cron jobs and AI agents stop running: create monitors and check in from your agent.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Uptime Agent monitoring system to check uptime status, manage incidents, create new monitors, and analyze downtime through natural conversation.71MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Healthchecks.io, allowing users to list, create, update, pause, resume, and delete checks, as well as view ping history and integrations.34 npm1MIT
- AlicenseAqualityBmaintenanceEnables users to manage OmniWatchGuard website monitors and alerts via natural language. Supports listing, creating, updating, pausing, resuming, and deleting monitors, plus reviewing recent notifications across channels.7294 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables assistants to monitor cron jobs, investigate failures via runs and incidents, and create or manage monitors through the Tickwatch API.MIT