Skip to main content
Glama

set_permission_mode

Idempotent

Change an agent wallet's session permission mode (non-custodial control plane).

Ports Claude Code's plan/acceptEdits/bypassPermissions ladder to a wallet with signing power. mode: observe (deny every value-bearing tool outright, PERMISSION_MODE_BLOCKED) | propose (value-bearing tools return a PROPOSAL envelope -- proposal_id + params + summary -- instead of executing; approve within the TTL via approve_proposal) | auto_within_policy (execute immediately, still capped by every configured WalletPolicy -- the pre-R9 default). The transition is logged as an AgentTransaction audit row.

Scope: the ladder gates ACTIONS that build, sign or move value -- including set_perp_tpsl, which is an on-chain action despite its name. It does NOT gate configuration writes: set_wallet_policy, set_agnta_grant, set_alert, set_liquidation_alert, set_ooda_consent, set_portfolio_charter and this tool are allowed in every mode, observe included -- which is how a wallet leaves observe.

Lane 2 loosening gate: on a Lane 2 wallet, a change that LOOSENS the ladder (observe -> propose/auto, propose -> auto) raises BROWSER_CONFIRMATION_REQUIRED -- call request_permission_mode_change instead and have the owner approve it in their browser. Tightening applies directly for every wallet; non-Lane-2 wallets are unchanged.

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": {
      "wallet_address": "<wallet_address>",
      "mode": "<mode>"
    },
    "name": "set_permission_mode"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeYes
caller_idNo
wallet_addressYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover safety hints (readOnly=false, idempotent=true, destructive=false); the description adds far more: observe returns PERMISSION_MODE_BLOCKED, propose returns a PROPOSAL envelope with proposal_id/params/summary, auto_within_policy is capped by WalletPolicy, and the transition is written as an AgentTransaction audit row. This is exactly the behavioral context annotations cannot carry.

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-loads the core action, then modes, scope, and the Lane 2 gate in a logical order, and every block adds actionable information. It is dense and multi-paragraph, which costs a little on pure conciseness, but nothing reads as filler.

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?

For a permission-mode tool with real gating complexity, the description covers modes, scope boundaries, the loosening gate, and the alternative to call, while the output schema handles return values. An agent has everything needed to invoke it correctly and to know when not to.

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 0% with 3 params, so the description must compensate. It fully documents the critical 'mode' parameter's three values and their execution semantics, which the schema does not enumerate. wallet_address is self-evident, but caller_id is left undocumented, keeping this short of a 5.

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+resource ('Change an agent wallet's session permission mode') and immediately frames the domain ('non-custodial control plane'). It explicitly names the siblings it is distinct from (request_permission_mode_change, approve_proposal, set_wallet_policy) so an agent can differentiate without opening 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?

Gives explicit when-to-use per mode (observe/propose/auto_within_policy), states what is and is not gated, and routes the agent to request_permission_mode_change when a Lane 2 loosening raises BROWSER_CONFIRMATION_REQUIRED. It even notes tightening applies directly, so the when-not condition is fully specified.

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