Skip to main content
Glama
merajmehrabi

Outlook Calendar MCP

by merajmehrabi

Outlook Calendar MCP Tool

A Model Context Protocol (MCP) server that allows Claude to access and manage your local Microsoft Outlook calendar (Windows only).

License: MIT

Features

  • View Calendar Events: List events within a date range, view event details, check attendee status

  • Manage Calendar Events: Create new events and meetings, update existing events

  • Calendar Intelligence: Find free time slots for scheduling, identify optimal meeting times

  • Multiple Calendar Support: Access different calendars in your Outlook profile

Related MCP server: Enhanced Outlook MCP Server

Prerequisites

  • Windows operating system

  • Microsoft Outlook desktop client installed

  • VBScript support (see VBScript Installation below if you're on Windows 11 24H2+)

  • Node.js (version 14.x or higher)

  • npm (comes with Node.js)

VBScript Installation (Windows 11 24H2+ Users)

Important: Starting with Windows 11 24H2, VBScript is no longer installed by default and must be enabled as an optional feature.

If you're experiencing issues with the MCP server not working after a Windows update, you likely need to install VBScript:

  1. Open Settings (Windows + I)

  2. Go to AppsOptional features

  3. Click "View features" next to "Add an optional feature"

  4. Search for "VBScript"

  5. Select VBScript and click Install

  6. Restart your computer after installation

VBScript Deprecation Timeline:

  • Phase 1 (Late 2024+): Available as optional feature in Windows 11 24H2

  • Phase 2 (~2027): Will no longer be enabled by default

  • Phase 3 (Future): Complete removal from Windows

Note: Thanks to community feedback about VBScript deprecation, I'm considering architectural improvements to make the project more future-proof.

Installation

Option 1: Install from npm

npm install -g outlook-calendar-mcp

You can also run it directly without installation using npx:

npx outlook-calendar-mcp

Option 2: Install from source

  1. Clone this repository or download the source code

  2. Install dependencies:

npm install
  1. Run the server:

npm start

MCP Server Configuration

To use this tool with Claude, you need to add it to your MCP settings configuration file.

For Claude Desktop App

Add the following to your Claude Desktop configuration file (located at %APPDATA%\Claude\claude_desktop_config.json):

If installed globally via npm:

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "outlook-calendar-mcp",
      "args": [],
      "env": {}
    }
  }
}

Using npx (without installation):

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "npx",
      "args": ["-y", "outlook-calendar-mcp"],
      "env": {}
    }
  }
}

If installed from source:

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "node",
      "args": ["path/to/outlook-calendar-mcp/src/index.js"],
      "env": {}
    }
  }
}

For Claude VSCode Extension

Add the following to your Claude VSCode extension MCP settings file (located at %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json):

If installed globally via npm:

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "outlook-calendar-mcp",
      "args": [],
      "env": {}
    }
  }
}

Using npx (without installation):

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "npx",
      "args": ["-y", "outlook-calendar-mcp"],
      "env": {}
    }
  }
}

If installed from source:

{
  "mcpServers": {
    "outlook-calendar": {
      "command": "node",
      "args": ["path/to/outlook-calendar-mcp/src/index.js"],
      "env": {}
    }
  }
}

For source installation, replace path/to/outlook-calendar-mcp with the actual path to where you installed this tool.

Usage

Once configured, Claude will have access to the following tools:

List Calendar Events

list_events
- startDate: Start date in MM/DD/YYYY format
- endDate: End date in MM/DD/YYYY format (optional)
- calendar: Calendar name (optional)

Example: "List my calendar events for next week"

Create Calendar Event

create_event
- subject: Event subject/title
- startDate: Start date in MM/DD/YYYY format
- startTime: Start time in HH:MM AM/PM format
- endDate: End date in MM/DD/YYYY format (optional)
- endTime: End time in HH:MM AM/PM format (optional)
- location: Event location (optional)
- body: Event description (optional)
- isMeeting: Whether this is a meeting with attendees (optional)
- attendees: Semicolon-separated list of attendee email addresses (optional)
- calendar: Calendar name (optional)

