Skip to main content
Glama

Microsoft 365 Update Contact

m365_update_contact
Destructive

Use this when the user wants to change a contact of their Microsoft 365 / Outlook contacts: only the fields given change (emails and phones replace the whole list). Get the id from m365_list_contacts or m365_search_contacts. Needs the account connected with scopes_for: ["contacts"].

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "m365_update_contact"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesContact ID from m365_list_contacts or m365_search_contacts
nameNoThe name shown for the contact (default: first and last name).
notesNoNotes.
titleNoJob title.
emailsNoUp to 3 e-mail addresses; replaces the contact's list.
mobileNoMobile phone.
phonesNoUp to 2 business phones; replaces the contact's list.
accountNoWhich connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.
companyNoCompany.
confirmNoIgnored; kept for older clients.
surnameNoLast name.
given_nameNoFirst name.

Output Schema

NameRequiredDescriptionDefault
nameNo
fieldsNo
statusYes
accountNoThe email (UPN) of the Microsoft 365 account this call used.
contactNo
messageNo
updatedYes
previousNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior: partial-update semantics ('only the fields given change') and the destructive nuance that emails and phones replace the whole list, plus the required 'contacts' OAuth scope for the connected account. It does not cover error behavior for a bad id, which keeps it off a 5.

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?

Three tight sentences: trigger condition first, then the partial-update rule, then where to get the id, then the auth prerequisite. No filler and no repetition beyond what is needed for emphasis.

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?

With 12 parameters but a fully described schema and an output schema present, the description only needs to supply trigger, mutation semantics, id provenance, and auth. It covers all four, so an agent has everything required to call it correctly.

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 every parameter including id, account, and the list-replacement semantics of emails/phones is already documented in the schema. The description restates the replacement behavior and the id source rather than adding new meaning beyond the structured fields, which is the baseline 3 case.

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 concrete verb and resource ('change a contact of their Microsoft 365 / Outlook contacts') and implicitly contrasts with the create tool by framing the action as modification of an existing contact. An agent can distinguish it from m365_create_contact, m365_get_contact, and the list/search siblings without opening any 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?

It gives clear when-to-use framing ('when the user wants to change a contact') and explicitly routes the agent to m365_list_contacts or m365_search_contacts to obtain the required id. It does not state exclusions, e.g. that new contacts should go to m365_create_contact, so it stops short of full when/when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources