Skip to main content
Glama
mpalermiti

outlook-mcp

by mpalermiti

outlook_create_contact

Create a new Outlook contact with a name and optional email, phone, company, job title, birthday, and categories.

Instructions

Create a new contact with name and optional email, phone, company, job_title, birthday (YYYY-MM-DD).

title is the name prefix ("Dr.", "Ms."), shown in the display name — not the job. phone_type: "mobile", "business" or "home".

Input Schema

NameRequiredDescriptionDefault
emailNo
phoneNo
titleNo
companyNo
birthdayNo
job_titleNo
last_nameNo
categoriesNo
first_nameYes
phone_typeNomobile
middle_nameNo
personal_notesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed44 schema fields changedv1.30.2
    • 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"
    • 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 / 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 / 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 / title
      Removed value: -"First Name"
    • 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"
    • 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 / 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_create_contactArguments"
  2. Changed6 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 / 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"
      +}
  3. First observedv1.11.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/safety profile is covered. The description adds genuine disambiguation value ("title ... is not the job"), but says nothing about duplicate handling, required permissions, or what happens on partial input.

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?

Two tight sentences, front-loaded with the operation before the field clarifications. The parenthetical and the title/phone_type notes each earn their place, though slightly telegraphic phrasing pushes it just shy of a 5.

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?

With 12 zero-documented parameters and no output schema, a complete definition would have to explain the undocumented fields or at least the creation result. Given the moderate complexity, the current coverage is adequate but with clear gaps.

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 coverage is 0% across 12 parameters, so the description must compensate. It clarifies birthday format (YYYY-MM-DD), the title-vs-job_title trap and phone_type values, but leaves categories, middle_name, last_name, personal_notes and default phone_type semantics (only the default value is given) undocumented.

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 opens with a specific verb and resource ("Create a new contact"), then enumerates the addressable fields, so an agent can tell it apart from outlook_update_contact or outlook_delete_contact without opening the schema.

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

Usage Guidelines3/5

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

The create semantics are self-evident, but the description never says when to reach for this versus outlook_update_contact (e.g. contact already exists) or whether duplicates are checked. Usage is only implied by the verb.

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