Cronofy MCP by usefulapi
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"cronofy": {
"url": "https://cronofy.usefulapi.io/mcp"
}
}
}Remote endpoints
https://cronofy.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢cronofy_get_account
Get the authenticated Cronofy account's details (id, email, name, default tzid, locale). API: GET /v1/account.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cronofy_get_userinfo
Get the OpenID-style profile of the authenticated user (sub, email, Cronofy profile info). API: GET /v1/userinfo.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cronofy_list_calendars
List all calendars the authenticated account can see (id, name, profile, readonly, primary). API: GET /v1/calendars.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cronofy_list_profiles
List the connected calendar accounts/profiles (e.g. Google, Office 365) linked to this Cronofy account. API: GET /v1/profiles.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cronofy_read_events(tzid, from, to, calendar_ids, include_managed, ...)
Read events across the account's calendars over a time window. Returns { pages, events }. API: GET /v1/events.
Input Schema
{
"type": "object",
"properties": {
"tzid": {
"type": "string",
"description": "REQUIRED time zone id for the response, e.g. \"Etc/UTC\" or \"America/New_York\"."
},
"from": {
"description": "Start of the window — date (yyyy-mm-dd) or ISO 8601 datetime.",
"type": "string"
},
"to": {
"description": "End of the window — date (yyyy-mm-dd) or ISO 8601 datetime.",
"type": "string"
},
"calendar_ids": {
"description": "Restrict to these calendar ids (sent as repeated calendar_ids[] params).",
"type": "array",
"items": {
"type": "string"
}
},
"include_managed": {
"description": "Include events created via the Cronofy API. Default false.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted events. Default false.",
"type": "boolean"
},
"last_modified": {
"description": "Only events modified since this ISO 8601 datetime.",
"type": "string"
},
"only_managed": {
"description": "Return only events created via the Cronofy API. Default false.",
"type": "boolean"
}
},
"required": [
"tzid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cronofy_get_free_busy(tzid, from, to, calendar_ids, include_managed)
Read free/busy information across the account's calendars over a time window. Returns { pages, free_busy }. API: GET /v1/free_busy.
Input Schema
{
"type": "object",
"properties": {
"tzid": {
"type": "string",
"description": "REQUIRED time zone id for the response, e.g. \"Etc/UTC\"."
},
"from": {
"description": "Start of the window — date (yyyy-mm-dd) or ISO 8601 datetime.",
"type": "string"
},
"to": {
"description": "End of the window — date (yyyy-mm-dd) or ISO 8601 datetime.",
"type": "string"
},
"calendar_ids": {
"description": "Restrict to these calendar ids (sent as repeated calendar_ids[] params).",
"type": "array",
"items": {
"type": "string"
}
},
"include_managed": {
"description": "Include events created via the Cronofy API. Default false.",
"type": "boolean"
}
},
"required": [
"tzid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cronofy_upsert_event(calendar_id, event_id, summary, start, end, ...)
Creates or updates an event on a REAL connected calendar (upsert by event_id). This writes to the user's actual calendar. API: POST /v1/calendars/{calendar_id}/events.
Input Schema
{
"type": "object",
"properties": {
"calendar_id": {
"type": "string",
"description": "Target calendar id (from cronofy_list_calendars)."
},
"event_id": {
"type": "string",
"description": "YOUR unique id for the event. Re-using it updates the same event."
},
"summary": {
"type": "string",
"description": "Event title/summary."
},
"start": {
"type": "string",
"description": "Event start — ISO 8601 datetime or a date (yyyy-mm-dd) string."
},
"end": {
"type": "string",
"description": "Event end — ISO 8601 datetime or a date (yyyy-mm-dd) string."
},
"description": {
"description": "Event description/body.",
"type": "string"
},
"tzid": {
"description": "Time zone id for the start/end, e.g. \"America/New_York\".",
"type": "string"
},
"location_description": {
"description": "Free-text location (sent as location.description).",
"type": "string"
}
},
"required": [
"calendar_id",
"event_id",
"summary",
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cronofy_delete_event(calendar_id, event_id)
Deletes an event (by your event_id) from a real connected calendar. Destructive. API: DELETE /v1/calendars/{calendar_id}/events.
Input Schema
{
"type": "object",
"properties": {
"calendar_id": {
"type": "string",
"description": "Calendar id the event lives on."
},
"event_id": {
"type": "string",
"description": "YOUR event_id for the event to delete (sent in the JSON body)."
}
},
"required": [
"calendar_id",
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence