cronch

Developers

Cronch developer docs. REST API, MCP server and OAuth.

Build on Cronch from your own code or agent. A REST API with scoped personal access tokens, a remote MCP server with OAuth for AI apps, an OpenAPI description, and a sandbox you can call right now without an account.

updated

short answer

How do I use the Cronch API?

Create a personal access token under Apps & MCP in your Cronch dashboard and call https://api.cronch.io/api/v1 with Authorization: Bearer. To try it first, the sandbox at https://api.cronch.io/api/v1/sandbox needs no account or token. AI apps connect to the MCP server at https://api.cronch.io/api/v1/mcp and sign in with OAuth.

Quickstart

  1. Call the sandbox

    No account or token. It answers with a sample day and saves nothing, so you can see the shapes before you sign up.

  2. Create a token

    In the Cronch dashboard open Apps & MCP and create a personal access token. Tick Read-only if your code only reads. Cronch is in private beta, so an account comes from the waitlist.

  3. Call the API

    Send the token as a bearer token. Start with today’s plan: its item ids drive every other call.

try itno token
curl https://api.cronch.io/api/v1/sandbox/plan/today
your plantoken
curl https://api.cronch.io/api/v1/plan/today \
  -H "Authorization: Bearer cronch_pat_YOUR_TOKEN"

curl -X POST https://api.cronch.io/api/v1/plan/items/ITEM_ID/status \
  -H "Authorization: Bearer cronch_pat_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H 'Idempotency-Key: "8e03978e-40d5-43e8-bc93-6894a57f9324"' \
  -d '{"status":"DONE"}'

Sandbox

The sandbox serves the same routes and response shapes as the API, with a sample user’s day in America/New_York seen at 12:10, so some items are done and the rest are still ahead. Writes answer like the real thing but nothing is saved: every request starts from the same sample day. Responses carry Cronch-Sandbox: true. It is rate limited like the API and never calls AI, email or outside services.

REST
https://api.cronch.io/api/v1/sandbox
MCP
https://api.cronch.io/api/v1/sandbox/mcp (no sign-in), with its own server card
Not included
The health check and calendar link test, which only exist on the real API.

Authentication and scopes

Personal access tokens are for your own scripts, the CLI, Claude Code and Cursor. Send Authorization: Bearer cronch_pat_…. Every token can read; write is a scope you choose when you create it. A read-only token gets 403 on POST, PUT, PATCH and DELETE. Tokens can’t touch the password, billing or other tokens, and you can revoke one at any time from Apps & MCP.

