Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KALENDIA_TOKENYesYour personal access token from Kalendia (starts with kld_)
KALENDIA_API_URLNoThe Kalendia API base URL (default: https://api.kalendia.io)https://api.kalendia.io
KALENDIA_MCP_URLNoPublic URL for HTTP mode metadata (e.g., https://example.com/mcp)
KALENDIA_MCP_HOSTNoBind host for HTTP mode (default: 0.0.0.0)0.0.0.0
KALENDIA_MCP_PORTNoBind port for HTTP mode (default: 8000)8000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_connectionsA

List the user's connected calendar accounts (Google, Microsoft, iCloud, ICS, Zoom).

Each item: id, provider, email, status, scopes. Use the id with list_calendars.

list_calendarsA

List the LIVE provider calendars under one connection (a fresh fetch from the provider): each item is name, provider_calendar_id (use this as calendar_id in get_agenda), is_primary, is_writable, is_hidden. This is the provider view and has NO Kalendia calendar id; to get the numeric calendar id needed for sync rules and scheduling pages, use list_all_calendars.

list_sync_rulesA

List all sync (mirror) rules. Each rule mirrors events from a source calendar onto a target calendar. Returns id, source_calendar_id, target_calendar_id, visibility_mode, mirror_prefix, enabled.

get_agendaA

Read events from one calendar in a time window.

connection_id comes from list_connections; calendar_id is a calendar's provider_calendar_id from list_calendars (e.g. an email, or "primary"). from_iso / to_iso are ISO-8601 datetimes (e.g. "2026-06-15T00:00:00Z"); omit them to use Kalendia's default window. Returns {events: [...]}.

list_scheduling_pagesB

List the user's scheduling (booking) pages.

create_sync_ruleA

Create a sync rule that mirrors events from source_calendar_id onto target_calendar_id.

Calendar ids come from list_calendars; the target must be writable. visibility_mode is one of "busy_only" (hide all details, default), "title_only", or "full_details". mirror_prefix is an optional string prepended to mirrored event titles (e.g. "[Personal]"). Set enabled=False to create it paused. Mirrors the source's current events into the target on creation.

delete_sync_ruleA

Delete a sync rule (rule_id from list_sync_rules). The mirrored events it created on the target calendar are cleaned up afterward by Kalendia. This cannot be undone.

run_sync_ruleA

Run a sync rule now (a full reconcile that backfills the target from the source). Returns counts of events created / updated / deleted, plus any per-event errors.

create_eventA

Create a calendar event.

connection_id from list_connections; calendar_id is a writable calendar's provider_calendar_id from list_calendars. start_iso / end_iso are ISO-8601 datetimes (e.g. "2026-06-20T14:00:00Z"; naive is read as UTC). attendees is a list of email addresses; notify=True (default) emails them an invitation. add_conference=True attaches a native video link (Google Meet / Teams). The target must be writable and must NOT be the target of a sync rule. Returns {event: {...}}.

reschedule_eventA

Reschedule one event to a new time window (the core "move this call" action).

connection_id from list_connections; calendar_id from list_calendars; event_id is the event's provider_event_id from get_agenda. For a recurring meeting, pass the specific occurrence's id (get_agenda returns each occurrence separately) to move just that one. start_iso / end_iso are ISO-8601 datetimes. Only the time changes: title, attendees, location, and the video link are preserved. notify=True (default) emails the attendees about the new time. Returns {event: {...}}.

cancel_eventA

Cancel (delete) one event. Cannot be undone.

connection_id from list_connections; calendar_id from list_calendars; event_id from get_agenda. notify=True (default) sends a cancellation to the attendees. An unknown event returns an error on Google / Microsoft; iCloud treats an already-deleted event as success.

list_all_calendarsA

List every calendar across all connected accounts as a flat list (id, connection_id, provider_calendar_id, display_name, custom_name, is_primary, is_writable, sync_enabled). Use the calendar id as a sync-rule source/target or a scheduling-page calendar.

connect_icloudA

Connect an Apple iCloud calendar. Requires an app-specific password (NOT your normal Apple password; generate one at appleid.apple.com under Sign-In and Security). Credentials are validated before saving. Returns the new connection.

connect_icsA

Connect a read-only calendar from a public ICS feed URL (an https/webcal .ics link). The feed is fetched and parsed to validate it. An ICS calendar can be a sync source but not a target.

refresh_calendarsA

Re-discover calendars across ALL connected accounts in one call (picks up calendars created since the account was connected). A connection whose provider errors is skipped, not fatal.

discover_calendarsA

Re-discover the calendars under one connection (connection_id from list_connections). Newly visible calendars are auto-activated up to the plan's calendar limit.

set_active_calendarsA

Set which calendars under a connection are active (synced and usable in rules/pages). This REPLACES the full active set for that connection. Note: passing an empty list would disconnect the whole account, so this tool rejects an empty list; use disconnect_connection for that.

rename_calendarA

Set a friendly display name for a calendar (calendar_id from list_calendars). Pass null or an empty string to clear the override and fall back to the provider's name.

disconnect_connectionA

Disconnect a calendar account: permanently deletes the connection and its stored credentials, pauses any booking pages that targeted its calendars, and removes sync rules that used them. The provider OAuth grant is revoked best-effort. Cannot be undone (you would reconnect from scratch). Returns which pages were paused and how many rules were removed.

get_scheduling_pageA

Get one scheduling (booking) page's full config, including its availability_window. Fetch this before update_scheduling_page, since update is a full replace.

get_availabilityA

Get bookable slots for a scheduling page by its slug, optionally within an ISO-8601 UTC window (from_iso/to_iso). Returns {slug, title, duration_minutes, slots: [ISO datetimes]}. Omit the window for the page's full horizon.

create_scheduling_pageA

Create a scheduling (booking) page.

slug is the public URL suffix (unique per account). availability_window is {"timezone": "<IANA, e.g. Europe/Bucharest>", "weekly": {"mon": [["09:00","17:00"]], "tue": [...]}} where each day key (mon..sun) maps to a list of [start, end] "HH:MM" intervals; omit a day for no availability. source_calendar_ids are checked for conflicts; target_calendar_id (must be writable and active) is where confirmed bookings are created. video_provider is one of none | google_meet | teams | zoom (zoom also needs zoom_connection_id).

update_scheduling_pageA

Update a scheduling page. This is a FULL REPLACE: call get_scheduling_page first, change the fields you want, and pass every field back (any omitted optional field resets to its default). Set is_active=False to pause the page. Field meanings match create_scheduling_page.

delete_scheduling_pageA

Delete a scheduling page (page_id from list_scheduling_pages). Cannot be undone.

get_billingA

Get the current plan and subscription status: plan, tier, subscription_status, current_period_end, is_comp.

get_billing_overviewA

Get plan plus current usage and limits: usage {calendars, scheduling_pages} against limits {max_calendars, max_scheduling_pages, teams_app, custom_domain} (null limit = unlimited).

get_audit_logA

Get recent account audit-log entries, most recent first: id, action, target_type, target_id, payload, created_at. limit is clamped to 1..500.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bradbogdan/kalendia-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server