Skip to main content
Glama

m365_contacts_read

Read-onlyIdempotent

Read a saved Outlook contact by ID and return its complete Graph contact record. Get the ID from contact list or search and pass the same folder location.

Instructions

Read a saved Outlook contact by its contact ID, returning its complete Graph contact record. Use m365_contacts_list or m365_contacts_search to obtain the ID and pass the same folder location. Directory user IDs and People API person IDs are not contact IDs; use m365_users_profile for directory profiles.

Input Schema

NameRequiredDescriptionDefault
folderIdNoOptional contact folder ID; omit for the default Contacts folder
contactIdYesSaved contact ID from m365_contacts_list or m365_contacts_search, not a directory or People API ID
parentFolderIdNoParent folder ID when folderId identifies a direct child folder

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.1
    • addedInput schema / properties / contactId / description
      Added value: +"Saved contact ID from m365_contacts_list or m365_contacts_search, not a directory or People API ID"
  2. First observedv1.0.7

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real context: the full Graph record is returned and the folder context must match the one used to fetch the ID. It does not say what happens when the ID/folder combination is wrong (error vs empty), which keeps it below 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, front-loaded with the action and return value, followed by ID acquisition and ID-type exclusions. Nothing is redundant with the schema.

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?

With no output schema, the description compensates by stating the tool returns the complete Graph contact record, and it covers the ID provenance and folder scoping needed to call it correctly. Only failure behavior for a bad ID or mismatched folder is left unstated.

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 coverage is 100%, so the baseline is 3, but the description goes further by tying folderId to the folder used to obtain the ID and by warning that contactId is not a directory or People API ID. It does not explain parentFolderId, which the schema alone carries.

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 ('Read a saved Outlook contact by its contact ID') plus the return shape ('complete Graph contact record'). It also separates itself from m365_contacts_list, m365_contacts_search and m365_users_profile by naming the ID types that do not apply.

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

Usage Guidelines5/5

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

Explicitly routes the agent: obtain the ID via m365_contacts_list or m365_contacts_search, and pass the same folder location. It also names an exclusion — directory user IDs and People API person IDs are not valid here, use m365_users_profile instead.

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