Telegram Calendar
Manage @calendar0bot events,reminders,notes, sync with Google/Apple/CalDAV Get your agenda / free-slots / public holidays and other
What it can do
- Get Me: Profile of the authenticated user: id, name, username, timezone, locale. The timezone field is the IANA zone in which every date in this API is returned (ISO 8601 with that offset). Full setti
- Search Events: List events in a time window for the authenticated user, including items from subscribed or shared calendars. from and to are optional ISO 8601 date or date-time (default ±31 days). The
- Get Event: Get one event owned by the authenticated user by id. A missing id and an id owned by someone else both return not found. Dates use the user timezone.
What data it sees
Do you need an account
No: the server works without sign-in
Manage @calendar0bot events,reminders,notes, sync with Google/Apple/CalDAV Get your agenda / free-slots / public holidays and other
How to connect
How to connect Telegram Calendar to Claude
The server address to paste into Claude settings:
https://calendar0bot.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Telegram Calendar to ChatGPT
The server address to paste into ChatGPT settings:
https://calendar0bot.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Telegram Calendar to Cursor
The server address to paste into Cursor settings:
https://calendar0bot.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (19)
Raw names from tools/list. Only developers need these.
| get_me | Profile of the authenticated user: id, name, username, timezone, locale. The timezone field is the IANA zone in which every date in this API is returned (ISO 8601 with that offset). Full settings are never returned. |
| search_events | List events in a time window for the authenticated user, including items from subscribed or shared calendars. from and to are optional ISO 8601 date or date-time (default ±31 days). The window cannot exceed 366 days. Optional calendarId filters one calendar; optional q matches title or description (case-insensitive). Dates in the result use the user timezone. |
| get_event | Get one event owned by the authenticated user by id. A missing id and an id owned by someone else both return not found. Dates use the user timezone. |
| create_event | Create an event or task for the authenticated user. title is required (1–200 characters). start and end are ISO 8601 date-time with offset, or YYYY-MM-DD for an all-day event in the event timezone. timezone is an IANA name (default UTC) and stays the event zone — it is not replaced by the user timezone. rrule is an iCalendar RRULE string. status is active, done, undone, or cancelled. type is event or task. location is a short place name. waitSync defaults to true and waits for the external calendar so the response can include links; false responds immediately and links may be absent. |
| update_event | Update an event owned by the authenticated user. Pass id plus any fields to change. start and end are ISO 8601 date-time with offset, or YYYY-MM-DD for an all-day event in the event timezone. A missing id and an id owned by someone else both return not found. waitSync defaults to true and waits for the external calendar so the response can include links; false responds immediately and links may be absent. |
| delete_event | Delete an event owned by the authenticated user. mode all removes the whole series (default). occurrence removes one date; following removes that date and later ones. occurrence and following require occurrenceDate as ISO 8601 date or date-time. A missing id and an id owned by someone else both return not found. |
| set_event_status | Set status of an event owned by the authenticated user. status is active, done, undone, or cancelled. For a repeating task pass occurrenceDate as ISO 8601 date or date-time so only that day changes. A missing id and an id owned by someone else both return not found. |
| list_calendars | List calendars owned by the authenticated user. Returns id, name, description, image id, and whether the calendar is shared. Does not include calendars of other users. |
| get_free_slots | Find unoccupied time windows in the authenticated user calendar. from and to are optional ISO 8601 date or date-time (default ±31 days). The window cannot exceed 366 days. duration is the minimum slot length in minutes (default 30, range 5–1440). Optional dayStart and dayEnd limit the search to a workday in HH:MM (24-hour, user timezone). Slot bounds use the user timezone. |
| find_conflicts | Find overlapping events in the authenticated user calendar. from and to are optional ISO 8601 date or date-time (default ±31 days). The window cannot exceed 366 days. Optional start and end check a proposed slot against existing events before create_event. Optional calendarId limits the search to one calendar. Intervals that only touch at an endpoint are not a conflict. |
| get_notes | List daily notes of the authenticated user in a time window. from and to are optional ISO 8601 date or date-time (default ±31 days). The window cannot exceed 366 days. Dates in the result are YYYY-MM-DD. |
| save_note | Create or replace a daily note for the authenticated user. date is YYYY-MM-DD. text is the note body (up to 1000 characters). emoji is an optional list of emoji strings. append true adds text to the existing note instead of replacing it. Clearing the text deletes the note and still returns an empty note for that date. |
| get_flows | Get menstrual-cycle periods, settings, and history for the authenticated user. Period bounds use the user timezone. Dates in history are YYYY-MM-DD. Does not include cycle-share links or secrets. |
| save_flow | Mark a menstrual-cycle start or end for the authenticated user. date is YYYY-MM-DD. event is flowstart or flowend. |
| delete_flow | Delete a menstrual-cycle start or end mark for the authenticated user. date is YYYY-MM-DD. event is flowstart or flowend. |
| get_holidays | Get public holidays for a country and year. country is a code from list_holiday_countries. lang is optional (defaults to the user locale, then en). year is optional (defaults to the current year). Dates in the result are YYYY-MM-DD. |
| list_holiday_countries | List country codes that have public-holiday data. Use a code as country in get_holidays. |
| render_event | Show an event card in the chat. First call get_event or search_events, then pass that PublicEvent here. This tool only renders; it does not read the calendar store. |
| render_agenda | Show a week or month agenda in the chat. First call search_events with the same from and to, then pass view plus that window and events here. This tool only renders; it does not read the calendar store. |