Skip to main content
Glama
tinobruno

Teams Puppeteer MCP Server

by tinobruno

get_last_message

Fetch the last message from any Teams contact, group, or channel using a partial name, returning the author, timestamp, and text.

Instructions

PRIMARY TOOL to read the single latest message from a specific person, group, or channel in Teams. Supports partial names (e.g. 'Alice Smith', 'Bob', 'Project Alpha'). Automatically matches the chat and returns only the author, timestamp, and text. NEVER call list_teams_chats first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chat_nameYesName or partial name of the contact, group, or channel in Teams (e.g. 'Alice Smith', 'John Doe', 'Project Alpha').

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool 'reads' (non-mutating), automatically matches the chat, and returns only author, timestamp, and text. However, it omits any mention of error conditions, ambiguous-name behavior, permission requirements, or whether reading the message marks it as read (relevant given the sibling get_last_unread_message). This is adequate but not rich.

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 two sentences: the first establishes purpose and capability, the second states the return content. The warning 'NEVER call list_teams_chats first' is emphatic and placed at the end, making it memorable. There is no redundancy or filler; every sentence earns its place.

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 simple, one-parameter read tool with no output schema and no annotations, the description covers the essential context: what it does, what it returns (author, timestamp, text), and a critical workflow warning. It does not address edge cases like 'no message found' or ambiguous matches, but that is a minor gap for a tool of this simplicity.

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 100% for the single parameter chat_name, which already states 'Name or partial name.' The description repeats the partial-name capability and adds that it 'automatically matches the chat,' but that is more behavioral than parameter semantics. No meaningful new parameter-level meaning is added beyond the schema, so the baseline of 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?

The description states a specific verb ('read'), resource ('the single latest message'), and scope ('from a specific person, group, or channel in Teams'). It clearly differentiates from siblings like get_last_messages by emphasizing 'single' and from get_last_unread_message by not mentioning unread. The phrase 'PRIMARY TOOL' also signals its intended place among the alternatives.

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 explicitly frames itself as the 'PRIMARY TOOL' for this task and gives a direct exclusion: 'NEVER call list_teams_chats first.' This is clear guidance on when to use the tool and when not to use a sibling. However, it does not discuss when to prefer get_last_unread_message or get_last_messages, so the guidance is good but not fully comprehensive.

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