Skip to main content
Glama

outlook-classic-windows-mcp

MVP MCP server for working with a locally configured classic Outlook for Windows desktop profile.

This does not use Microsoft Graph, Outlook on the web, new Outlook for Windows, or admin-enabled cloud APIs. It uses Windows COM automation against the classic Outlook desktop app/profile available on the machine running the MCP server. This is useful if you don't want to deal with your IT support or ask for your admin's blessing.

Note: this MCP is idiosyncratic to my own workflow and requirements. It is advised to fork and modify it—or ask your coding agent to do it for you—to mold the MCP to your own Outlook setup and use case.

Warning: Classic Outlook for Windows for Microsoft 365 users is supported until at least 2029. New Outlook gradually becomes the default or replacement. This MCP will only be viable in the near/medium term. In the long term, use a different MCP that uses admin-backed APIs! See https://learn.microsoft.com/en-us/answers/questions/5554339/when-will-classic-outlook-end

Requirements

  • Windows

  • Classic Microsoft Outlook desktop installed and configured

  • uv

Related MCP server: outlook-mcp

Install / run

cd C:\Users\muhammad.menjeni\git\outlook-classic-windows-mcp
uv sync
uv run outlook-local-mcp

The MCP server speaks stdio, so it is intended to be launched by an MCP client.

Pi MCP config example

Add a local server entry similar to this in your Pi MCP configuration, adjusting the path if needed:

{
  "mcpServers": {
    "outlook-local": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\muhammad.menjeni\\git\\outlook-classic-windows-mcp",
        "run",
        "outlook-local-mcp"
      ]
    }
  }
}

Tools

search_email

Searches Outlook mail by subject and/or body.

Arguments:

  • query string: case-insensitive substring to find.

  • folder string: folder to search. Default: Inbox. You can use paths like Inbox/Archive or Mailbox Name/Inbox.

  • search_scope: all, subject, or body. Default: all.

  • max_results: number of matches to return. Default: 10.

  • max_items: newest items to inspect in the folder. Default: 500.

  • include_body_preview: include a short body preview. Default: true.

list_mail_folders

Lists available Outlook folders to help choose a folder path.

create_leave_calendar_blocks

Creates two unsent Outlook calendar items for leave review:

  1. A personal blocker marked Out of Office with no attendees.

  2. A notification meeting marked Free with the supplied attendees.

Nothing is sent. By default both items are saved and opened in Outlook for manual review/sending.

Arguments:

  • start_time string: start date/time, e.g. 2026-09-01 08:00.

  • end_time string: end date/time. For all-day events this is interpreted as an exclusive end, e.g. one day from 2026-09-04 00:00 to 2026-09-05 00:00.

  • required_attendees list/string: additional notification recipients. Configurable defaults can also be used.

  • subject string: default comes from config, initially Amirul: On-Leave.

  • body string: message body.

  • optional_attendees list/string: optional notification recipients.

  • location string.

  • display boolean: open the saved items in Outlook. Default: true.

  • confirmed boolean: must be true to actually create Outlook calendar items. Without confirmation, the tool only returns a proposal.

get_leave_defaults

Shows the current leave defaults and config path.

set_leave_defaults

Persists leave defaults such as subject and notification attendees. Requires confirmed=true before writing config.

infer_leave_recipients

Read-only scan of recent local Outlook email to infer candidate distribution lists for leave notifications. Returns candidates and evidence; it does not write config or create drafts.

resolve_recipients

Resolves names, emails, or distribution lists using Outlook recipient resolution/address book.

search_contacts

Searches local Outlook contact folders by name, email, company, department, or job title.

Notes / limitations

  • First access may start Outlook if it is not already running.

  • Your organization may show Outlook Object Model Guard prompts or block automation by policy.

  • This MVP searches by scanning recent folder items, which is simple and reliable but not as fast as indexed Outlook search for very large folders.

Available Tools

8 tools
create_leave_calendar_blocksA

Create two unsent Outlook calendar items for leave review.

Creates:

  1. A personal calendar blocker marked Out of Office with no attendees.

  2. A meeting notification marked Free with the supplied attendees.