Example: "Add a meeting with John about the project proposal on Friday at 2 PM"

Find Free Time Slots

find_free_slots
- startDate: Start date in MM/DD/YYYY format
- endDate: End date in MM/DD/YYYY format (optional)
- duration: Duration in minutes (optional)
- workDayStart: Work day start hour (0-23) (optional)
- workDayEnd: Work day end hour (0-23) (optional)
- calendar: Calendar name (optional)

Example: "When am I free for a 1-hour meeting this week?"

Get Attendee Status

get_attendee_status
- eventId: Event ID
- calendar: Calendar name (optional)

Example: "Who hasn't responded to my team meeting invitation?"

Important Note: When using operations that require an event ID (update_event, delete_event, get_attendee_status), you must use the id field from the list_events response. This is the unique EntryID that Outlook uses to identify events.

Update Calendar Event

update_event
- eventId: Event ID to update
- subject: New event subject/title (optional)
- startDate: New start date in MM/DD/YYYY format (optional)
- startTime: New start time in HH:MM AM/PM format (optional)
- endDate: New end date in MM/DD/YYYY format (optional)
- endTime: New end time in HH:MM AM/PM format (optional)
- location: New event location (optional)
- body: New event description (optional)
- calendar: Calendar name (optional)

Example: "Update my team meeting tomorrow to start at 3 PM instead of 2 PM"

Get Calendars

get_calendars

Example: "Show me my available calendars"

Security Notes

  • On first use, Outlook may display security prompts to allow script access

  • The tool only accesses your local Outlook client and does not send calendar data to external servers

  • All calendar operations are performed locally on your computer

Troubleshooting

  • VBScript Not Available (Windows 11 24H2+): If you get errors after a Windows update, VBScript may need to be installed. See VBScript Installation section above

  • "Script execution failed" errors: Usually indicates VBScript is not available or Outlook is not accessible

  • Outlook Security Prompts: If you see security prompts from Outlook, you need to allow the script to access your Outlook data

  • Script Execution Policy: If you encounter script execution errors, you may need to adjust your PowerShell execution policy

  • Path Issues: Ensure the path in your MCP configuration file points to the correct location of the tool

Contributing

We welcome contributions to the Outlook Calendar MCP Tool! Please see our Contributing Guide for details on how to get started.

By participating in this project, you agree to abide by our Code of Conduct.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

7 tools
create_eventC

Create a new calendar event or meeting

ParametersJSON Schema
NameRequiredDescriptionDefault
attendeesNoSemicolon-separated list of attendee email addresses (optional)
bodyNoEvent description/body (optional)
calendarNoCalendar name (optional)
endDateNoEnd date in MM/DD/YYYY format (optional, defaults to start date)
endTimeNoEnd time in HH:MM AM/PM format (optional, defaults to 30 minutes after start time)
isMeetingNoWhether this is a meeting with attendees (optional, defaults to false)
locationNoEvent location (optional)
startDateYesStart date in MM/DD/YYYY format
startTimeYesStart time in HH:MM AM/PM format
subjectYesEvent subject/title

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates events but doesn't mention whether this requires authentication, what happens on conflicts, if notifications are sent to attendees, rate limits, or the response format. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with 10 parameters and no annotations or output schema, the description is insufficient. It doesn't address authentication needs, error conditions, what the return value contains, or how it interacts with sibling tools. The high parameter count and lack of structured behavioral data require more descriptive context than provided.

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

Parameters3/5

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

The schema description coverage is 100%, with all 10 parameters well-documented in the input schema. The description adds no parameter-specific information beyond the generic 'create' action, so it doesn't enhance understanding of individual parameters. The baseline score of 3 reflects adequate but minimal value added by the description.

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

Purpose4/5

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

The description clearly states the verb ('create') and resource ('calendar event or meeting'), making the purpose unambiguous. However, it doesn't differentiate this tool from its sibling 'update_event' beyond the obvious creation vs. update distinction, nor does it specify if this is for personal calendars, shared calendars, or specific platforms.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'update_event' for modifying existing events or 'find_free_slots' for scheduling. It doesn't mention prerequisites (e.g., calendar access permissions) or contextual cues for when creation is appropriate versus listing or deleting events.

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

