Skip to main content
Glama

get_profile

Read-onlyIdempotent

Check if a phone number is registered on Signal and retrieve its account UUID; profile name and about fields are not included.

Instructions

Check one phone number against Signal's servers and return what that lookup provides. number (required, E.164). Returns a contact object whose number and uuid (the Signal account id; null if the number is not registered) are filled; the lookup carries no profile data, so name, given_name, family_name and about come back null. For a contact's profile name and about text use find_contact or list_contacts with all_recipients=true; for their photo use get_avatar; to check many numbers at once use get_user_status. To change your own profile use update_profile.

Input Schema

NameRequiredDescriptionDefault
numberYesPhone number in E.164 format

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description goes well beyond them: it discloses that the lookup carries no profile data, that name/given_name/family_name/about always return null, and that uuid is null when the number is unregistered. That is exactly the non-obvious behavior an agent needs to avoid misinterpreting the response.

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 short sentences, each earning its place: purpose and return shape first, then a single routing sentence covering four alternatives. Zero filler and the most decision-relevant fact (null profile fields) is front-loaded.

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?

No output schema exists, so the description carries the return contract itself — contact object with number/uuid, null uuid for unregistered numbers, and null profile fields — plus a full routing map to alternatives. Nothing an agent needs to call this correctly is missing.

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% and the single parameter is already documented as E.164 in the schema; the description merely restates '(required, E.164)'. With the schema doing the work and only one param, baseline 3 is appropriate — no additional format or edge-case semantics are added.

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 (check) and resource (one phone number against Signal's servers) and immediately clarifies the scope: a lookup, not a profile fetch. It explicitly distinguishes itself from find_contact/list_contacts/get_avatar/get_user_status, so an agent can pick correctly 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 Guidelines5/5

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

Names four concrete alternatives with the exact condition that selects each: find_contact or list_contacts with all_recipients=true for profile name/about, get_avatar for photos, get_user_status for bulk checks, update_profile for editing your own profile. Explicit when-to-use and when-not-to-use routing.

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