Skip to main content
Glama

identity

Resolve which agent this MCP session is bound to, or set a cosmetic display name for that agent without changing its ID.

Instructions

Resolve which agent this MCP session is bound to, or set a cosmetic display name. Not a plain read: a call carrying no proof argument at all is gated to a fresh mint, so it persists a new agent and reports on that one, marked caller_proven=false. A call carrying only a cosmetic name= skips that gate and can instead infer a co-located binding — pass client_session_id to get your own back. name= persists a cosmetic label only and never looks an agent up. For a fresh process call onboard(force_new=true). continuity_token is per-process ownership proof, not a transport-level claim: carrying it into another process re-opens silent resurrection.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoOptional COSMETIC display name; sets display_name only, never `agent_id` or `uuid`. Thread `uuid` across tools, not this.
resumeNoExplicitly resume existing identity
agent_idNoUUID; leave unset for yourself.
force_newNoForce new identity creation
agent_uuidNoResume a known identity by UUID directly. Skips session/name resolution. Returns error if not found.
model_typeNoOptional model type for distinct identity
continuity_tokenNoSame-process rebind proof only; never a cross-process resume.
client_session_idNoBinding id for calls in this process; not a cross-process proof.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv3.1.0
    • changedInput schema / description
      Previous value: -"Who am I? Auto-creates identity if first call."New value: +"Resolve this session's bound agent (pass client_session_id), or set a cosmetic display name."
    • changedInput schema / properties / agent_id / description
      Previous value: -"UNIQUE agent identifier; optional when session-bound (auto-injected)."New value: +"UUID; leave unset for yourself."
    • changedInput schema / properties / client_session_id / description
      Previous value: -"In-session binding id from start_session()/identity(); pass it on same-process calls. Not a cross-process proof."New value: +"Binding id for calls in this process; not a cross-process proof."
    • changedInput schema / properties / continuity_token / description
      Previous value: -"Ownership proof from onboard()/identity(), for same-live-process rebinds only. Not a cross-process resume credential."New value: +"Same-process rebind proof only; never a cross-process resume."
  2. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it explains the side effect that justifies readOnlyHint=false ('Not a plain read… persists a new agent and reports on that one, marked caller_proven=false'), warns that a cosmetic name never looks an agent up, and clarifies continuity_token is per-process proof whose cross-process use 're-opens silent resurrection'. This is exactly the non-obvious behavior an agent needs. No contradiction with the provided hints.

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 sentence, and nearly every clause carries distinct behavioral information. It is a dense single block, though, with compressed jargon ('silent resurrection', 'co-located binding') that costs readability for an 8-parameter dual-mode tool.

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 complex identity tool with 8 optional params and no output schema, the description covers the hard parts — minting gate, cosmetic vs. identity fields, ownership-proof token, and a hint at the reported marker (caller_proven=false). It omits guidance on resume/model_type/agent_uuid and any return-shape detail, but those are largely covered by the 100%-covered schema.

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 description coverage is 100%, so the baseline is 3, but the description adds cross-parameter interaction semantics the schema does not carry: the gating rule keyed on presence/absence of proof arguments, and the note that name= is cosmetic and thread-safe guidance ('Thread uuid across tools, not this'). That is genuine value above the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific dual purpose: 'Resolve which agent this MCP session is bound to, or set a cosmetic display name.' The verb+resource pair is concrete and the two modes are distinguishable. Sibling differentiation is weak, though — it points to 'onboard(force_new=true)', which is not among the listed siblings, and never contrasts with the actual sibling 'start_session'.

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?

Gives real branching guidance: a call with no proof argument is gated to a fresh mint, a call with only a cosmetic name= skips the gate and can infer a co-located binding, and pass client_session_id to get your own back. It routes to an alternative ('onboard') for a fresh process. It stops short of an explicit 'use this instead of X when…' rule against the real sibling set.

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