delete_eventB

Delete a calendar event by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNoCalendar name (optional)
eventIdYesEvent ID to delete

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It states the action ('Delete') but does not disclose critical traits like required permissions, whether deletion is permanent or reversible, error handling (e.g., for invalid IDs), or side effects (e.g., notifications to attendees).

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It is front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks context on permissions, consequences, error cases, or return values, leaving significant gaps for safe and effective use by an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters ('calendar' as optional name, 'eventId' as required ID). The description adds no additional meaning beyond implying 'eventId' is used for deletion, aligning with but not enriching the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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 description clearly states the specific action ('Delete') and resource ('a calendar event'), with precise targeting ('by its ID'). It distinguishes from siblings like 'create_event', 'update_event', and 'list_events' by focusing on removal rather than creation, modification, or listing.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing an existing event ID), exclusions (e.g., not for recurring events), or comparisons to siblings like 'update_event' for modifications instead of deletion.

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

find_free_slotsC

Find available time slots in the calendar

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNoCalendar name (optional)
durationNoDuration in minutes (optional, defaults to 30)
endDateNoEnd date in MM/DD/YYYY format (optional, defaults to 7 days from start date)
startDateYesStart date in MM/DD/YYYY format
workDayEndNoWork day end hour (0-23) (optional, defaults to 17)
workDayStartNoWork day start hour (0-23) (optional, defaults to 9)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't cover critical aspects like whether this is a read-only operation, how results are formatted, if there are rate limits, or authentication requirements, leaving significant gaps for an agent to understand tool behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized for a simple query tool, with no wasted information.

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

Completeness2/5

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

Given the tool's moderate complexity (6 parameters, no output schema, and no annotations), the description is incomplete. It fails to explain return values, error conditions, or behavioral traits, making it inadequate for an agent to fully understand how to use this tool effectively in context.

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

Parameters3/5

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