Nothing is sent. Items are saved locally, and by default opened in Outlook for manual review and sending.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoFYI, I will be on leave during this period.
all_dayNo
displayNo
subjectNo
end_timeYes
locationNo
confirmedNo
start_timeYes
optional_attendeesNo
required_attendeesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/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 clearly states that items are unsent, saved locally, and by default opened in Outlook for manual review. It also explains the two calendar items differ in visibility (Out of Office vs Free) and attendee handling. This covers key behavioral aspects, though it could mention permission requirements or reversibility.

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 concise and well-structured. It front-loads the main purpose, uses a clear bullet-point list for the two outputs, and includes critical caveats (unsent, saved locally) in a compact format. Every sentence adds value without unnecessary verbosity.

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 has 10 parameters with no schema descriptions, the description should provide enough context to invoke it correctly. It fails to explain how parameters map to the two calendar items, especially attendee handling and optional settings like all_day and confirmed. While the overall purpose is clear, a complex tool like this demands more parameter-level detail.

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

Parameters2/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. However, it only refers generically to 'supplied attendees' without identifying which parameters (required_attendees or optional_attendees) map to which item. Other parameters like all_day, display, subject, location, and confirmed are not mentioned, leaving the agent unclear on how to set them correctly.

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 resource (Outlook calendar items) and the action (create), and explicitly lists two distinct outputs: a personal Out-of-Office blocker and a meeting notification. This is specific and distinguishes the tool from siblings like search_contacts or set_leave_defaults, which serve different purposes.

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 implies it is for leave review and emphasizes that nothing is sent and items are opened for manual review, which hints at when to use it. However, it does not explicitly state when not to use it or mention any alternative tools. While the context is helpful, it lacks explicit exclusions or comparisons to siblings.

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

get_leave_defaultsA

Return configurable defaults used by create_leave_calendar_blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The verb 'Return' implies a read-only operation, but the description does not disclose potential side effects, authentication requirements, or what happens if defaults are unset. Since there is no annotation coverage, a bit more context would be expected, but the simplicity of a zero-parameter getter tempers the impact.

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, front-loaded sentence that states the primary function and its relationship to another tool. Every phrase earns its place, with no filler or redundancy.

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?

Given the tool has no parameters, an output schema exists (so return values are structured), and the description clarifies its use in the workflow, nothing essential is missing. The agent can correctly invoke it based on the provided information.

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 zero parameters, so the description need not explain parameter meaning. Per the rubric, 0 params earns a baseline of 4, and the description does not need to compensate for any schema gaps. It adds no unnecessary parameter information.

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 states a specific verb ('Return') and resource ('configurable defaults'), and directly ties it to a sibling's purpose ('used by create_leave_calendar_blocks'). This clearly distinguishes it from set_leave_defaults (which modifies these defaults), so an agent can select it without ambiguity.

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?

The description clearly places the tool in the workflow by referencing create_leave_calendar_blocks, implying this is the getter to call before creating blocks. It does not explicitly mention the alternative set_leave_defaults, but the contrast is implicit and adequate for straightforward use.

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

infer_leave_recipientsB

Infer candidate leave-notification recipients/DLs from recent local Outlook email.

This is read-only. It scans recent mail subjects/bodies/recipients for distribution lists and department/team signals, then returns candidates for user confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
foldersNo
max_resultsNo
max_items_per_folderNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

The description explicitly states 'This is read-only,' which is a key behavioral disclosure. It also explains the process: scanning mail for distribution lists and department/team signals, then returning candidates for user confirmation. With no annotations provided, this is a meaningful disclosure, though it does not mention potential performance implications or fallback behavior when no candidates are found.

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 description is concise, with two short sentences that clearly state purpose and behavior. It front-loads the core purpose and then explains the read-only nature and process. It is not verbose, though it omits parameter information, which is a completeness trade-off rather than a conciseness issue.

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?

The tool has three parameters with no schema descriptions and no annotations, yet the description does not explain their semantics. While an output schema exists (which may describe return values), the input parameters are essential for invocation. The description is not complete for an agent to call the tool correctly without additional inference.

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

Parameters1/5

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

The schema provides no descriptions for the three parameters (folders, max_results, max_items_per_folder), and the description does not mention any of them. With schema description coverage at 0%, the description should have compensated but does not, leaving the agent without semantic understanding of how to use the parameters.

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 states a clear purpose: inferring candidate leave-notification recipients from recent Outlook email. It uses a specific verb ('infer') and resource ('recipients/DLs'), and the phrase 'candidate' and 'leave-notification' distinguish it from sibling tools like resolve_recipients and search_email.

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 (e.g., resolve_recipients, search_email). It does not mention any exclusions, prerequisites, or context where this tool is preferred, leaving the agent to infer usage from the purpose alone.

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

list_mail_foldersA

