{
  "markdown": "# cron-explainer\n\nA tiny pay-per-call API that parses cron expressions, returns the next N fire\ntimes, and produces a short English description. Timezone-aware (IANA).\n\n**Live:** https://cron-explainer.cron-explainer-prod.workers.dev/\n**Pricing:** 0.01 EUR per successful call, prepaid via Stripe Checkout in packs of 500 / 5,000 / 50,000 calls. Non-2xx responses are refunded. No subscription. Keys never expire.\n\n## Quick start\n\n1. Get a key at https://cron-explainer.cron-explainer-prod.workers.dev/ (Stripe Checkout, €5 minimum).\n2. Copy the key — it's shown exactly once.\n3. Call the API:\n\n```bash\ncurl -X POST https://cron-explainer.cron-explainer-prod.workers.dev/v1/explain \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $YOUR_KEY\" \\\n  -d '{\"cron\":\"0 9 * * 1-5\",\"tz\":\"Europe/Lisbon\",\"n\":3}'\n```\n\nResponse:\n\n```json\n{\n  \"input\": {\"cron\":\"0 9 * * 1-5\",\"tz\":\"Europe/Lisbon\",\"n\":3},\n  \"valid\": true,\n  \"description\": \"At 09:00, Monday through Friday\",\n  \"next\": [\"2026-04-24T08:00:00.000Z\",\"2026-04-27T08:00:00.000Z\",\"2026-04-28T08:00:00.000Z\"],\n  \"flags\": {\"dst_transition_ahead\": false, \"ambiguous\": false, \"notes\": []},\n  \"errors\": []\n}\n```\n\nCheck remaining balance:\n\n```bash\ncurl -H \"x-api-key: $YOUR_KEY\" \\\n  https://cron-explainer.cron-explainer-prod.workers.dev/v1/balance\n```\n\n## MCP\n\nThe server is listed on the official MCP registry as\n`io.github.IdoAzaCalls/cron-explainer` with a Streamable HTTP endpoint at\n`POST /mcp`. It exposes one tool, `explain_cron`. Pass your `x-api-key` as\nan HTTP header on the MCP transport; billing is identical to the REST path.\n\nRegistry entry: https://registry.modelcontextprotocol.io/v0/servers?search=cron-explainer\n\n## Endpoints\n\n| Method | Path | Purpose |\n|---|---|---|\n| `POST` | `/v1/explain` | Parse + describe + next fire times (billed) |\n| `GET`  | `/v1/balance` | Remaining balance for an `x-api-key` |\n| `POST` | `/v1/checkout` | Create a Stripe Checkout Session |\n| `GET`  | `/v1/schema` | JSON Schema for request/response |\n| `POST` | `/mcp` | MCP Streamable HTTP (JSON-RPC 2.0) |\n| `GET`  | `/.well-known/mcp.json` | Static tool manifest |\n| `GET`  | `/health` | Liveness probe |\n| `GET`  | `/legal/{tos,privacy,disclaimer,notices}` | Legal docs |\n\n## Limits\n\n- Cron: 5-field POSIX/Vixie syntax (minute, hour, day-of-month, month, day-of-week).\n- Timezones: IANA names (e.g. `Europe/Lisbon`, `America/Los_Angeles`). Defaults to `UTC`.\n- `n` clamps to `[1, 100]`.\n- Best-effort accuracy. See `/legal/disclaimer` for warranty terms.\n- Zero PII: inputs are cron strings and IANA timezones only. Request and response bodies are never logged.\n\n## Stack\n\nTypeScript on Cloudflare Workers. Cron parsing via\n[`croner`](https://github.com/Hexagon/croner) (MIT). English descriptions via\n[`cronstrue`](https://github.com/bradymholt/cRonstrue) (MIT). Full NOTICE\ntext at [`/legal/notices`](https://cron-explainer.cron-explainer-prod.workers.dev/legal/notices).\n\n## Contact\n\nazariaido@gmail.com — billing issues, bug reports, custom pricing.\n",
  "bytes": 3005,
  "sha": "2691bef2cdd0c04c0b3fe2e8f3a9413d84c24854c5a88767a35a6e36dc286729",
  "repo_slug": "idoazacalls/cron-explainer",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_idoazacalls_cron_explainer_7df502fd/readme"
}