Skip to main content
Glama
watchcron

watchcron-mcp

Official
by watchcron

watchcron-mcp

npm version License: MIT

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_here

Cursor

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

tag

string

Filter monitors by tag (optional)

get_monitor

Get detailed info about a specific monitor.

Parameter

Type

Description

uuid

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

name

string

required

Monitor name (e.g. "Daily backup")

description

string

—

Optional description

schedule_type

simple | cron

required

Fixed interval or cron expression

period_seconds

number

—

Interval in seconds (for simple schedule, min 60)

cron_expression

string

—

Cron expression (for cron schedule)

timezone

string

UTC

Timezone for schedule

grace_seconds

number

—

Grace period before alerting

tags

string[]

—

Tags for organizing

update_monitor

Update an existing monitor's settings.

Parameter

Type

Description

uuid

string

Monitor UUID

name

string

New name

description

string

New description

schedule_type

simple | cron

New schedule type

period_seconds

number

New interval

cron_expression

string

New cron expression

timezone

string

New timezone

grace_seconds

number

New grace period

tags

string[]

New tags

delete_monitor

Permanently delete a monitor.

Parameter

Type

Description

uuid

string

Monitor UUID

pause_monitor

Pause or resume a monitor.

Parameter

Type

Default

Description

uuid

string

required

Monitor UUID

paused

boolean

true

true to pause, false to resume

get_pings

Get recent ping history for a monitor.

Parameter

Type

Default

Description

uuid

string

required

Monitor UUID

limit

number

10

Number of pings to return (1-100)

get_incidents

Get status change history (down/up transitions).

Parameter

Type

Default

Description

uuid

string

required

Monitor UUID

limit

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

  1. Your AI agent receives a request about cron job monitoring

  2. The agent calls WatchCron tools (list, create, check status, etc.)

  3. The MCP server communicates with the WatchCron API

  4. 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/null

Requirements

  • Node.js 18+

  • A WatchCron API key (sign up)

Other Projects by WatchCron

License

MIT

Available Tools

9 tools
create_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.

NameRequiredDescriptionDefault
nameYesMonitor name (e.g. 'Daily backup', 'DB cleanup')
tagsNoTags for organizing monitors
timezoneNoTimezone (e.g. 'UTC', 'America/New_York')
descriptionNoOptional description
grace_secondsNoGrace period in seconds before alerting (default: server default)
schedule_typeYesSchedule type: 'simple' for fixed interval, 'cron' for cron expression
period_secondsNoInterval in seconds (required for simple schedule, min 60)
cron_expressionNoCron expression (required for cron schedule, e.g. '*/5 * * * *')

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
uuidYesMonitor UUID to delete

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
uuidYesMonitor UUID
limitNoNumber of incidents to return (default 10)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
uuidYesMonitor UUID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
uuidYesMonitor UUID
limitNoNumber of pings to return (default 10)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
tagNoFilter monitors by tag

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
uuidYesMonitor UUID
pausedNotrue to pause, false to resume

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
nameNoNew name
tagsNoNew tags
uuidYesMonitor UUID
timezoneNoNew timezone
descriptionNoNew description
grace_secondsNoNew grace period
schedule_typeNoNew schedule type
period_secondsNoNew interval in seconds
cron_expressionNoNew cron expression

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 9 tool updatesv1.0.0
    • First observedcreate_monitor
    • First observeddelete_monitor
    • First observedget_incidents
    • First observedget_monitor
    • First observedget_pings
    • First observedlist_channels
    • First observedlist_monitors
    • First observedpause_monitor
    • First observedupdate_monitor

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    7
    294 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables assistants to monitor cron jobs, investigate failures via runs and incidents, and create or manage monitors through the Tickwatch API.
    MIT