# Cron Translator > Explain any cron expression in plain English, see the next run times in any timezone, and catch the gotchas that make schedules misfire: day-of-month/day-of-week OR semantics, steps that do not divide evenly, impossible dates, and daylight-saving shifts. Four surfaces over one engine: an HTML page for people, a markdown representation of every page at the same URLs, a JSON API, and an MCP server. All four return the same answers — the engine is a single pure function and the surfaces are thin wrappers over it. For markdown, send `Accept: text/markdown` or append `?format=md` to any page URL. Responses set `Vary: Accept`. Do not parse the HTML. **What this is not:** Does not run, install, or manage scheduled jobs. Does not support Quartz extensions (L, W, #, ?) beyond detecting and reporting them. Agent traffic is welcome and unmetered up to 250 calls per UTC day per caller. Past that, endpoints return HTTP 402 with x402 payment requirements ($0.001 per call, USDC on base). Content is identical for agents and people; only the representation differs. ## Agent endpoints - [MCP server](https://crontoenglish.com/api/mcp): Streamable HTTP. Tools: explain_cron, next_cron_runs, build_cron. - [OpenAPI document](https://crontoenglish.com/.well-known/openapi.json): Full machine-readable API description. - [Explain a cron expression](https://crontoenglish.com/api/v1/explain?expression=0%209%20*%20*%201-5): English description, field breakdown, warnings, next run times. - [Next run times](https://crontoenglish.com/api/v1/next-runs?expression=0%209%20*%20*%201-5): Upcoming runs only, ISO 8601 plus local wall-clock. - [Build from English](https://crontoenglish.com/api/v1/build?phrase=every%20weekday%20at%209am): Rule-based English-to-cron. Refuses phrases outside its grammar rather than guessing. - [Full documentation](https://crontoenglish.com/llms-full.txt): Complete docs with worked examples, inline. - [Changelog](https://crontoenglish.com/changelog.md): Breaking changes and additions. ## MCP tools ### `explain_cron` Translate a cron expression into plain English, list its upcoming run times in a specific timezone, and report the gotchas that make schedules misfire. Use this whenever a cron expression needs to be read, verified, or explained — and prefer it over reasoning about the expression directly. Cron has several counter-intuitive rules that are easy to get wrong: day-of-month and day-of-week are combined with OR (not AND) when both are set, steps like */7 do not divide their field evenly, dates like February 30 never fire at all, and daylight-saving transitions skip or repeat runs. This tool checks all of them. Returns the normalised expression, a one-sentence description, a per-field breakdown, a list of warnings with severity and a fix for each, the next run times as both UTC ISO 8601 instants and local wall-clock strings, and an approximate runs-per-day figure. ### `next_cron_runs` List the next run times for a cron expression in a specific timezone, with no prose. Use this when the only question is "when does this next fire" — for example to check whether a job will run before a deadline, or to show a user their upcoming schedule. Do not compute these dates yourself: weekday arithmetic, month lengths, and daylight-saving shifts make manual calculation unreliable. Returns each run as a UTC ISO 8601 instant plus a local wall-clock rendering in the requested timezone. Refuses Quartz-only syntax (L, W, #, ?) rather than guessing. ### `build_cron` Convert an English schedule description into a standard five-field cron expression, then explain and validate the result. Use this when a user describes a schedule in words and needs the expression. This is a RULE-BASED converter, not a language model: it handles a fixed grammar and returns an error listing the supported phrasings when a phrase falls outside it. That refusal is deliberate — a plausible-looking wrong schedule is worse than no answer. If a phrase is rejected, rephrase it into one of the supported shapes and call again. Returns the expression, which rule matched, any words the rules did not use (check these — leftover words may mean the phrase was misread), the English description of the result, warnings, and the next run times. ## Markdown representations Every page is available as markdown at the same canonical URL. Send `Accept: text/markdown` or append `?format=md`. Responses set `Vary: Accept`. Do not parse the HTML. ## Docs - [Documentation and MCP setup](https://crontoenglish.com/docs): Copy-paste MCP config for Claude Code, Claude Desktop, and Cursor, plus curl examples. ## Pages - [Cron Translator](https://crontoenglish.com/): Translate cron expressions to plain English - [API and MCP setup](https://crontoenglish.com/docs): JSON API reference and MCP configuration - [Cron for every minute](https://crontoenglish.com/cron/every-minute): * * * * * - [Cron for every 2 minutes](https://crontoenglish.com/cron/every-2-minutes): */2 * * * * - [Cron for every 5 minutes](https://crontoenglish.com/cron/every-5-minutes): */5 * * * * - [Cron for every 10 minutes](https://crontoenglish.com/cron/every-10-minutes): */10 * * * * - [Cron for every 15 minutes](https://crontoenglish.com/cron/every-15-minutes): */15 * * * * - [Cron for every 20 minutes](https://crontoenglish.com/cron/every-20-minutes): */20 * * * * - [Cron for every 30 minutes](https://crontoenglish.com/cron/every-30-minutes): */30 * * * * - [Cron for every 45 minutes](https://crontoenglish.com/cron/every-45-minutes): */45 * * * * - [Cron for every hour](https://crontoenglish.com/cron/every-hour): 0 * * * * - [Cron for every 2 hours](https://crontoenglish.com/cron/every-2-hours): 0 */2 * * * - [Cron for every 3 hours](https://crontoenglish.com/cron/every-3-hours): 0 */3 * * * - [Cron for every 4 hours](https://crontoenglish.com/cron/every-4-hours): 0 */4 * * * - [Cron for every 6 hours](https://crontoenglish.com/cron/every-6-hours): 0 */6 * * * - [Cron for every 8 hours](https://crontoenglish.com/cron/every-8-hours): 0 */8 * * * - [Cron for every 12 hours](https://crontoenglish.com/cron/every-12-hours): 0 */12 * * * - [Cron for every 5 hours](https://crontoenglish.com/cron/every-5-hours): 0 */5 * * * - [Cron for every day at midnight](https://crontoenglish.com/cron/every-day-at-midnight): 0 0 * * * - [Cron for every day at noon](https://crontoenglish.com/cron/every-day-at-noon): 0 12 * * * - [Cron for every day at 9am](https://crontoenglish.com/cron/every-day-at-9am): 0 9 * * * - [Cron for every day at 6am](https://crontoenglish.com/cron/every-day-at-6am): 0 6 * * * - [Cron for every day at 5pm](https://crontoenglish.com/cron/every-day-at-5pm): 0 17 * * * - [Cron for every day at 11pm](https://crontoenglish.com/cron/every-day-at-11pm): 0 23 * * * - [Cron for twice a day](https://crontoenglish.com/cron/twice-a-day): 0 0,12 * * * - [Cron for every weekday at 9am](https://crontoenglish.com/cron/every-weekday-at-9am): 0 9 * * 1-5 - [Cron for every weekday](https://crontoenglish.com/cron/every-weekday): 0 0 * * 1-5 - [Cron for every hour during business hours](https://crontoenglish.com/cron/business-hours-every-hour): 0 9-17 * * 1-5 - [Cron for every 15 minutes during business hours](https://crontoenglish.com/cron/every-15-minutes-during-business-hours): */15 9-17 * * 1-5 - [Cron for every weekend day](https://crontoenglish.com/cron/every-weekend): 0 0 * * 0,6 - [Cron for every Monday at 9am](https://crontoenglish.com/cron/every-monday-at-9am): 0 9 * * 1 - [Cron for every Friday at 5pm](https://crontoenglish.com/cron/every-friday-at-5pm): 0 17 * * 5 - [Cron for every Sunday at midnight](https://crontoenglish.com/cron/every-sunday-at-midnight): 0 0 * * 0 - [Cron for every Saturday at 2am](https://crontoenglish.com/cron/every-saturday-at-2am): 0 2 * * 6 - [Cron for the first of every month](https://crontoenglish.com/cron/first-of-the-month): 0 0 1 * * - [Cron for the 15th of every month](https://crontoenglish.com/cron/fifteenth-of-the-month): 0 0 15 * * - [Cron for the last day of the month](https://crontoenglish.com/cron/last-day-of-the-month): 0 0 28-31 * * - [Cron for every quarter](https://crontoenglish.com/cron/every-quarter): 0 0 1 1,4,7,10 * - [Cron for once a year on January 1](https://crontoenglish.com/cron/every-year-on-january-1): 0 0 1 1 * - [Cron for the first Monday of the month](https://crontoenglish.com/cron/first-monday-of-the-month): 0 9 1-7 * 1