Skip to main content
Glama

Get a contact

contacts_get
Read-onlyIdempotent

Returns a personal contact by Outlook item id, including names, company, job title, department, emails, phones, addresses, birthday, categories, and timestamps. Empty fields are omitted; invalid/deleted contacts return 404.

Instructions

Returns one personal contact by id, with names, company, job title, department, every email address, phone numbers, postal addresses, birthday, categories and timestamps. Personal notes are truncated to 1000 characters. Properties Graph reports as empty are omitted, so a missing key means the field is not set. An id from a different mailbox or a deleted contact fails with 404 ErrorItemNotFound.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe contact id, as returned by contacts_list or contacts_search. This is the long opaque Outlook item id, not an email address or display name.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context: personal notes are truncated to 1000 characters, empty properties are omitted, a missing key means the field is not set, and wrong-mailbox/deleted ids fail with 404 ErrorItemNotFound. No contradiction with annotations.

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?

Four sentences, each earning its place: return-field list, truncation behavior, omission semantics, and failure mode. The core purpose is front-loaded, and there is no filler or repetition of annotations.

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?

For a one-parameter, read-only getter with no output schema, the description covers the returned fields, important data-shaping behavior, and error semantics. An agent has enough information to invoke the tool and interpret its response 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?

The input schema has 100% description coverage for the single id parameter, including its source and what it is not. The description only restates that the operation is by id and adds no additional parameter-level meaning beyond the schema, so the baseline 3 applies.

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 ('Returns') and resource ('one personal contact by id'), and enumerates the exact fields returned. This clearly distinguishes it from collection-returning siblings like contacts_list and contacts_search and from mutating siblings like contacts_create or contacts_delete.

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 description and parameter schema imply that the agent must already have an opaque contact id from contacts_list or contacts_search, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. The usage context is implied rather than stated.

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