List Outlook store/folder paths to help choose the folder for search_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the action clearly (list paths) but adds no details about behavior such as whether folders are recursive, whether empty folders are omitted, or any authentication requirements. The behavior is simple and aligned with the name, so it's not misleading, but it's minimal.

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, front-loaded sentence that captures both the action and the purpose. There is no redundancy or extraneous text; every word contributes value.

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

Completeness3/5

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

The tool is simple (one optional param) and has an output schema (which handles return format), and the description covers usage context. However, the max_depth parameter is entirely undocumented, and with no annotations the description leaves behavioral details unspecified. The description is adequate but leaves a noticeable gap for parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the only parameter, max_depth. The parameter name is somewhat self-explanatory, but the description provides no guidance on what depth levels mean or how values influence results. Since schema coverage is low, the description should compensate but does not.

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 states a specific verb ('List') and resource ('Outlook store/folder paths'), and explicitly ties its purpose to choosing a folder for search_email. This differentiates it from all siblings, which address leave, contacts, or email search.

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?

The description indicates the tool is a precursor to search_email ('to help choose the `folder`'), giving clear context for when to use it. It doesn't explicitly exclude alternatives, but the sibling list contains no similarly scoped tool, so the usage intent is unambiguous.

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

resolve_recipientsB

Resolve names, emails, or distribution lists using Outlook's address book/GAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipientsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It states the primary function but does not reveal whether the operation is read-only, what the output format is, potential failure modes, or any side effects. The brief sentence offers no additional insight beyond the 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, focused sentence that front-loads the core purpose. There is no redundant information, making it appropriately concise and well-structured.

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?

Although there is an output schema (not provided), the description gives no information about return values, error handling, or prerequisites. For a tool without annotations, this level of detail is insufficient for an agent to reliably invoke it and interpret results correctly.

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

Parameters2/5

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

