theluckystrike McpStamp Calendar MCP
Reads .ics calendar files and feeds to find free/busy slots, detect double bookings, export events, and convert meetings into billable time entries. It operates in read-only mode for the source calendar, never writing back, and supports both local file imports and hosted URL access via a token.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.zovo.one/mcp/calendarWhat its tools do
12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Find free time slots across multiple calendars
- Detect double-booked events in a date range
- Export selected events to a new .ics file
- Convert a meeting into a billable time entry
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- mcp-calendar 0.22.6
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 12 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
12 advertised
license_status — License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_activate — Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "License key from checkout, MCPL1.<payload>.<signature>"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}ics_import — Import a calendar (.ics)
Call this tool to read a calendar export and keep it under a name. Give path (.ics file), text (contents), or url (public .ics/webcal feed; Pro). Google, Apple, Outlook exports read. Re-importing a name replaces it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"url": {
"type": "string",
"maxLength": 4096,
"description": "Public https:// or webcal:// .ics feed. Fetched once, only because you asked; Pro feature"
},
"name": {
"type": "string",
"maxLength": 80,
"description": "What to call this calendar, e.g. \"work\" or \"family\""
},
"path": {
"type": "string",
"maxLength": 4096,
"description": "Not available on this hosted endpoint, which has no filesystem: paste the file as text instead"
},
"text": {
"type": "string",
"maxLength": 5242880,
"description": "The .ics file contents, pasted"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}calendars_list — List imported calendars
List imported calendars: name, event-definition count, size, source, import time and free-tier use of the 2 slots. It also names stored .ics files with no calendar row. With none it prints the export steps.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}events_list — List events in a window
Every event between two dates, recurring expanded to occurrences, sorted by start. Times shown in your zone (profile's, else this machine's) unless zone passed. Each id works for event_export or event_to_time_entry.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 20,
"description": "Last day, YYYY-MM-DD, included"
},
"from": {
"type": "string",
"maxLength": 20,
"description": "First day, YYYY-MM-DD"
},
"zone": {
"type": "string",
"maxLength": 100,
"description": "Show local times in this zone or city instead of your own"
},
"calendar": {
"type": "string",
"maxLength": 80,
"description": "One calendar name; default every imported calendar"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}events_search — Search events
Find events whose title, description, location or attendees contain a phrase. Searches every imported calendar. Without from/to it looks a year back and a year forward on Pro, and the free window either side of today.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"to": {
"type": "string",
"maxLength": 20,
"description": "Last day, YYYY-MM-DD, included"
},
"from": {
"type": "string",
"maxLength": 20,
"description": "First day, YYYY-MM-DD"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to look for, case-insensitive"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}free_busy — Busy blocks and free windows
Merged busy blocks and the free gaps inside your working hours over a day range. Events marked free do not count; whole-day events block the day. Free: 31 days. Use conflicts for overlapping pairs.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 20,
"description": "Last day, YYYY-MM-DD, included"
},
"from": {
"type": "string",
"maxLength": 20,
"description": "First day, YYYY-MM-DD"
},
"zone": {
"type": "string",
"maxLength": 100,
"description": "Zone the working hours and the output are in; default your own"
},
"work_end": {
"type": "string",
"maxLength": 10,
"description": "End of your working day, HH:MM, default 17:00"
},
"calendars": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 20,
"description": "Calendar names; default all of them"
},
"work_start": {
"type": "string",
"maxLength": 10,
"description": "Start of your working day, HH:MM, default 09:00"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}conflicts — Find double bookings
Find double bookings: every PAIR of timed events that overlap, with the minutes they collide, across all calendars unless you name one. Whole-day events are reported apart. Free: 31 days. free_busy shows gaps.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 20,
"description": "Last day, YYYY-MM-DD, included"
},
"from": {
"type": "string",
"maxLength": 20,
"description": "First day, YYYY-MM-DD"
},
"calendar": {
"type": "string",
"maxLength": 80,
"description": "One calendar name; default every imported calendar"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}next_event — Next event
The first event not yet started, within the next 366 days, across every imported calendar or one you name. Returns title, times in your zone, how long until it starts, location, attendees and its id.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"calendar": {
"type": "string",
"maxLength": 80,
"description": "One calendar name; default every imported calendar"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}event_export — Export events to a .ics file
Call this tool to write chosen events to a new .ics file you can send or import elsewhere. Pass either ids (from events_list) or a from/to window. Times are written in UTC so the file lands correctly in any client.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"out_path"
],
"properties": {
"to": {
"type": "string",
"maxLength": 20,
"description": "Last day, YYYY-MM-DD, included"
},
"ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 500,
"description": "Event ids from events_list, events_search or next_event"
},
"from": {
"type": "string",
"maxLength": 20,
"description": "First day, YYYY-MM-DD (alternative to ids)"
},
"calendar": {
"type": "string",
"maxLength": 80,
"description": "With from/to: limit to one calendar"
},
"out_path": {
"type": "string",
"maxLength": 4096,
"description": "Name for the downloaded .ics file, e.g. week.ics"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}event_to_time_entry — Turn a meeting into a time entry
Take one event and return the exact arguments for the time-tracker's entry_add, so a meeting that already happened becomes billable time without retyping it. Writes nothing: pass the JSON straight to entry_add.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"event_id",
"project"
],
"properties": {
"rate": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"maxLength": 60
}
],
"description": "Hourly rate for this entry; a number (120) or the words the user said ('120 euros an hour')"
},
"project": {
"type": "string",
"maxLength": 80,
"description": "Project or client the meeting is billed to"
},
"currency": {
"type": "string",
"maxLength": 20,
"description": "Currency of the rate: EUR, USD, GBP, PLN, or the word the user said ('euros'). Without it the time-tracker falls back to USD."
},
"event_id": {
"type": "string",
"maxLength": 200,
"description": "Event id from events_list, events_search or next_event"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}ics_forget — Forget a calendar
Remove one imported calendar by name and delete this server's local copy of its .ics, freeing a slot. Your own calendar and the source file are untouched. ics_import replaces a name in place.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"description": "The calendar name from calendars_list"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
2 advertised
upgrade_to_pro — Explain the upgrade
Explain what Pro on the calendar server costs and exactly what the user has to do, without leaving the conversation.
- feature
- The capped feature that prompted this, if there was one
plan_my_day — Plan my day
Read today's calendar, find the free stretches, and turn the meetings that already happened into billable time.
- date
- YYYY-MM-DD, default today
- project
- Project to bill today's meetings to
Resources
2 advertised
pricing — Pricing and upgrade
What calendar costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.
pricing://calendartoday — Today's schedule
Every event today across all imported calendars, in your own time zone.
calendar://today90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 412 ms
- 95th percentile latency
- 412 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 412 ms · metadata changed · 12 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mcpstamp-calendar-mcp https://mcp.zovo.one/mcp/calendarCodex
codex mcp add mcpstamp-calendar-mcp --url https://mcp.zovo.one/mcp/calendarCursor
{
"mcpServers": {
"mcpstamp-calendar-mcp": {
"url": "https://mcp.zovo.one/mcp/calendar"
}
}
}Cline
{
"mcpServers": {
"mcpstamp-calendar-mcp": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/calendar",
"disabled": false
}
}
}VS Code
{
"servers": {
"mcpstamp-calendar-mcp": {
"type": "http",
"url": "https://mcp.zovo.one/mcp/calendar"
}
}
}Gemini CLI
gemini mcp add --transport http mcpstamp-calendar-mcp https://mcp.zovo.one/mcp/calendarClaude Desktop
https://mcp.zovo.one/mcp/calendarWindsurf
{
"mcpServers": {
"mcpstamp-calendar-mcp": {
"serverUrl": "https://mcp.zovo.one/mcp/calendar"
}
}
}Let your agent find its tools
Find servers like theluckystrike McpStamp Calendar MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.