Skip to main content
Glama
mpalermiti

outlook-mcp

by mpalermiti

outlook_create_event

Destructive

Schedule a calendar event with subject, start, and end times; add attendees, recurrence, busy status, or online meeting details when needed.

Instructions

Create a calendar event with optional attendees, recurrence, busy status, online meeting.

Example: outlook_create_event(subject="Q3 review", start="2026-08-15T14:00:00Z", end="2026-08-15T15:00:00Z", attendees=["alice@acme.com"]) is_online is accepted but has no effect on personal accounts — Graph silently ignores isOnlineMeeting for consumer mailboxes (it returns isOnlineMeeting: False, onlineMeetingProvider: "unknown"). Teams meetings require a work/school account. start/end are ISO 8601. Passing recurrence creates a series, not a single event. It takes either a shorthand — "daily", "weekdays", "weekly", "monthly", "yearly", all anchored on start and open-ended — or a full Microsoft Graph recurrence object for anything else, e.g. every other Mon+Fri for 10 occurrences: {"pattern": {"type": "weekly", "interval": 2, "daysOfWeek": ["monday", "friday"]}, "range": {"type": "numbered", "numberOfOccurrences": 10}} range.startDate defaults to the event's start date. Prefer a bounded range ("endDate"/"numbered") when the event has attendees — a "noEnd" series invites them to every future occurrence. timezone is the IANA zone the event is anchored in, which is what a recurring series is expanded against (default: the configured zone). A zone name like America/Los_Angeles, never an abbreviation like PDT. show_as is Outlook's "Show as": "free", "tentative", "busy", "oof" (out of office), "workingElsewhere", or "unknown". Omitted, Graph defaults the event to busy.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endYes
bodyNo
startYes
show_asNo
subjectYes
locationNo
timezoneNo
attendeesNo
is_onlineNo
is_all_dayNo
recurrenceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.22.1
    • addedInput schema / properties / show_as
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Show As"
      +}
    • addedInput schema / properties / timezone
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Timezone"
      +}
  2. Changed1 schema field changedv1.19.0
    • changedInput schema / properties / recurrence / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. First observedv1.11.0

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=true); the description goes well beyond them by disclosing silent-failure behavior (`is_online` is ignored on consumer accounts and returns isOnlineMeeting: False), the series-vs-single-event consequence of passing recurrence, the default busy status when show_as is omitted, and the noEnd series pitfall that invites attendees to every future occurrence. These are exactly the behavioral traits an agent must know before calling.

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 purpose is front-loaded in the first sentence, followed by a concrete call example, then model-specific caveats. It is fairly long but nearly every sentence carries operational value; only minor tightening (e.g. the parenthetical REST response detail) could be trimmed.

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 an 11-parameter mutation tool with no output schema and thin annotations, the description supplies the semantics most likely to cause a bad call (recurrence, timezone, show_as, is_online). It does not state what is returned (e.g. the created event id) or any auth/permission prerequisites, which are minor gaps given no output schema exists.

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 0%, so the description carries the full burden, and it compensates well for the non-obvious parameters: ISO 8601 for start/end, shorthand vs full Graph recurrence object with a worked example, IANA zone names ('never an abbreviation like PDT'), the show_as enum values, and the is_online caveat. It leaves body, location, and is_all_day undocumented, but those are largely self-evident from their names.

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?

The opening sentence gives a precise verb+resource ('Create a calendar event') plus the optional dimensions (attendees, recurrence, busy status, online meeting), which cleanly separates it from the sibling mutators such as outlook_update_event, outlook_rsvp, and outlook_create_task. An agent can identify this tool without opening the schema.

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?

The description gives conditional guidance on parameters (use a bounded recurrence range when there are attendees, prefer full Graph objects for complex patterns, is_online only works on work/school accounts), but it never states when to choose this tool over outlook_update_event or when to RSVP instead of creating. Usage context is implied rather than explicit.

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

Deploy Server

Other Tools