Skip to main content
Glama
ReinforceZwei

trilium-calendar-mcp

calendar_create_event

Create a calendar event with a title, timezone-aware start and end times, all-day or recurring rules, tags, and location. Reuse a UID to update an existing event instead of duplicating it.

Instructions

Create a calendar event.

Args: title: Event title. start_datetime: YYYY-MM-DD for an all-day event, or an ISO datetime such as 2026-07-08T11:00:00 (naive = calendar timezone) / 2026-07-08T03:00:00Z (converted to calendar timezone). calendar_name: Calendar to create in; omit for the default calendar. end_datetime: ISO datetime end, or for all-day events the LAST day (inclusive). Empty = same day / no end. all_day: Force an all-day event (times are ignored). description: Plain text; line breaks are preserved. location: Free text location. categories: Comma-separated categories/tags. timezone: IANA timezone used to interpret naive datetimes. color: Colour name or hex. recurrence_rule: RRULE body, with or without the RRULE: prefix. recurrence_end_date: YYYY-MM-DD that bounds the series (writes UNTIL). recurring: Set False to force a non-recurring event. event_uid: Reuse an existing uid (updates that event instead of creating a duplicate) — use it to make retries idempotent. status, priority, privacy, attendees, url, reminder_minutes, reminder_email, reminders: accepted for compatibility but NOT stored by Trilium; they are echoed back in ignored_fields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNo
colorNo
titleYes
statusNo
all_dayNo
privacyNo
locationNo
priorityNo
timezoneNo
attendeesNo
event_uidNo
recurringNo
remindersNo
categoriesNo
descriptionNo
end_datetimeNo
calendar_nameNo
reminder_emailNo
start_datetimeYes
recurrence_ruleNo
reminder_minutesNo
recurrence_end_dateNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.2

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: naive-vs-Z timezone interpretation, all-day semantics with inclusive end day, the UNTIL write for recurrence_end_date, and the transparent note that status/priority/privacy/attendees/url/reminders are NOT stored but echoed in ignored_fields. It omits return-shape and permission/auth details, but the destructive/side-effect behavior is well explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The per-argument list is long but tightly front-loaded with the action line and never wastes words; length is justified by 22 parameters, though grouping the ignored compatibility fields together is handled efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-param tool with 0% schema coverage, no annotations, and no output schema, the description covers required formats, defaults, and the critical ignored-fields behavior. Missing auth/prerequisite and return-value notes, but it is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and does: it gives formats for start_datetime and end_datetime, defines calendar_name omission default, explains empty end_datetime, and clarifies the debasement of ignored fields — far beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a calendar event') that is unambiguous among siblings like calendar_update_event, calendar_upsert_events, and calendar_delete_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It documents the idempotent retry path via event_uid ('use it to make retries idempotent'), which is genuine usage guidance, but it never says when to prefer calendar_upsert_events or how it differs from calendar_update_event.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.