Skip to main content
Glama
mpalermiti

outlook-mcp

by mpalermiti

outlook_update_contact

Update an existing Outlook contact with a partial patch so only provided fields change and all other details remain unchanged.

Instructions

Update an existing contact (partial patch — only provided fields change).

An address takes the shape outlook_get_contact returns — any subset of {"street", "city", "state", "postal_code", "country_or_region"} — and REPLACES that whole address, so pass back every part you want to keep. Omit it to leave it untouched. phone_type ("mobile", "business", "home") picks the field; business/home REPLACE that list. clear_phones empties those types: phone_type="business", clear_phones=["mobile"] moves it. title is the name prefix ("Dr.", "Ms."), shown in the display name — not the job. birthday is a date, YYYY-MM-DD. categories REPLACES the whole list ([] clears it). email REPLACES every address; add_emails/remove_emails change only those (3 at most).

Input Schema

NameRequiredDescriptionDefault
emailNo
phoneNo
titleNo
companyNo
birthdayNo
job_titleNo
last_nameNo
add_emailsNo
categoriesNo
contact_idYes
first_nameNo
phone_typeNomobile
middle_nameNo
clear_phonesNo
home_addressNo
other_addressNo
remove_emailsNo
personal_notesNo
business_addressNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed78 schema fields changedv1.30.2
    • removedInput schema / properties / add_emails / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / add_emails / default
      Removed value: -null
    • addedInput schema / properties / add_emails / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / add_emails / title
      Removed value: -"Add Emails"
    • addedInput schema / properties / add_emails / type
      Added value: +"array"
    • removedInput schema / properties / birthday / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / birthday / default
      Removed value: -null
    • removedInput schema / properties / birthday / title
      Removed value: -"Birthday"
    • addedInput schema / properties / birthday / type
      Added value: +"string"
    • addedInput schema / properties / business_address / additionalProperties
      Added value: +true
    • removedInput schema / properties / business_address / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / business_address / default
      Removed value: -null
    • removedInput schema / properties / business_address / title
      Removed value: -"Business Address"
    • addedInput schema / properties / business_address / type
      Added value: +"object"
    • removedInput schema / properties / categories / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / categories / default
      Removed value: -null
    • addedInput schema / properties / categories / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / categories / title
      Removed value: -"Categories"
    • addedInput schema / properties / categories / type
      Added value: +"array"
    • removedInput schema / properties / clear_phones / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / clear_phones / default
      Removed value: -null
    • addedInput schema / properties / clear_phones / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / clear_phones / title
      Removed value: -"Clear Phones"
    • addedInput schema / properties / clear_phones / type
      Added value: +"array"
    • removedInput schema / properties / company / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / company / default
      Removed value: -null
    • removedInput schema / properties / company / title
      Removed value: -"Company"
    • addedInput schema / properties / company / type
      Added value: +"string"
    • removedInput schema / properties / contact_id / title
      Removed value: -"Contact Id"
    • removedInput schema / properties / email / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / email / default
      Removed value: -null
    • removedInput schema / properties / email / title
      Removed value: -"Email"
    • addedInput schema / properties / email / type
      Added value: +"string"
    • removedInput schema / properties / first_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / first_name / default
      Removed value: -null
    • removedInput schema / properties / first_name / title
      Removed value: -"First Name"
    • addedInput schema / properties / first_name / type
      Added value: +"string"
    • addedInput schema / properties / home_address / additionalProperties
      Added value: +true
    • removedInput schema / properties / home_address / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / home_address / default
      Removed value: -null
    • removedInput schema / properties / home_address / title
      Removed value: -"Home Address"
    • addedInput schema / properties / home_address / type
      Added value: +"object"
    • removedInput schema / properties / job_title / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / job_title / default
      Removed value: -null
    • removedInput schema / properties / job_title / title
      Removed value: -"Job Title"
    • addedInput schema / properties / job_title / type
      Added value: +"string"
    • removedInput schema / properties / last_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / last_name / default
      Removed value: -null
    • removedInput schema / properties / last_name / title
      Removed value: -"Last Name"
    • addedInput schema / properties / last_name / type
      Added value: +"string"
    • removedInput schema / properties / middle_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / middle_name / default
      Removed value: -null
    • removedInput schema / properties / middle_name / title
      Removed value: -"Middle Name"
    • addedInput schema / properties / middle_name / type
      Added value: +"string"
    • addedInput schema / properties / other_address / additionalProperties
      Added value: +true
    • removedInput schema / properties / other_address / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / other_address / default
      Removed value: -null
    • removedInput schema / properties / other_address / title
      Removed value: -"Other Address"
    • addedInput schema / properties / other_address / type
      Added value: +"object"
    • removedInput schema / properties / personal_notes / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / personal_notes / default
      Removed value: -null
    • removedInput schema / properties / personal_notes / title
      Removed value: -"Personal Notes"
    • addedInput schema / properties / personal_notes / type
      Added value: +"string"
    • removedInput schema / properties / phone / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / phone / default
      Removed value: -null
    • removedInput schema / properties / phone / title
      Removed value: -"Phone"
    • addedInput schema / properties / phone / type
      Added value: +"string"
    • removedInput schema / properties / phone_type / title
      Removed value: -"Phone Type"
    • removedInput schema / properties / remove_emails / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / remove_emails / default
      Removed value: -null
    • addedInput schema / properties / remove_emails / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / remove_emails / title
      Removed value: -"Remove Emails"
    • addedInput schema / properties / remove_emails / type
      Added value: +"array"
    • removedInput schema / properties / title / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / title / default
      Removed value: -null
    • removedInput schema / properties / title / title
      Removed value: -"Title"
    • addedInput schema / properties / title / type
      Added value: +"string"
    • removedInput schema / title
      Removed value: -"outlook_update_contactArguments"
  2. Changed2 schema fields changedv1.28.0
    • addedInput schema / properties / add_emails
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Add Emails"
      +}
    • addedInput schema / properties / remove_emails
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Remove Emails"
      +}
  3. Changed9 schema fields changedv1.26.0
    • addedInput schema / properties / birthday
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Birthday"
      +}
    • addedInput schema / properties / categories
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Categories"
      +}
    • addedInput schema / properties / clear_phones
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Clear Phones"
      +}
    • addedInput schema / properties / company
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Company"
      +}
    • addedInput schema / properties / job_title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Job Title"
      +}
    • addedInput schema / properties / middle_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Middle Name"
      +}
    • addedInput schema / properties / personal_notes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Personal Notes"
      +}
    • addedInput schema / properties / phone_type
      Added value: +{
      +  "default": "mobile",
      +  "title": "Phone Type",
      +  "type": "string"
      +}
    • addedInput schema / properties / title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Title"
      +}
  4. Changed3 schema fields changedv1.22.1
    • addedInput schema / properties / business_address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Business Address"
      +}
    • addedInput schema / properties / home_address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Home Address"
      +}
    • addedInput schema / properties / other_address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Other Address"
      +}
  5. First observedv1.11.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly=false and destructiveHint=false, and the description adds substantial behavioral nuance: address replacement, list replacement/clearing, phone-type moves, and email add/remove limits. It does not cover permissions, error behavior, or the return shape, but it is strong for an update tool.

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 dense but front-loaded and each sentence earns its place by explaining a specific field behavior or replacement rule. There is no filler, and the partial-patch constraint is stated before the detailed parameter rules.

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 19-parameter mutation tool with no output schema, the description covers the tricky mutation semantics and data-loss risks well. It is not fully exhaustive across every parameter and does not describe return behavior, but it is complete enough to invoke the tool safely.

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 carry the load. It does this well for the non-obvious and high-risk parameters: address shape and replacement, phone_type/clear_phones behavior, title-vs-job_title, birthday format, and categories/email replacement semantics. It leaves several simple fields (first_name, last_name, company, personal_notes) unexplained, but those are largely self-evident.

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?

States a specific verb and resource ("Update an existing contact") plus the important scope ("partial patch — only provided fields change"). This clearly distinguishes it from create_contact without needing 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 Guidelines4/5

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

The context is clear: use this to update an already-existing contact, and only provided fields change. It does not explicitly say when not to use it or route the agent to get_contact/create_contact for related tasks, so it falls short of a 5.

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