Skip to main content
Glama

Read events

events_list
Read-only

Read the events of a period across every connected calendar, earliest first, or latest first with newestFirst. query finds the events whose title, description, place, organizer or guests hold every word it names - a person by name or address included - on every account: Google searches its own, while Outlook, which searches titles alone, is read across the period and matched here. account, with provider where two share an address, reads that account alone, and calendarId, as calendars_list names it, that one of its calendars alone. Each event answers once, naming under copies every account and calendar holding it, with that copy's id, how it shows there and that account's own answer. An occurrence of a recurring series names under originalStart the start its series gave it, which a moved one keeps, and under each copy that account's seriesId. A calendar shared into one account from another connected account is read through its owner alone. Lumman's own busy copies - private blocks titled "Busy · (Multi Calendar connector)" - are never among the events: busyCopies answers them apart, one entry per copied busy time with its start and end, the account it copies under copyOf - unknown where no record of it stands - and each account it stands in under standsIn. None counts as the person's time or can be moved or cancelled; asked about one, say it is a busy copy of that account, switched off at https://lumman.co/mcp/account/multi-calendar or by taking that pair away with busy_everywhere_set. Every time is given with its offset in the zone the answer names under timeZone: the one passed, else the person's stored zone, which now names with their time now; an all-day event's start and end are dates, its end the day after its last. An answer, a guest's or an account's own, is accepted, tentative, declined, unanswered or organizer, and one a copy cannot know is left out. An event names its kind where it is no ordinary event - a Google outOfOffice, focusTime, workingLocation, birthday or fromGmail entry - its privacy where it is not normal: public, private, confidential or personal - and its Teams, Zoom or Meet join link, and each copy its webLink; an out-of-office event shows as away. A description is its first 255 characters, marked descriptionCut where it goes on: events_get reads it whole. Each calendar answers at most 50 events, read in time order; one with more is named under cutShort with its calendarId, readTo - the start of the last event read - and continueAt: pass that continueAt with its account and calendarId, the same period and query, to read on from exactly where it stopped; read latest first, such a calendar's latest events are the ones past readTo, so read it on before naming the latest. A calendar or an account that could not be read, or that the person does not let you see, is named under unread with why: needs_reconnection - reconnected at https://lumman.co/mcp/account/multi-calendar - not_allowed, refused, gone, rate_limited or unavailable; where nothing could be read the answer is an error. malformed counts events a provider sent in a form that could not be read, each left out. An event whose words screen as a prompt attack is left out and named under withheld by its start, its end and each copy's account, calendarId and id - by account alone where an id screened so - and a calendar whose name screened so is named by its account alone.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the period, excluded, in the same forms.
fromYesStart of the period, included: e.g. 2026-10-12, 2026-10-12T09:00 or 2026-10-12T09:00:00+01:00.
queryNoWords, or a person by name or address, every one of which an event must hold.
accountNoRead this connected account alone, by the address calendars_list names.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
timeZoneNoAn IANA zone such as Europe/London to answer in; the person's stored one where omitted.
calendarIdNoRead this calendar of the account named alone, by the calendarId calendars_list names.
continueAtNoRead on from where a calendar under cutShort was cut: its continueAt, with its account and calendarId.
newestFirstNoAnswer the latest events first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare a safe, read-only, closed-world read, and the description adds substantial context beyond them: 50-events-per-calendar cap with cutShort/readTo/continueAt resumption, unread reasons (needs_reconnection, not_allowed, refused, gone, rate_limited, unavailable), withheld prompt-attack events, malformed counts, busy-copy exclusion, and 255-char description truncation.

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

Conciseness3/5

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

It is front-loaded with the core purpose, and most sentences carry needed return-value information since there is no output schema. But it is a single massive run-on paragraph with no grouping, making it hard to scan for the operational details an agent needs (pagination, unread, withheld).

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

Completeness5/5

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

With no output schema and 9 parameters, the description carries the full burden and delivers: it documents event fields, copies, occurrence/originalStart, timeZone handling, answer statuses, join links, pagination, and all error/omission cases. Nothing essential to calling or interpreting the tool correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: query semantics differ per provider (Google searches all fields, Outlook searches titles alone and is read across the period then matched), provider is 'needed only where two connected accounts share an address,' and continueAt must be paired with the cutShort account and calendarId.

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?

Opens with a specific verb+resource+scope: 'Read the events of a period across every connected calendar, earliest first, or latest first with newestFirst.' It also distinguishes itself from the sibling events_get by noting events_get reads a description whole, and from calendars_list by defining account/calendarId in terms of it.

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: narrowing with account/provider/calendarId, resuming with continueAt after cutShort, and handling busy copies ('asked about one, say it is a busy copy of that account... or take that pair away with busy_everywhere_set'). However it never contrasts itself against other listing/availability siblings such as free_times_find or circles_free_times_find, so the when-not framing is incomplete.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources