Skip to main content
Glama

Turbo Notify: WhatsApp for AI agents

Get one contact

get_contact
Read-onlyIdempotent

Fetch one contact: name, phone number and activity timestamps.

first_messaged_at is when a message from this number first reached them on WhatsApp, and last_interaction_at is the last message that passed in EITHER direction, so it moves when they write to you as well. A message that failed before reaching WhatsApp moves neither.

refresh shows the last refresh_contact you asked for: when it was requested, when it finished, and its outcome (updated, unchanged, number_not_connected or unavailable). While completed_at is null it is still running.

The id must belong to the inbox named by number_alias. An id from a different number returns not found even though the person exists.

Input Schema

NameRequiredDescriptionDefault
contact_idYesContact id (`ct_…`), from `list_contacts`.
number_aliasNoWhich of the organization's WhatsApp numbers this acts on: `main`, the alias of an extra number, or the number's `id` (`num_…`), which stays the same when the alias is renamed. Call `list_numbers` to see them. Defaults to the main number.main

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavior: failed messages move neither timestamp, and a cross-inbox id yields not-found despite the person existing. It stops short of describing response shape or rate/permission characteristics, but the semantic edge cases disclosed are substantial.

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?

Purpose is front-loaded in the first clause and the paragraphs are thematically split (timestamps, refresh block, scoping). It runs long and the `refresh`/outcome enumeration overlaps with what an output schema likely already conveys, costing a little tightness.

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 two-parameter read with a full schema and an output schema, this covers everything an agent needs: what is returned, how timestamps behave, what the refresh block means, and the inbox-scoping failure mode. Nothing material is missing.

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 baseline is 3, but the description adds meaning the schema does not: `number_alias` acts as an inbox scope that makes otherwise-valid ids resolve to not-found. That is genuine semantic value beyond the parameter's own text.

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?

Opens with a specific verb and resource ('Fetch one contact') plus the returned fields, which cleanly separates it from list_contacts and the picture/quota siblings. An agent can tell immediately this is the single-record read.

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?

Clear operational context is given: the id must belong to the inbox named by `number_alias`, and a cross-number id returns not found. It also implicitly routes to `refresh_contact` by explaining what the `refresh` block reports, but it never explicitly says when to prefer this over list_contacts or get_contact_profile_picture.

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.