Skip to main content
Glama

A2UI Atomic Catalog

whoami

Read-onlyIdempotent

Report who this connection is authenticated as. Answers two SEPARATE questions that are easy to conflate: which APPLICATION is connected (the OAuth client), and which HUMAN authorised it (the signed-in account, when the endpoint is one that can know). The public endpoint is anonymous by design and will say so — that is not an error, it is the free tier. Use it to check whether per-user features (saved profile, reading history) are available before offering them.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "whoami"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
noteYesWhat this identity can do.
userNoThe signed-in user {sub, email}, or null.
endpointYes"public" or "authenticated".
applicationNoOAuth client id, or null when anonymous.
authenticatedYesTrue on the authenticated endpoint.
per_user_featuresYesTrue when a human is attributable.

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 and closed-world, so the safety profile is covered. The description adds something annotations cannot: on the public endpoint the result is anonymous by design and that is not an error, which prevents a caller from misreading a null human identity as a failure. It does not discuss auth mechanics or limits, but that gap is minor here.

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 core answer, then a disambiguation, then a usage cue — a sensible order with no filler sentences. The capitalized SEPARATE and the em-dash aside are slightly emphatic for the amount of content, but nothing is genuinely wasted.

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?

The tool is simple (no params), annotations carry the safety profile, and an output schema exists so return values need no explanation. What remains — telling the agent that the answer has two parts and that anonymity is a legitimate result — is exactly what the description covers.

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?

There are zero input parameters, so the baseline applies and there is nothing for the description to disambiguate. It correctly spends no words on parameters.

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 first sentence gives a specific verb and resource: report what this connection is authenticated as. The description then splits that into two distinct questions (OAuth application vs. signed-in human), which is precisely the confusion a caller would otherwise have, and no sibling tool covers that ground.

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 states a concrete use case: check whether per-user features (saved profile, reading history) are available before offering them, which implicitly routes the caller to whoami before get_profile or list_readings. It stops short of naming a sibling or saying explicitly 'this does not return profile data — use get_profile for that', so the routing is inferred rather than stated.

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.