Skip to main content
Glama

identity

Resolve which agent this MCP session is bound to, or set a cosmetic display name. Pass client_session_id to read or rename your own session.

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= — with no session or ownership signal and no explicit session header — is also gated to a fresh mint — pass client_session_id to read or rename your own session. 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

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.3/5.0
Behavior4/5

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

Annotations declare non-readOnly, non-destructive, non-idempotent, so the safety bar is lower, yet the description still adds substantial behavioral detail: no-proof calls mint a fresh agent marked caller_proven=false, name-only calls also mint, name= is purely cosmetic and never looks up an agent, and continuity_token across processes 're-opens silent resurrection.' That is unusually candid mutation/resurrection disclosure. It stops short of describing the return shape, hence 4.

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 purpose, then the gating behavior, then the client_session_id escape hatch. Every sentence carries a distinct constraint, though the em-dash-heavy phrasing with parentheticals makes it denser than necessary and mildly hard to parse.

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 an 8-parameter, non-idempotent mutation tool with no output schema, the description covers the minting semantics, the cosmetic-name pitfall, and the cross-process token hazard. It names caller_proven as a returned flag, but does not describe the full return payload, leaving a small gap for a tool with no output 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 coverage is 100%, so the baseline is 3; the description adds relationship-level meaning beyond the per-field schema text, explaining name= default behavior, that client_session_id gates read/rename, and that continuity_token is per-process ownership proof rather than a transport claim. It clarifies how the arguments interact, which the flat schema does not.

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 opening sentence states a specific verb and resource: resolve the agent bound to the session, or set a cosmetic display name. It immediately qualifies the operation as 'not a plain read,' which distinguishes it from the read-oriented siblings and tells the agent this call can create/persist state.

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 gives explicit selection rules: 'pass client_session_id to read or rename your own session,' and 'for a fresh process call onboard(force_new=true).' The when-to-use guidance is strong, but the recommended alternative 'onboard' does not appear in the sibling list, which weakens the routing advice slightly.

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