The schema has 0% description coverage for the single parameter 'recipients', and the description does not explicitly explain its expected format or content. While 'resolve names, emails, or distribution lists' implies the input can be these types, it does not clarify whether a string or array is acceptable, or how multiple recipients are handled.

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 action (resolve), the resource (names, emails, distribution lists), and the context (Outlook's address book/GAL). This distinguishes it from sibling tools like search_contacts, which likely searches for contacts rather than resolving them into canonical addresses.

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 implies a use case—resolving recipient identifiers against the GAL—but does not explicitly state when to prefer this over alternatives such as search_contacts or infer_leave_recipients. No exclusions or conditions are given, leaving the agent to infer the appropriate context.

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

search_contactsB

Search local Outlook contact folders by name, email, company, or job title.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
max_folders_depthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/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 only the search action and searchable fields, without disclosing whether the operation is read-only, side effects, authentication requirements, or edge cases like no results. This is a significant gap for a tool with zero 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 is a single, efficient sentence with the verb and resource front-loaded. There is zero waste, and every word contributes to the core purpose.

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 tool with three parameters (one required) and no annotations, the description is insufficient. It does not explain the optional parameters, return format expectations, or any usage nuances. Even with an output schema present, the description fails to provide enough context for an agent to use this tool effectively.

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

Parameters2/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. It explains the 'query' parameter by listing the fields it can match, but provides no detail on matching semantics (e.g., substring, exact). It completely omits 'max_results' and 'max_folders_depth', leaving their purpose ambiguous. The description adds partial value but fails to document two of three parameters.

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 action (search), the resource (local Outlook contact folders), and the specific fields (name, email, company, or job title). This distinguishes it from sibling tools like search_email, making the purpose unambiguous.

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 implies usage for finding contacts but does not explicitly state when to use it versus alternatives like search_email, nor does it mention any exclusions or prerequisites. The context is clear but lacks explicit routing guidance.

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

search_emailA

Search locally configured Outlook desktop email by subject and/or body.

This scans the newest max_items messages in folder and returns up to max_results matches. It uses the local Outlook profile via COM, not Microsoft Graph or Outlook Web APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
folderNoInbox
max_itemsNo
max_resultsNo
search_scopeNoall
include_body_previewNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/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. It reveals the scanning order (newest first), the iteration limits (max_items, max_results), and the local-only nature. It implies read-only behavior through the verb 'search' but does not explicitly state side effects or error handling, though these are less critical for a read operation. Overall, it provides substantial behavioral context beyond a bare statement.

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 three sentences, each earning its place: the first defines the function, the second adds essential scanning behavior, and the third clarifies the underlying API. No fluff or repetition, and the key information is front-loaded.

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 search tool with an output schema (so return format is covered), the description adequately covers the core behavior and parameter semantics. It omits minor details like default folder names or error conditions, but these are inferable from the schema. The local-only constraint is a valuable addition that the schema cannot convey, making it largely complete.

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 must compensate. It explains query scope via 'subject and/or body' (mapping to search_scope), and explains max_items and max_results as iteration/result limits. It also mentions folder implicitly. It does not explicit define include_body_preview or the query parameter details, but the core semantics are covered clearly despite the schema's lack of descriptions.

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 tool searches locally configured Outlook desktop email by subject and/or body, which is specific and distinguishes it from sibling tools like search_contacts. It also details the scanning behavior (newest max_items messages) and result limit, making the purpose unambiguous.

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?

The description provides clear context that this uses the local Outlook profile via COM, not cloud APIs, implying when it is appropriate (local only). It does not explicitly name alternatives or exclusions, but the resource and scope make it obvious that this is for email search, not contacts or folder management. A minor gap in explicit 'use this vs that' guidance.

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

set_leave_defaultsB

Persist leave-calendar defaults. Requires confirmed=true because this writes config.

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectNoAmirul: On-Leave
confirmedNo
notification_attendeesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It does disclose that the tool writes config and that confirmed must be true for the write to happen. This is useful but minimal; it does not mention potential side effects, irreversible changes, permissions required, or return value behavior. With no annotations, this is a moderate disclosure.

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 two concise sentences that pack a clear purpose and a key requirement with no filler. It front-loads the main action, then adds the prerequisite. Every sentence earns its place, making it highly efficient.

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 three parameters (one required) and no schema descriptions, the description is too thin. It does not explain what 'notification_attendees' or 'subject' mean, nor does it describe any scenarios or expected outcomes beyond 'persist defaults'. Even though an output schema exists, the description leaves the agent with insufficient context to know what values to provide and why. It needs to elaborate on parameter semantics and usage 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 schema description coverage is 0%, so the description must compensate. It does provide context for the 'confirmed' parameter by stating it must be true and why, adding meaning beyond the boolean type. However, it gives no explanation for 'subject' or 'notification_attendees', which are otherwise undocumented. This is partial coverage, not enough to fully compensate for the lack of schema descriptions.

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 'Persist leave-calendar defaults', which conveys a specific verb and resource. It explicitly notes that it writes config, which distinguishes it from reading operations like get_leave_defaults. However, it does not name any sibling tool or contrast itself beyond that, so it stops short of a full 5.

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 a concrete usage requirement: 'Requires confirmed=true', which tells the agent that this parameter must be set. It also explains why (because it writes config), which implies the tool is for writing default settings rather than reading. However, it does not explicitly mention alternatives or when NOT to use this tool, leaving some ambiguity about selection among siblings.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedcreate_leave_calendar_blocks
    • First observedget_leave_defaults
    • First observedinfer_leave_recipients
    • First observedlist_mail_folders
    • First observedresolve_recipients
    • First observedsearch_contacts
    • First observedsearch_email
    • First observedset_leave_defaults

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Tools are mostly distinct, but three recipient-related tools (resolve_recipients, search_contacts, infer_leave_recipients) could cause some confusion regarding when to use each. However, their descriptions clearly differentiate (address book resolution vs. contact folder search vs. historical email inference), and the other tools are unambiguous.

Naming Consistency5/5

All tool names follow a strict verb_noun snake_case pattern (e.g., get_leave_defaults, search_email, create_leave_calendar_blocks). The pattern is predictable and consistent across all 8 tools, making it easy for an agent to infer naming conventions for hypothetical tools.

Tool Count5/5

With 8 tools, the server is well-scoped for its domain of Outlook leave management and search. Each tool serves a distinct function in a cohesive workflow, and the count is within the ideal range without being overwhelming or sparse.

Completeness4/5

The tool surface covers the core leave workflow: configuration, calendar block creation, recipient inference/resolution, and search capabilities. Minor gaps exist—such as no update/delete for leave calendar blocks—but these are unsent drafts intended for manual review, so the current surface seems sufficient for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to read, send, and manage Outlook mail locally on Windows via COM/MAPI, without cloud APIs.
    86 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Reads and searches your local Microsoft Outlook desktop mailbox via COM, supporting folder listing, message/thread retrieval, attachment saving, bulk export, and draft creation without sending, requiring no OAuth or admin consent.
    -