Skip to main content
Glama
hail-hq

hail

Official

Who am I

whoami
Read-onlyIdempotent

Identify the human whose credentials this session runs under.

Instructions

Identify the human whose credentials this session runs under.

    Use it to sign or route mail as that person: pass their address as
    ``send_email(reply_to=...)`` so replies reach them rather than the
    sending domain, which is often an unattended ``noreply@``.

    Returns ``{"auth_kind", "organization_id", "user_id", "email",
    "name"}``. ``user_id``/``email``/``name`` are null when the server
    runs on a shared operator key (``auth_kind="shared"``) — there is no
    human behind it, so send without a ``reply_to``.

    Example:
        whoami()
    

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.29.0

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing that user_id/email/name can be null when auth_kind="shared", which changes what the caller should do next. The nuance is genuinely useful; only minor gaps remain (no note on failure modes if credentials are invalid).

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?

Front-loaded with the one-line purpose, then use case, then return contract. The trailing 'Example: whoami()' adds nothing for a zero-argument tool and could be cut.

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?

Even though an output schema exists, the description adds interpretation the schema cannot carry: what auth_kind="shared" means and how to adapt behavior. For a no-param identity tool this is everything an agent needs.

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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It spends its words on return semantics instead, which is the correct allocation.

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 (identify) and precise resource (the human behind the session credentials), which no sibling tool duplicates. An agent can tell immediately this is an identity/introspection call, not a data fetch.

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?

Gives an explicit downstream use (pass the address as send_email(reply_to=...) so replies reach a human) and an explicit when-not path: under auth_kind="shared" there is no human, so send without reply_to. Both the use case and the exclusion are spelled out.

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