Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

cal-scheduler

PYPI · CAL-SCHEDULER-MCP · SCANNED SEP 20

Timezone-correct CalDAV scheduling MCP server with validated recurrence and single-occurrence edits.

Available components

0 this week 74 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security93
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs a script at install time (build_backend) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
  • 3 of 51 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
Schema Quality & AI Usability69
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 1209 tokens (~109/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 12% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_calendar" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the cal-scheduler MCP server?

cal-scheduler runs locally as a PyPI package, launched with uvx cal-scheduler-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · cal-scheduler-mcp

# add to Claude Code
claude mcp add limey-cal-scheduler-mcp -- uvx cal-scheduler-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "limey-cal-scheduler-mcp": {
      "command": "uvx",
      "args": [
        "cal-scheduler-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "limey-cal-scheduler-mcp": {
      "command": "uvx",
      "args": [
        "cal-scheduler-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add limey-cal-scheduler-mcp -- uvx cal-scheduler-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "limey-cal-scheduler-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "cal-scheduler-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add limey-cal-scheduler-mcp --command uvx --arg cal-scheduler-mcp
# ~/.hermes/config.yaml
mcp_servers:
  limey-cal-scheduler-mcp:
    command: "uvx"
    args: ["cal-scheduler-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "limey-cal-scheduler-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "cal-scheduler-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add limey-cal-scheduler-mcp -t stdio -c uvx -a cal-scheduler-mcp
// mcp.json
{
  "mcpServers": {
    "limey-cal-scheduler-mcp": {
      "command": "uvx",
      "args": [
        "cal-scheduler-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 0
    • Package version: 1.1.1 → 1.1.3 functional
  • 16 Sept 26 −3
    • Stability: pass → 0.77 functional
  • 15 Sept 26 +1
    • Stability: 0.97 → pass security
  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −2
    • Stability: pass → 0.83 functional
  • 9 Sept 26 +1
    • Stability: 0.97 → pass security
    • Package version: 1.1.1 → 1.1.3 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/cal-scheduler-mcp@1.1.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend unreviewed uv_build

Background: Why install scripts are a supply-chain risk →

Dependencies 51 packages
Packages resolved 51
Stale 2
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 11 exposed · ~1,209 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
create_calendar ~52

Create a new calendar with the given display name. Returns `{"ok": True, "created": name}`. The name must be unique; a duplicate name raises an error.

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

create_event ~255

Create an event (single, or recurring if `rrule` is given). `start`/`end` are ISO 8601 (see parameter docs for zone + default-duration details — read those before writing). `rrule` is a raw RRULE body, e.g. "FREQ=WEEKLY;COUNT=12". `calendar` is required in practice — there is no default calendar. Pick deliberately; events are not validated against calendar type.

NameTypeReqDescription
calendar
description
endISO 8601 datetime. Omit for the default duration: 1 hour after `start` for timed events, 1 day after `start` for all-day. Must be after `start`.
location
rrule
startstringyesISO 8601 datetime. A bare local time is interpreted as wall time in the configured zone (`Pacific/Auckland`); an offset-qualified time is honoured and stored in that zone. Use `resolve_datetime` to c…
summarystringyes

No output schema declared.

No examples provided.

delete_calendar ~41

Delete a calendar and all of its events. Irreversible. Returns `{"ok": True, "deleted": name}`.

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

delete_event ~37

Delete a whole event/series (and any of its overrides). Irreversible.

NameTypeReqDescription
calendar
uidstringyes

No output schema declared.

No examples provided.

exclude_occurrence ~137

Drop a single occurrence of a recurring series (EXDATE). `occurrence` is the instance's current start exactly as returned by `list_events`, including the UTC offset (e.g. `2026-06-18T09:00:00+12:00`). Bare local times may not match. The response includes `series_remaining` (occurrences left in the series) and `overrides` (RECURRENCE-ID overrides on the series) so the rest-of-series-unchanged claim is observable.

NameTypeReqDescription
calendar
occurrencestringyes
uidstringyes

No output schema declared.

No examples provided.

list_calendars ~39

List the calendars available on the account. Returns `{"calendars": [name, ...]}` with account calendar names sorted alphabetically.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_events ~68

List event occurrences in [start, end], expanding recurring series. Dates are interpreted in the calendar's configured zone. Returns one entry per occurrence (recurring instances are expanded), sorted by start.

NameTypeReqDescription
calendar
endstringyes
startstringyes

No output schema declared.

No examples provided.

mark_done ~109

Mark an event (or one occurrence of a series) done at the current UTC moment. `occurrence=None` marks the whole event / series; otherwise marks only that occurrence (via a RECURRENCE-ID override). Idempotent: re-marking replaces the prior timestamp. The response includes `series_remaining` and `overrides` for parity with move_occurrence / exclude_occurrence.

NameTypeReqDescription
calendar
occurrence
uidstringyes

No output schema declared.

No examples provided.

move_occurrence ~239

Reschedule a single occurrence of a series (RECURRENCE-ID override). `occurrence` is the instance's current start exactly as returned by `list_events`, including the UTC offset (e.g. `2026-06-18T09:00:00+12:00`). Bare local times may not match. `new_start`/`new_end` are where it moves to. Omit `new_end` to keep the occurrence's existing duration. The rest of the series is unchanged. The response includes `series_remaining` (occurrences left in the series) and `overrides` (RECURRENCE-ID overrides on the series) so the rest-of-series-unchanged claim is observable.

NameTypeReqDescription
calendar
new_end
new_startstringyesISO 8601 datetime. A bare local time is interpreted as wall time in the configured zone (`Pacific/Auckland`); an offset-qualified time is honoured and stored in that zone. Use `resolve_datetime` to c…
occurrencestringyes
uidstringyes

No output schema declared.

No examples provided.

resolve_datetime ~39

Show how a datetime string will be interpreted, without writing anything. Use this to confirm a zone before committing an event.

NameTypeReqDescription
valuestringyes

No output schema declared.

No examples provided.

update_event ~193

Edit a whole event/series. Only the fields you pass change. Preserves the UID and any single-occurrence exclusions/overrides. If you move `start` without giving `end`, the duration is kept. Moving `start` re-anchors the whole series — occurrences before the new start stop being generated (this retimes an entire series; it does not split one at a date).

NameTypeReqDescription
calendar
description
end
location
rrule
startISO 8601 datetime. A bare local time is interpreted as wall time in the configured zone (`Pacific/Auckland`); an offset-qualified time is honoured and stored in that zone. Use `resolve_datetime` to c…
summary
uidstringyes

No output schema declared.

No examples provided.

Common questions

What is the cal-scheduler MCP server?

cal-scheduler is an MCP server listed in the public MCP registry as io.github.limey/cal-scheduler-mcp. Timezone-correct CalDAV scheduling MCP server with validated recurrence and single-occurrence edits. This page covers its PyPI package (cal-scheduler-mcp).

Is the cal-scheduler MCP server safe to use?

cal-scheduler scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the cal-scheduler MCP server expose?

cal-scheduler exposes 11 tools: list_calendars, create_calendar, delete_calendar, list_events, resolve_datetime, and 6 more. Their descriptions and schemas cost roughly 1,209 tokens of context every time the server is loaded.

Is the cal-scheduler MCP server still maintained?

cal-scheduler is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.