The input schema has 100% description coverage, so parameters like 'duration', 'workDayStart', and 'endDate' are well-documented there. The description adds no additional parameter semantics beyond implying time slot availability, which aligns with the schema but doesn't provide extra value, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Find') and resource ('available time slots in the calendar'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential sibling tools like 'list_events' or 'get_calendars' that might also involve calendar queries, missing full differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list_events' or 'get_calendars' from the sibling list. It lacks context about prerequisites, such as needing calendar access or when free slot queries are appropriate over other calendar operations.

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

get_attendee_statusC

Check the response status of meeting attendees

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNoCalendar name (optional)
eventIdYesEvent ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Check') but doesn't describe what 'response status' entails (e.g., accepted, declined, tentative), whether it requires specific permissions, or how results are returned (e.g., as a list, with timestamps). This leaves significant gaps in understanding the tool's behavior beyond its basic purpose.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse. Every word earns its place, adhering to best practices for conciseness.

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

Completeness2/5

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

Given the tool's complexity (checking attendee statuses, which could involve permissions or data formats) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'response status' means, how results are structured, or any prerequisites like authentication. This leaves the agent with insufficient information to use the tool effectively in real scenarios.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear documentation for 'calendar' (optional calendar name) and 'eventId' (required event ID). The description doesn't add any meaning beyond this, such as explaining how 'calendar' affects the lookup or what format 'eventId' should be in. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('response status of meeting attendees'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_events' or 'get_calendars', which might also provide attendee information in different contexts, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't specify if this is for checking statuses after an event, during planning, or how it differs from 'list_events' which might include attendee details. This lack of context leaves the agent to infer usage from the tool name alone.

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

get_calendarsB

List available calendars

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 'List available calendars' implies a read operation but doesn't disclose behavioral traits like whether it lists all calendars or only accessible ones, pagination, rate limits, or authentication requirements. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description 'List available calendars' is a single, efficient sentence that front-loads the core purpose with zero wasted words. It's appropriately sized for a simple tool with no parameters.

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

Completeness2/5

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

Given no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what 'available' means (e.g., user-accessible vs. all), return format, or differentiation from similar tools, leaving the agent with insufficient context for optimal use.

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?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it appropriately doesn't mention any, earning a baseline score of 4 for this scenario.

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

Purpose4/5

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

The description 'List available calendars' clearly states the verb ('List') and resource ('available calendars'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_events' or 'get_attendee_status', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_events' (for events within calendars) and 'find_free_slots' (for availability), there's clear need for differentiation, but the description offers none.

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

list_eventsC

List calendar events within a specified date range

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNoCalendar name (optional)
endDateNoEnd date in MM/DD/YYYY format (optional)
startDateYesStart date in MM/DD/YYYY format

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the basic action but lacks critical details: it doesn't mention whether this requires authentication, how results are returned (e.g., pagination, format), rate limits, or what happens if parameters are omitted. For a read tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a straightforward list operation, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is incomplete. It lacks information on authentication needs, result format, pagination, error handling, or how it differs from siblings like 'find_free_slots'. Without annotations or output schema, the description should provide more context for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all three parameters (calendar, endDate, startDate) with their types, optionality, and format. The description adds no additional parameter semantics beyond implying date-range filtering, which is already covered in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('calendar events') with scope ('within a specified date range'). It distinguishes from siblings like 'create_event' or 'delete_event' by indicating a read operation, but doesn't explicitly differentiate from similar read tools like 'find_free_slots' or 'get_attendee_status'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'find_free_slots' or 'get_calendars'. It mentions a date range but doesn't specify when this is preferable over other event-related tools, leaving the agent to infer usage context.

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

update_eventC

Update an existing calendar event

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoNew event description/body (optional)
calendarNoCalendar name (optional)
endDateNoNew end date in MM/DD/YYYY format (optional)
endTimeNoNew end time in HH:MM AM/PM format (optional)
eventIdYesEvent ID to update
locationNoNew event location (optional)
startDateNoNew start date in MM/DD/YYYY format (optional)
startTimeNoNew start time in HH:MM AM/PM format (optional)
subjectNoNew event subject/title (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but fails to describe critical behaviors: whether it requires specific permissions, if changes are reversible, how partial updates are handled, error conditions, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Update an existing calendar event') with zero wasted words. It is appropriately sized for a tool with a clear name and well-documented schema, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the complexity of a mutation tool with 9 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (e.g., permissions, error handling), usage guidelines, and details on return values, leaving significant gaps for an agent to operate effectively. The high schema coverage helps but doesn't compensate for these omissions.

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

Parameters3/5

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

The schema description coverage is 100%, with all 9 parameters well-documented in the input schema (e.g., formats like 'MM/DD/YYYY' for dates). The description adds no additional parameter semantics beyond what's in the schema, such as explaining interdependencies or default behaviors. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Update') and resource ('an existing calendar event'), making the tool's function immediately understandable. It distinguishes this from 'create_event' (creating new) and 'delete_event' (removing), though it doesn't explicitly mention these siblings. The purpose is specific but lacks explicit sibling differentiation for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_event' or 'delete_event', nor does it mention prerequisites (e.g., needing an existing event ID) or contextual constraints. It simply states what the tool does without indicating appropriate scenarios, leaving the agent to infer usage from the tool name alone.

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

TDQS

A3.6/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no overlap: create, delete, list, and update events are separate operations, while find_free_slots, get_attendee_status, and get_calendars target unique aspects of calendar management. An agent can easily distinguish between them without confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case (e.g., create_event, list_events, get_calendars). The naming is predictable and readable throughout, with no deviations in style or convention.

Tool Count5/5

With 7 tools, this server is well-scoped for managing an Outlook calendar. Each tool earns its place by covering essential operations like event CRUD, calendar listing, attendee tracking, and scheduling assistance, avoiding bloat or thin coverage.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for calendar events (create, list, update, delete) and extends to key domain functions like finding free slots, checking attendee status, and listing calendars. There are no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/merajmehrabi/Outlook_Calendar_MCP'

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