Validate and explain cron expressions; list next/previous run times in any time zone, DST-aware.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List every run of a cron expression between start and end (both inclusive) in an IANA time zone, DST-aware, oldest first. Default limit 20, max 100; truncated is true when there are more. Read-only. Same engine as GET /api/between.
Window end (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds.
Window start (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds.
Cron expression, e.g. "0 9 * * 1-5", "*/15 * * * *", "0 30 8 * * *" (6 fields = leading seconds) or "@daily".
Max runs to return (1-100).
IANA time zone the schedule runs in, e.g. "America/Denver", "Europe/London". Default UTC.
List every run of a cron expression between start and end (both inclusive) in an IANA time zone, DST-aware, oldest first. Default limit 20, max 100; truncated is true when there are more. Read-only. Same engine as GET /api/between.
| Argument | Type | Description |
|---|---|---|
| end* | string | Window end (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds. |
| limit | integer | Max runs to return (1-100). |
| start* | string | Window start (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds. |
| timezone | string | IANA time zone the schedule runs in, e.g. "America/Denver", "Europe/London". Default UTC. |
| expression* | string | Cron expression, e.g. "0 9 * * 1-5", "*/15 * * * *", "0 30 8 * * *" (6 fields = leading seconds) or "@daily". |
{
"type": "object",
"required": [
"expression",
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Window end (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Max runs to return (1-100)."
},
"start": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Window start (inclusive). ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
},
"timezone": {
"type": "string",
"default": "UTC",
"pattern": "^[A-Za-z0-9_+\\-/]+$",
"maxLength": 64,
"minLength": 1,
"description": "IANA time zone the schedule runs in, e.g. \"America/Denver\", \"Europe/London\". Default UTC."
},
"expression": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
}
},
"additionalProperties": false
}Explain a cron expression in plain English, e.g. "0 9 * * 1-5" → "At 09:00, on Monday through Friday." Also returns notes on cron rules that often surprise people (day-of-month OR day-of-week, seconds field, shorthand expansion). Invalid expressions return isError with the reason. Read-only. Same engine as GET /api/explain.
| Argument | Type | Description |
|---|---|---|
| expression* | string | Cron expression, e.g. "0 9 * * 1-5", "*/15 * * * *", "0 30 8 * * *" (6 fields = leading seconds) or "@daily". |
{
"type": "object",
"required": [
"expression"
],
"properties": {
"expression": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
}
},
"additionalProperties": false
}List the next (or, with direction "previous", the most recent past) run times of a cron expression in an IANA time zone, DST-aware. Each run has the local time with its UTC offset, the UTC time, unix seconds and weekday. Default 5 runs, max 20; searches up to 50 years. Read-only. Same engine as GET /api/next and GET /api/previous.
| Argument | Type | Description |
|---|---|---|
| from | string | Start point (exclusive); default now. ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds. |
| count | integer | How many runs (1-20). |
| timezone | string | IANA time zone the schedule runs in, e.g. "America/Denver", "Europe/London". Default UTC. |
| direction | string | "next" (default) or "previous" (most recent first). |
| expression* | string | Cron expression, e.g. "0 9 * * 1-5", "*/15 * * * *", "0 30 8 * * *" (6 fields = leading seconds) or "@daily". |
{
"type": "object",
"required": [
"expression"
],
"properties": {
"from": {
"type": "string",
"maxLength": 40,
"description": "Start point (exclusive); default now. ISO 8601 with Z or an offset (2026-11-01T09:00:00Z), a local time read in the time zone (2026-11-01T09:00), or unix seconds."
},
"count": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "How many runs (1-20)."
},
"timezone": {
"type": "string",
"default": "UTC",
"pattern": "^[A-Za-z0-9_+\\-/]+$",
"maxLength": 64,
"minLength": 1,
"description": "IANA time zone the schedule runs in, e.g. \"America/Denver\", \"Europe/London\". Default UTC."
},
"direction": {
"enum": [
"next",
"previous"
],
"type": "string",
"default": "next",
"description": "\"next\" (default) or \"previous\" (most recent first)."
},
"expression": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
}
},
"additionalProperties": false
}Check whether a cron expression is valid. Returns valid true with the expanded values of every field (minute, hour, day of month, month, day of week, and seconds for 6-field expressions), or valid false with an error code, the field at fault and a message. Detects schedules that can never run (e.g. February 30). Read-only. Same engine as GET /api/validate.
| Argument | Type | Description |
|---|---|---|
| expression* | string | Cron expression, e.g. "0 9 * * 1-5", "*/15 * * * *", "0 30 8 * * *" (6 fields = leading seconds) or "@daily". |
{
"type": "object",
"required": [
"expression"
],
"properties": {
"expression": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Cron expression, e.g. \"0 9 * * 1-5\", \"*/15 * * * *\", \"0 30 8 * * *\" (6 fields = leading seconds) or \"@daily\"."
}
},
"additionalProperties": false
}