Cronicular Connect to Claude

Use Cronicular in Claude

Connect Claude to your Cronicular dial and it can read and add the two kinds of date you keep there — events (ranges on a coloured calendar) and anchors (single marked days like birthdays or deadlines) — just by asking, in plain language.

Add it in three steps

  1. In Claude, open Settings → Connectors → Add custom connector.
  2. Paste this address and add it:
    https://mcp.cronicular.com/sse
  3. Claude opens a Cronicular sign-in page — sign in with your Cronicular email & password. That's it.

Nothing to install and no token to copy. Sign-in is secure (OAuth), and Claude can only ever see and change your own dial.

Or install the one-click plugin

Prefer a single install that also teaches Claude how to use Cronicular well? Download the plugin — it bundles the connector and a built-in skill, so Claude knows how to turn your requests into the right events and anchors.

Download cronicular-plugin.zip

Unzip it, add the cronicular-plugin/ folder to your Claude Code plugin marketplace, run /plugin to enable it, then sign in on first use. Full install steps below.

What you can ask Claude

Once it's connected, just talk to Claude normally. For example:

Claude reads and writes only events and anchors, and only on your own dial. You can revoke access any time in the app under Settings → Cronicular API.


For developers & other clients — the same data is available three ways, all scoped to your account: hosted connector details · the plugin · local MCP server · direct REST API · tool reference.

1. Hosted MCP connector

The simplest option. Point a remote-MCP client at a single URL and sign in with your Cronicular account — there's nothing to install and no token to copy. Cronicular handles the OAuth and provisions scoped API access for you.

Connect URL

A remote-MCP client connects to one of:

OAuth discovery lives at https://mcp.cronicular.com/.well-known/oauth-authorization-server, so a compliant client only needs the base URL. (Adding it in Claude is the three steps at the top of this page.)

Claude Desktop / stdio-only clients

Bridge the hosted connector with mcp-remote:

{
  "mcpServers": {
    "cronicular": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.cronicular.com/sse"]
    }
  }
}

The first run opens a browser for the OAuth login.

How sign-in works

OAuth 2.1 + PKCE. Your client registers itself, you're sent to a Cronicular login page, and on sign-in Cronicular mints a scoped token for your account server-side (scopes events:read, events:write, anchors:read, anchors:write) and returns a short-lived MCP access token to your client. Every tool call is scoped to your account — the connector never exposes another user's data, and your password is never stored.

Download the Claude plugin

Want the connector and a built-in skill that teaches Claude to use it well — extracting dates from emails into events, setting up recurring training/anniversary anchors, and summarising what's on your dial? Install the Cronicular plugin. One install both connects Claude and guides it.

Download cronicular-plugin.zip

The bundle contains the hosted MCP connector config (.mcp.json), the plugin manifest (.claude-plugin/plugin.json), and the cronicular-dial skill.

Install

2. Local MCP server

Run the MCP server yourself with a personal access token. Good for clients you'd rather not route through the hosted connector, or for offline-style control.

Get a token

In the app: Settings → Integrations → Cronicular API → New token. Copy it — it's only shown once. Tokens look like cnk_live_<prefix>_<secret> and carry the events + anchors read/write scopes.

Install & configure

npm install --global cronicular-mcp

Add it to your MCP client config (example: Claude Desktop's claude_desktop_config.json):

{
  "mcpServers": {
    "cronicular": {
      "command": "cronicular-mcp",
      "env": {
        "CRONICULAR_API_URL": "https://vflfljczmqgcauvdjeti.functions.supabase.co/cronicular-api",
        "CRONICULAR_TOKEN": "cnk_live_<prefix>_<secret>"
      }
    }
  }
}

Restart your MCP client. The same four tools (list_events, create_event, list_anchors, create_anchor) become available.

3. Direct REST API

If you're writing your own integration, call the API directly. Authenticate with a personal access token (the same cnk_live_… token from the app) in the Authorization header:

Authorization: Bearer cnk_live_<prefix>_<secret>

Base URL: https://vflfljczmqgcauvdjeti.functions.supabase.co/cronicular-api

Method & pathScopeDescription
GET /eventsevents:readList events. Optional ?from=YYYY-MM-DD&to=YYYY-MM-DD filters on start date.
POST /eventsevents:writeCreate one event.
GET /anchorsanchors:readList anchor dates.
POST /anchorsanchors:writeCreate one anchor.

Example — list next month's events

curl "https://vflfljczmqgcauvdjeti.functions.supabase.co/cronicular-api/events?from=2026-07-01&to=2026-07-31" \
  -H "Authorization: Bearer cnk_live_<prefix>_<secret>"

Example — create an event

curl -X POST "https://vflfljczmqgcauvdjeti.functions.supabase.co/cronicular-api/events" \
  -H "Authorization: Bearer cnk_live_<prefix>_<secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Conference",
    "start_date": "2026-03-03",
    "end_date": "2026-03-05",
    "calendar_id": "<calendar-uuid>",
    "all_day": true
  }'

Example — create an anchor

curl -X POST "https://vflfljczmqgcauvdjeti.functions.supabase.co/cronicular-api/anchors" \
  -H "Authorization: Bearer cnk_live_<prefix>_<secret>" \
  -H "Content-Type: application/json" \
  -d '{ "label": "Mum'\''s birthday", "date": "2026-09-14", "color": "slot4" }'

Every request is scoped to the token's user — you only ever see and write your own dial. all_day defaults to true; anchor color defaults to slot1.

Tool & endpoint reference

The MCP tools (hosted and local) and the REST endpoints share the same four operations and the same arguments.

list_events({ from?, to? })GET /events

Lists events on the dial. Both bounds are optional YYYY-MM-DD strings filtering on the event start date. Returns up to 500, ordered by start date.

create_event({ … })POST /events

FieldTypeNotes
titlestringRequired.
start_datestringRequired. YYYY-MM-DD.
end_datestringRequired. YYYY-MM-DD (= start for single-day).
calendar_idstringRequired. UUID of the target calendar.
all_daybooleanDefaults to true.
start_timestringHH:MM, only if all_day is false.
end_timestringHH:MM.
notesstringOptional free text.
locationstringOptional free text.

list_anchors()GET /anchors

Lists all anchor dates on the dial. No arguments.

create_anchor({ … })POST /anchors

FieldTypeNotes
labelstringRequired.
datestringRequired. YYYY-MM-DD.
colorstringslot1..slot12 or a hex. Defaults to slot1.
iconstringOptional.
calendar_idstringOptional.

Scope (v1): events + anchors, read + write only. There are no update/delete tools and no style-ring or theme tools yet.