Skip to main content
Glama

Update one of your agents

update_agent

Set the purpose of an agent you own (its agent_key from list_my_agents). Requires the mcp:agents:write permission AND that you own that agent on this connection — another agent's setup is never writable. Pass purpose ("" clears it). You MUST pass expected_revision — the config_revision you read from get_my_setup — so a concurrent edit is detected: if the agent's configuration changed since you read it, the write is refused (conflict) and nothing is written; re-read get_my_setup and try again. Returns the new setup and its config_revision; a run you already started keeps its own pinned revision until you start a new one. Refused (not_authorized) if you lack the permission or do not own the agent. An agent never changes its own instructions: a write that includes instructions is refused (not_agent_writable) and nothing is written. Your owner sets them on your page in Rithmo, or an org admin on the Control Board; report what you run with through declare_my_setup.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "agent_key": "<agent_key>",
      "expected_revision": "<expected_revision>"
    },
    "name": "update_agent"
  }
}

Input Schema

NameRequiredDescriptionDefault
purposeNo
agent_keyYes
instructionsNoAlways refused: an agent never changes its own instructions.
expected_revisionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (which only declare non-read-only, non-idempotent, non-destructive), the description discloses optimistic-concurrency behavior, that a refused write leaves nothing written, the failure codes not_authorized and not_agent_writable, and that an already-started run keeps its pinned revision. These are exactly the traits an agent could not infer from readOnlyHint/destructiveHint.

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?

The action and its ownership/permission gate are front-loaded and no sentence is filler. It is a single dense paragraph running long, and the revision-pinning and instructions clauses would scan faster as separate sentences, but the length is justified by genuine behavioral detail.

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?

There is no output schema, and the description still reports what comes back (the new setup and its config_revision). For a mutation tool with concurrency, permission and ownership constraints, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description must compensate, and it does for all four parameters: agent_key is sourced from list_my_agents, expected_revision is defined as the config_revision from get_my_setup, purpose accepts "" to clear, and instructions is flagged as always refused. That is meaning well beyond the bare type/length constraints.

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 description names a specific verb and resource ("Set the purpose of an agent you own") and immediately bounds it with owner and permission scope. It also carves out the adjacent operation it does not perform (changing instructions), so an agent can separate it from list_my_agents, get_my_setup and declare_my_setup without inspecting schemas.

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?

It states prerequisites (mcp:agents:write plus ownership on this connection), the exclusion (another agent's setup is never writable), and the recovery path on conflict (re-read get_my_setup and retry). It also redirects the instructions concern to the proper sibling, declare_my_setup.

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.

Resources