Cron Explainer
Explain a cron expression in plain English and list its next run times.
Pay by wallet (x402)
cron-explain Example
Input
{
"timezone": "Europe/Stockholm",
"cron_expression": "0 9 * * 1-5"
} Answer
{
"is_valid": true,
"timezone": "Europe/Stockholm",
"next_runs": [
"2026-03-09T09:00:00.000Z",
"2026-03-10T09:00:00.000Z",
"2026-03-11T09:00:00.000Z",
"2026-03-12T09:00:00.000Z",
"2026-03-13T09:00:00.000Z"
],
"explanation": "At 9:00, Monday through Friday",
"cron_expression": "0 9 * * 1-5",
"field_breakdown": [
{
"field": "minute",
"value": "0",
"meaning": "at 0"
},
{
"field": "hour",
"value": "9",
"meaning": "at 9"
},
{
"field": "day of month",
"value": "*",
"meaning": "every value"
},
{
"field": "month",
"value": "*",
"meaning": "every value"
},
{
"field": "day of week",
"value": "1-5",
"meaning": "range 1-5"
}
]
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
num_next | integer | No | Number of next runs (default 5) |
timezone | string | No | — |
cron_expression | string | Yes | Cron expression (5-7 fields) |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
is_valid | boolean | Always (present in every successful answer) |
next_runs | array | Always (present in every successful answer) |
explanation | string | Always (present in every successful answer) |
field_breakdown | array | Always (present in every successful answer) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "cron-explain",
"inputs": {
"timezone": "Europe/Stockholm",
"cron_expression": "0 9 * * 1-5"
},
"max_price_cents": 2
}' {
"tool": "strale_execute",
"arguments": {
"slug": "cron-explain",
"inputs": {
"timezone": "Europe/Stockholm",
"cron_expression": "0 9 * * 1-5"
},
"max_price_cents": 2
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "cron-explain",
inputs: {
"timezone": "Europe/Stockholm",
"cron_expression": "0 9 * * 1-5"
},
max_price_cents: 2,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="cron-explain",
inputs={
"timezone": "Europe/Stockholm",
"cron_expression": "0 9 * * 1-5",
},
max_price_cents=2,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i 'https://api.strale.io/x402/v2/cron-explain?timezone=Europe%2FStockholm&cron_expression=0+9+*+*+1-5' Limitations
Non-standard cron extensions may be misread
Explains standard 5-field cron syntax — non-standard extensions (seconds, years, L/W/# operators) may not be fully explained
What to do instead: Specify the cron implementation (Quartz, AWS EventBridge, systemd) for accurate explanation of non-standard fields
Related tools
- Regex Generator €0.05