OAuth 2.1 is how ChatGPT, claude.ai and other MCP clients connect. It is the authorization code flow with PKCE (S256), and clients register with a Client ID Metadata Document or dynamic client registration. The user sees the scopes on the consent screen and can untick write. OAuth tokens are bound to the MCP endpoint (https://api.cronch.io/api/v1/mcp) and are refused elsewhere. Ask for the least scope you need.

ScopeWhat it allows
cronch:readRead today’s plan, the profile, history and the Cronch inbox. Personal tokens: every token.
cronch:writeChange the day: mark items done, skip or snooze them, log water, swap meals, add meetings, replan, edit the profile, ask the agent and manage inbox messages. Personal tokens: unless created read-only.
Resource metadata
/.well-known/oauth-protected-resource/api/v1/mcp (RFC 9728)
Server metadata
/.well-known/oauth-authorization-server (RFC 8414)
Authorize
https://api.cronch.io/api/v1/oauth/authorize
Token
https://api.cronch.io/api/v1/oauth/token

Endpoints

Base URL https://api.cronch.io/api/v1. Request and response bodies are JSON. The OpenAPI description has every schema.

EndpointScopeWhat it does
GET /noneDescribe the API.
GET /healthnoneCheck the API is up.
GET /plan/todayreadGet today’s plan.
POST /plan/replanwriteRebuild the rest of today.
POST /plan/meetingswriteSet today’s meetings.
POST /plan/hungrywriteGet food options for right now. Counts as an AI request.
POST /plan/waterwriteLog a glass of water.
POST /plan/items/{id}/swapwriteSwap a planned meal. Counts as an AI request.
POST /plan/items/{id}/statuswriteMark an item done or skipped.
POST /plan/items/{id}/snoozewriteSnooze an item.
GET /plan/today.icsreadDownload the rest of today as a calendar file.
GET /profilereadGet the profile.
PUT /profilewriteReplace the profile.
POST /profile/calendar/testwriteCheck a calendar link.
POST /agentwriteAsk the Cronch agent. Counts as an AI request.
GET /historyreadGet history and streaks.
GET /mailboxreadGet the Cronch inbox.
PATCH /mailboxwriteTurn forwarding on or off.
GET /mailbox/messagesreadList inbox messages.
GET /mailbox/messages/{id}readRead a message.
DELETE /mailbox/messages/{id}writeDelete a message.

Errors

Every error is JSON with the status, a message for people and, where it helps, a stable code. Validation errors list each problem in message.

402 Payment Requiredexample
{
  "statusCode": 402,
  "error": "Payment Required",
  "code": "limit_reached",
  "message": "You've used today's 25 AI requests. They reset tomorrow."
}
StatusMeaning
400The request is invalid. Fix what message says before retrying.
401Missing, unknown, expired or revoked token. At /mcp the WWW-Authenticate header starts OAuth.
402Code limit_reached: today’s AI allowance is used up. It resets at midnight UTC.
403The token lacks the scope (read-only tokens can’t write) or can’t call this route.
404Not found. Code NO_PROFILE: the user hasn’t finished onboarding.
409, 422Idempotency: the key is in use by a running request, or was used for a different request.
429Rate limited. Wait Retry-After seconds.

Rate limits

60 requests a minute per client by default. Every response says where you stand with RateLimit and RateLimit-Policy (the IETF RateLimit header fields) and the older X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. A 429 adds Retry-After in seconds.

AI requests (the agent, “I’m hungry” and meal swaps) also count toward a daily allowance: 25 a day during the beta. Past it they return 402 until midnight UTC, and every other endpoint keeps working.

response headersexample
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=60
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 60

Idempotency

Networks fail mid-request. Send an Idempotency-Key header on POST, PUT, PATCH and DELETE, ideally a UUID as a quoted string, and retry with the same key. Cronch keeps keys for 24 hours per access token:

  • the same key with the same request gets the first response again, with Idempotent-Replayed: true;
  • the same key with a different request gets 422;
  • a retry while the first request is still running gets 409, so wait and retry;
  • server errors (5xx) aren’t stored, so a retry runs the request again.

Without the header, requests behave as they always have.

Pagination

Lists come back as { data, meta }, where meta has page, limit, total and totalPages. Pass ?page=2 and so on until page equals totalPages. Today that is the inbox (GET /mailbox/messages, 30 a page, newest first).

Versioning

The version is in the path: /api/v1. Within v1 changes are additive: new endpoints, new optional fields and new enum values, so ignore fields you don’t know. A breaking change would ship as /api/v2 alongside v1. Before a v1 endpoint goes away it is marked deprecated in the OpenAPI description and answers with Deprecation and Sunset headers for at least 90 days.

MCP server

The remote MCP server at https://api.cronch.io/api/v1/mcp (Streamable HTTP) gives AI apps the same day through 17 tools. Read tools need cronch:read; tools that change the day need cronch:write. Setup for ChatGPT, Claude, Claude Code, Cursor and the CLI is on Apps & MCP.

ToolScope
get_todaycronch:read
complete_itemcronch:write
skip_itemcronch:write
snooze_itemcronch:write
im_hungrycronch:write
swap_mealcronch:write
log_watercronch:write
add_meetingscronch:write
replancronch:write
ask_agentcronch:write
get_historycronch:read
get_profilecronch:read
update_profilecronch:write
get_inboxcronch:read
get_latest_codecronch:read
read_messagecronch:read
export_icscronch:read

Machine-readable files

OpenAPI 3.1
/openapi.json
API catalog
/.well-known/api-catalog (RFC 9727)
Agent skill
SKILL.md, listed in /.well-known/agent-skills/index.json
MCP server card
/mcp/server-card, listed in /.well-known/ai-catalog.json
Registries
Official MCP Registry and Glama, as io.cronch/cronch
For LLMs
/llms.txt and /llms-full.txt. Every page is also Markdown: send Accept: text/markdown or add .md to the URL.
Help
[email protected]

Build on your own day.

Cronch is in private beta. Join the waitlist for an account, and try the sandbox in the meantime.