Skip to main content
Glama

Get calendar event

well_get_calendar_event
Read-only

Read one calendar event with its full description, its guest list (email, name, answer, linked person id and a nearby birthday when known: birthday_in_days counts days to it, negative when it passed that many days ago) and the notes the user saved about this meeting (notes: id, title and excerpt of each). Use it when the user asks who is invited to a meeting, what the agenda says, what they noted about a meeting, or before changing an event. For one instance of a repeating event, pass the occurrence_start returned by well_list_calendar_events. An event another member keeps private is not found. found is false when no event with this id is visible to you in this workspace, true when it is returned. If the result has a note, give it to the user as it is: it invites them to connect their own calendar.

local_start and local_end are the person's own date, weekday and time of the event.

When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass workspace_id on the call.

Read the calendar. Write the from and to of a range with the user's UTC offset from well_convert_time, never an offset you worked out.

Input Schema

NameRequiredDescriptionDefault
event_idYesThe event, from well_list_calendar_events
workspace_idNoTarget workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose which.
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.
workspace_scopeNoRestrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.
occurrence_startNoThe occurrence start from well_list_calendar_events, to read one instance of a repeating event

Output Schema

NameRequiredDescriptionDefault
noteYes
errorNo
eventYes
foundNo
successYes
conversation_idNoThe conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.
newly_connectedNoTools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.
conversation_id_noteNoPresent only when the server opened a fresh lane, stating that no choice recorded earlier was read.
conversation_id_sourceNoWhere the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / event / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "propertyNames": {
      -      "type": "string"
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "local_end": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "date": {
      +            "type": "string"
      +          },
      +          "time": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "weekday": {
      +            "enum": [
      +              "mon",
      +              "tue",
      +              "wed",
      +              "thu",
      +              "fri",
      +              "sat",
      +              "sun"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "date",
      +          "weekday",
      +          "time"
      +        ],
      +        "type": "object"
      +      },
      +      "local_start": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "date": {
      +            "type": "string"
      +          },
      +          "time": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "weekday": {
      +            "enum": [
      +              "mon",
      +              "tue",
      +              "wed",
      +              "thu",
      +              "fri",
      +              "sat",
      +              "sun"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "date",
      +          "weekday",
      +          "time"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / occurrence_start
      Added value: +{
      +  "description": "The occurrence start from well_list_calendar_events, to read one instance of a repeating event",
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +  "type": "string"
      +}
  3. Changed4 schema fields changed
    • removedOutput schema / properties / note / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / note / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / resolved_workspace / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / resolved_workspace / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / properties / newly_connected / description
      Previous value: -"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. Start the reply with one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."New value: +"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."
  5. Changed1 schema field changed
    • addedOutput schema / properties / found
      Added value: +{
      +  "type": "boolean"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / workspace_scope
      Added value: +{
      +  "description": "Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.",
      +  "enum": [
      +    "family"
      +  ],
      +  "type": "string"
      +}
  7. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and the description adds real context beyond them: private-event invisibility, the meaning of the `found` flag, and an instruction to relay any returned note verbatim because it asks the user to connect their own calendar. The trailing paragraph about writing a from/to range with a UTC offset from well_convert_time is boilerplate that does not fit a single-event read and slightly muddies the behavioral picture.

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?

Core capability and usage triggers are correctly front-loaded, but the long parenthetical on birthday_in_days and the closing 'Read the calendar. Write the from and to of a range...' paragraph dilute focus and read as copied boilerplate. Some sentences restate what the schema already documents at full coverage.

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 read-only single-record tool with an output schema present, the description covers the gaps that matter: visibility/missing-event behavior, repeating-instance selection, and workspace selection. It does not touch conversation_id or workspace_scope, but the schema documents both at high coverage, so nothing an agent needs to invoke 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 coverage is 100%, so the baseline is 3; the description goes further by explaining that occurrence_start must come from well_list_calendar_events to read one instance of a repeating event, and by restating the workspace_id conditional so the agent knows when omission is safe versus wrong. It also explains the guest-level birthday_in_days sign convention, which the schema alone would not convey.

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 and resource ('Read one calendar event') and immediately delimits what comes back: full description, guest list with per-guest fields, and saved notes. It is clearly distinct from well_list_calendar_events, which it names, so an agent can choose between the single-read and list tools without opening either schema.

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

Usage Guidelines5/5

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

Gives concrete triggers ('who is invited to a meeting, what the agenda says, what they noted about a meeting, or before changing an event') and routes to the sibling that supplies an id. It also states the exclusion rule that an event kept private by another member is not found, and spells out the workspace_id condition for single- vs multi-workspace tokens.

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