Skip to main content
Glama
mpalermiti

outlook-mcp

by mpalermiti

outlook_update_draft

Update an existing Outlook draft by patching selected fields such as recipients, subject, body, Reply-To, or scheduled send time. Use it to revise drafts without recreating them.

Instructions

Update an existing draft (partial patch).

Pass is_html=True when body is HTML — required when overwriting a draft originally composed as HTML (consumer Outlook rejects Text-over-HTML PATCH). Pass reply_to=[...] to overwrite Reply-To; reply_to=[] to clear it. Pass deferred_send_datetime (ISO 8601) to set the scheduled-send time; empty string clears it.

Input Schema

NameRequiredDescriptionDefault
ccNo
toNo
bodyNo
is_htmlNo
subjectNo
draft_idYes
reply_toNo
is_markdownNo
deferred_send_datetimeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed31 schema fields changedv1.30.2
    • removedInput schema / properties / body / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / body / default
      Removed value: -null
    • removedInput schema / properties / body / title
      Removed value: -"Body"
    • addedInput schema / properties / body / type
      Added value: +"string"
    • removedInput schema / properties / cc / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / cc / default
      Removed value: -null
    • addedInput schema / properties / cc / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / cc / title
      Removed value: -"Cc"
    • addedInput schema / properties / cc / type
      Added value: +"array"
    • removedInput schema / properties / deferred_send_datetime / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / deferred_send_datetime / default
      Removed value: -null
    • removedInput schema / properties / deferred_send_datetime / title
      Removed value: -"Deferred Send Datetime"
    • addedInput schema / properties / deferred_send_datetime / type
      Added value: +"string"
    • removedInput schema / properties / draft_id / title
      Removed value: -"Draft Id"
    • removedInput schema / properties / is_html / title
      Removed value: -"Is Html"
    • removedInput schema / properties / is_markdown / title
      Removed value: -"Is Markdown"
    • removedInput schema / properties / reply_to / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / reply_to / default
      Removed value: -null
    • addedInput schema / properties / reply_to / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / reply_to / title
      Removed value: -"Reply To"
    • addedInput schema / properties / reply_to / type
      Added value: +"array"
    • removedInput schema / properties / subject / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / subject / default
      Removed value: -null
    • removedInput schema / properties / subject / title
      Removed value: -"Subject"
    • addedInput schema / properties / subject / type
      Added value: +"string"
    • removedInput schema / properties / to / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / to / default
      Removed value: -null
    • addedInput schema / properties / to / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / to / title
      Removed value: -"To"
    • addedInput schema / properties / to / type
      Added value: +"array"
    • removedInput schema / title
      Removed value: -"outlook_update_draftArguments"
  2. Changed1 schema field changedv1.28.0
    • addedInput schema / properties / is_markdown
      Added value: +{
      +  "default": false,
      +  "title": "Is Markdown",
      +  "type": "boolean"
      +}
  3. First observedv1.11.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the bar is lower, and the description still adds real behavioral value: it discloses the consumer-Outlook constraint that a Text-over-HTML PATCH is rejected, and it explains how to clear fields (reply_to=[], empty string). It does not say what the response contains or whether the draft id changes, but the operational gotchas are well surfaced.

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?

Front-loaded with the core purpose, then a short set of parameter-specific lines, each of which adds a distinct rule. No filler, though it reads as a parameter cheat-sheet rather than a fully organized overview.

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?

For a 9-parameter mutation tool with 0% schema coverage and no output schema, the description covers the trickiest parameters but leaves the recipient/subject fields and especially is_markdown undocumented, and never describes the return value. Adequate to call correctly in the common case, incomplete for the full surface.

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 0%, so the description must carry parameter meaning, and it does explain is_html, reply_to, and deferred_send_datetime semantics including clearing behavior. However, six parameters (body, to, cc, subject, draft_id, is_markdown) get no mention, and the is_html/is_markdown interaction is left undefined, so compensation is only partial.

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?

States a specific verb and resource ('Update an existing draft') plus the key modifier '(partial patch)', which tells an agent this is a merge rather than a replace. It does not explicitly name the sibling draft tools (create_draft, send_draft, delete_draft) it contrasts with, but the verb+resource is 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 '(partial patch)' phrasing implies only supplied fields are changed, which is useful usage context, but there is no explicit when-to-use vs. alternatives guidance (e.g., use create_draft for new drafts, send_draft to dispatch). Usage is inferable from the name rather than stated.

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