# io.github.smurfy92/openclaw-control-mcp (npm · openclaw-control-mcp)

MCP server bridging Claude Code to the OpenClaw gateway management plane via JSON-RPC.

- Trust score: 66/100 (medium)
- Change this week: +23
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `openclaw-control-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp.md), [page](https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp)

## Channel facts

- Registry: `npm`
- Package: `openclaw-control-mcp`
- Version: `0.6.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 81 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 19777 tokens (~138/item across 143 items; 143 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 93/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 80% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add smurfy92-openclaw-control-mcp -- npx -y openclaw-control-mcp
```

### Codex

```bash
codex mcp add smurfy92-openclaw-control-mcp -- npx -y openclaw-control-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smurfy92-openclaw-control-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "openclaw-control-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add smurfy92-openclaw-control-mcp --command npx --arg -y --arg openclaw-control-mcp
```

### Hermes

```yaml
mcp_servers:
  smurfy92-openclaw-control-mcp:
    command: "npx"
    args: ["-y", "openclaw-control-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "smurfy92-openclaw-control-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "openclaw-control-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 65, +46)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Schema quality: unverified → good
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 19, −5)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified

### 2026-07-31 (score 24, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 25, +1)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −19)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (143)

### `openclaw_setup` (~254 tokens)

Persist a named OpenClaw gateway config (URL + token) to local store. Default instance name is 'default'. Pass `instance` to manage multiple gateways (e.g. 'perso', 'work') from the same MCP. Env vars (OPENCLAW_GATEWAY_URL/TOKEN) still override everything stored here — leave them unset to use named instances. After saving, the matching client connection is closed so the next tool call re-handshakes with the new credentials.

Input parameters:

- `gatewayPassword` (string): Optional extra password if your gateway is configured with one
- `gatewayToken` (string, required): Gateway login token (get it from your Hostinger VPS dashboard or the Control panel after login)
- `gatewayUrl` (string, required): WebSocket URL of the gateway, e.g. wss://your-gateway.example.com or ws://127.0.0.1:18789
- `instance` (string): Instance name (e.g. 'default', 'perso', 'work'). Defaults to 'default'. The first instance configured becomes the default automatically.
- `makeDefault` (boolean): If true, also set this instance as the active default (for tools that don't pass `instance`).

### `openclaw_setup_show` (~67 tokens)

Show the currently resolved gateway configuration for an instance (default 'default' or whichever instance is the active default). Does NOT print tokens. Pass `instance` to inspect a non-default one.

Input parameters:

- `instance` (string): Instance name to inspect. Defaults to the active default instance.

### `openclaw_setup_list` (~47 tokens)

List every persisted gateway instance (name + URL + whether token/password are set, never the values). Plus the active default instance and where secrets live (file vs OS keychain).

### `openclaw_setup_select_default` (~83 tokens)

Switch the active default instance — every subsequent tool call (cron.list, sessions.list, etc.) will route to this instance unless an env var overrides. Closes existing client connections so they re-handshake with the new instance's credentials.

Input parameters:

- `instance` (string, required): Instance name to set as default. Must already exist (use openclaw_setup first).

### `openclaw_setup_clear` (~81 tokens)

Clear a persisted gateway config. By default clears every instance; pass `instance` to clear just one. Does NOT touch the device identity or device tokens. After this, the MCP falls back to env vars or errors with 'configure first'.

Input parameters:

- `instance` (string): If set, clear only this named instance. Omit to clear all instances.

### `openclaw_device_status` (~127 tokens)

Show this MCP's local device identity, pairing status, current scopes (if any), and any pending pairing requestId. Triggers a fresh connect attempt, so it doubles as a 'retry pairing' command after approval. Use when scoped methods fail with 'missing scope: operator.read'.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_device_pair_list` (~110 tokens)

List pending and paired devices known to the gateway. Useful for confirming that this MCP's device shows up in 'pending' before approval. Wraps `device.pair.list` (operator scope).

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_device_pair_approve` (~116 tokens)

Approve a pending device pairing request. Requires operator.write scope. Wraps `device.pair.approve`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `requestId` (string, required): Pairing request id from openclaw_device_pair_list (pending entries)

### `openclaw_device_pair_reject` (~109 tokens)

Reject a pending device pairing request. Wraps `device.pair.reject`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `requestId` (string, required): Pairing request id from openclaw_device_pair_list (pending entries)

### `openclaw_device_pair_remove` (~117 tokens)

Remove a paired device from the gateway. Wraps `device.pair.remove`. Destructive — the device will need to re-pair to reconnect.

Input parameters:

- `deviceId` (string, required): Device id (hex) to unpair
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_device_token_revoke` (~119 tokens)

Revoke a device's authentication token. Wraps `device.token.revoke`. Destructive — the device must re-pair (or use a freshly issued token).

Input parameters:

- `deviceId` (string, required): Device id whose token to revoke
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_device_token_rotate` (~121 tokens)

Rotate a device's authentication token (issues a new one, invalidates the old). Wraps `device.token.rotate`. Destructive — the device's currently cached token stops working.

Input parameters:

- `deviceId` (string, required): Device id whose token to rotate
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_device_repair` (~215 tokens)

Recover from the `expected Uint8Array of length 32, got length=0` failure mode (empty `device.privateKey`). Backs up `store.json` to `store.json.bak.<ts>`, wipes the broken device + cached tokens (keeps gateway URL + token configs), and drops the matching keychain entries. The next call to any scoped tool regenerates a fresh Ed25519 keypair and surfaces a new `pendingPairing.requestId` to approve in the Control panel. The `instance` arg is accepted but currently no-op — the local Store is shared across all instances. **Destructive — run only when openclaw_device_status reports the empty-private-key failure mode.**

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_introspect` (~163 tokens)

Inspect the OpenClaw gateway capabilities. Triggers a connect (if not already), returns the server version, this device's role/scopes, the full list of JSON-RPC `methods` and `events` the gateway publishes, and a coverage report comparing those methods to the typed wrappers this MCP exposes. Use to discover what methods you can call via `openclaw_call` and to spot endpoints that still need a typed wrapper after a gateway upgrade.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_call` (~274 tokens)

DESTRUCTIVE ESCAPE HATCH — call ANY JSON-RPC method on the gateway with arbitrary params. Use this to operate on endpoints that don't yet have a typed wrapper. The user must validate the exact method name and params on every call (especially anything matching `*.add|remove|delete|update|create|write|terminate|reset|approve|reject`). For read-only inspection prefer the typed tools (`openclaw_cron_list`, `openclaw_introspect`, …) — `openclaw_call` should only be used when no typed alternative exists.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `method` (string, required): JSON-RPC method name, e.g. 'cron.list', 'session.list'. Discover the full set via openclaw_introspect.
- `params` (object): Method params. MUST be a JSON object matching the gateway's expected shape (e.g. `{}` for no-arg methods). Strings, arrays, or primitives are rejected — the gateway requires an object even when there…

### `openclaw_status` (~99 tokens)

Get overall gateway status (uptime, agents, sessions, queues). Wraps the root-level `status` JSON-RPC method. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_health` (~117 tokens)

Combined health probe — server-side `health` JSON-RPC plus client-side metadata (MCP version, device pairing state, gateway URL, last successful call). Read-only. Use this for a one-shot 'is everything OK?' check.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_last_heartbeat` (~94 tokens)

Get the last heartbeat info (latest tick processed by the gateway). Wraps `last-heartbeat`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_set_heartbeats` (~112 tokens)

Toggle / configure heartbeat emission from the gateway. Wraps `set-heartbeats`. Pass `enabled` and any cadence params.

Input parameters:

- `enabled` (boolean)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `intervalMs` (integer)

### `openclaw_system_presence` (~94 tokens)

Get presence info (which devices are connected, when they last spoke). Wraps `system-presence`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_system_event` (~113 tokens)

Emit a custom system event onto the gateway bus. Wraps `system-event`. Mostly used for tooling / debug — operators rarely call this directly.

Input parameters:

- `event` (string, required): Event name
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `payload`

### `openclaw_wake` (~111 tokens)

Wake an agent / session out of idle. Wraps the root-level `wake` method. Pass agentId/sessionId.

Input parameters:

- `agentId` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string)

### `openclaw_send` (~194 tokens)

Channel-routed `send` — pushes a message via the gateway's delivery layer. Wire format (verified live against gateway 2026.4.12+): requires `to` (channel-specific recipient) + `idempotencyKey` (auto-generated if omitted). Prefer the typed `openclaw_chat_send` or `openclaw_sessions_send` when you want session context.

Input parameters:

- `idempotencyKey` (string): Unique key to dedupe retries. Auto-generated UUID if omitted.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `to` (string, required): Channel-specific recipient (e.g. Telegram chat id, Discord channel id, email address).

### `openclaw_agent` (~213 tokens)

Root-level `agent` method — sends a message to the default agent and returns the agent's response. Wire format (verified live against gateway 2026.4.12+): requires `message` + `idempotencyKey` (auto-generated if omitted). NOT read-only — this triggers an agent turn. Prefer `openclaw_sessions_send` when you want explicit session control.

Input parameters:

- `agentId` (string): Override the default agent.
- `idempotencyKey` (string): Unique key to dedupe retries. Auto-generated UUID if omitted.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string, required): Message to send to the agent.
- `sessionId` (string): Target a specific session; omit to use the default.

### `openclaw_agent_identity_get` (~93 tokens)

Get the gateway's agent identity (current default agent metadata). Wraps `agent.identity.get`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_agent_wait` (~126 tokens)

Block until the agent finishes its current turn (or timeout). Wraps `agent.wait`. Long-running — uses the configured request timeout (default 30s).

Input parameters:

- `agentId` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string)
- `timeoutMs` (integer)

### `openclaw_gateway_identity_get` (~96 tokens)

Get the gateway's own identity (id, version, owner, region). Wraps `gateway.identity.get`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_list` (~285 tokens)

List active OpenClaw agentic sessions. Wraps `sessions.list`. Each session has both a `sessionId` (UUID) and a `key` (composite, e.g. 'agent:main:main', 'agent:main:cron:<id>', 'agent:main:telegram:group:<chat-id>', 'agent:main:subagent:<uuid>'). Use to find a session before preview/patch/abort/compact/reset. The `status` filter is applied client-side after fetch (verified live: the gateway itself rejects a `status` param with `unexpected property 'status'` against 2026.4.12+).

Input parameters:

- `agentId` (string): Filter by agent id (e.g. 'main') — forwarded to the gateway.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `offset` (integer)
- `status` (string): Client-side filter on session.status. Observed values: 'running', 'done', 'error', 'aborted', 'timeout'. Applied after fetch — does not reduce wire traffic.

### `openclaw_sessions_preview` (~155 tokens)

Preview one or more sessions without subscribing — returns recent messages, status, and metadata for each key. Wraps `sessions.preview`. Read-only. Pass `keys` (array of full session keys like 'agent:main:cron:<id>' from openclaw_sessions_list).

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `keys` (array, required): Full session keys (the `key` field returned by openclaw_sessions_list, NOT the sessionId UUID)

### `openclaw_sessions_create` (~150 tokens)

Create a new agent session. Wraps `sessions.create`. The default agent id is typically 'main'. Pass an optional `title` to set the human-readable label shown in the Control panel.

Input parameters:

- `agentId` (string): Agent id (e.g. 'main'). Defaults to the gateway's default agent if omitted.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `title` (string): Human-readable title shown in the Control panel.

### `openclaw_sessions_patch` (~182 tokens)

Update session metadata (title, displayName, tags, etc.). Wraps `sessions.patch`. Pass id + only the fields you want to change. Schema is intentionally permissive — gateway accepts any subset of session fields.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_send` (~187 tokens)

Send a user message into an existing session. Wraps `sessions.send`. The agent processes async and streams the reply via session.message events; call openclaw_sessions_preview afterwards (with the session's composite key) to see the result. Use either `text` or `message` — gateway accepts both names depending on version.

Input parameters:

- `id` (string, required): Session id (sessionId UUID).
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string): Message text. Older alias for `text`; pass either, not both.
- `text` (string): Message text. Preferred field name in newer gateway versions.

### `openclaw_sessions_abort` (~173 tokens)

Abort the in-flight agent turn for a session (cancels the current LLM call / tool loop). Wraps `sessions.abort`. Destructive — interrupts running work.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_reset` (~164 tokens)

Reset a session (clears working state, keeps session id). Wraps `sessions.reset`. Destructive — confirm before calling.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_delete` (~156 tokens)

Delete a session permanently. Wraps `sessions.delete`. Destructive — confirm before calling.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_compact` (~168 tokens)

Trigger a compaction of a session's history (creates a new compaction snapshot, keeps the session live). Wraps `sessions.compact`.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_compaction_list` (~159 tokens)

List compaction snapshots for a session. Wraps `sessions.compaction.list`. Read-only.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_compaction_get` (~143 tokens)

Fetch a specific compaction snapshot by id. Wraps `sessions.compaction.get`. Read-only.

Input parameters:

- `id` (string, required): Compaction snapshot id (NOT the session id — get this from openclaw_sessions_compaction_list).
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string): Optional session id, helps disambiguate when the snapshot id is shared across sessions.

### `openclaw_sessions_compaction_restore` (~143 tokens)

Restore a session to a previous compaction snapshot. Wraps `sessions.compaction.restore`. Destructive — overwrites current session state with the snapshot. The current state is lost unless you branched first.

Input parameters:

- `id` (string, required): Compaction snapshot id.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string): Optional session id; required when the snapshot id is ambiguous.

### `openclaw_sessions_compaction_branch` (~160 tokens)

Create a NEW session that starts from a previous compaction snapshot of an existing session. Wraps `sessions.compaction.branch`. Use this when you want to explore an alternative continuation without losing the current session state.

Input parameters:

- `id` (string, required): Compaction snapshot id to branch from.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string): Source session id, when the snapshot id is ambiguous.
- `title` (string): Title for the new branched session.

### `openclaw_sessions_subscribe` (~129 tokens)

Subscribe to session lifecycle events (sessions.changed). Wraps `sessions.subscribe`. Note: the MCP runs over stdio and cannot stream events back to the client — this tool registers the subscription server-side but you won't receive deltas in Claude Code. Useful mainly to confirm the subscription was accepted.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_unsubscribe` (~84 tokens)

Unsubscribe from session lifecycle events. Wraps `sessions.unsubscribe`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_messages_subscribe` (~174 tokens)

Subscribe to streaming session messages (session.message events). Wraps `sessions.messages.subscribe`. Note: MCP stdio cannot stream events to Claude Code — server-side subscription only.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_messages_unsubscribe` (~154 tokens)

Unsubscribe from session message stream. Wraps `sessions.messages.unsubscribe`.

Input parameters:

- `id` (string, required): Session id. Most session.* methods accept the `sessionId` (UUID); a few accept the composite `key` (e.g. 'agent:main:cron:<id>'). When unsure, try the UUID first; if rejected with NOT_FOUND, retry wi…
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_sessions_tail` (~339 tokens)

Watch a session by polling `sessions.preview` and return only the NEW messages that appeared during the tail window. Workaround for the stdio MCP not being able to stream `sessions.subscribe` / `session.message` events to Claude Code. Polls every `intervalMs` (default 2000ms) for up to `durationMs` (default 30000ms, max 300000ms), or until `maxMessages` new messages are collected, or until the session reaches a terminal status ('done', 'error', 'aborted', 'timeout', 'completed'). The first poll seeds the 'already-seen' set so existing messages are NOT returned — only what arrives after the tool was called.

Input parameters:

- `durationMs` (integer): Total tail duration in ms. Default 30000 (30s). Max 300000 (5min).
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `intervalMs` (integer): Polling interval in ms. Default 2000 (2s). Min 500 to avoid hammering the gateway. Max 10000.
- `key` (string, required): Full session key (composite, e.g. 'agent:main:cron:<id>') from openclaw_sessions_list.
- `maxMessages` (integer): Stop early once this many new messages have arrived — useful to bail out on the first agent reply.

### `openclaw_chat_send` (~246 tokens)

Send a message into a chat session via the gateway's chat layer. Wire format (verified live against gateway 2026.4.12+): requires `sessionKey` (composite, e.g. 'agent:main:main' from openclaw_sessions_list), `message`, and `idempotencyKey` (auto-generated UUID if omitted). The pre-0.5.x `agentId`/`sessionId`/`text` shape is rejected by the gateway. Destructive — triggers an agent turn.

Input parameters:

- `idempotencyKey` (string): Unique key to dedupe retries. Auto-generated UUID if omitted.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string, required): Message body.
- `sessionKey` (string, required): Composite session key from openclaw_sessions_list (e.g. 'agent:main:main', 'agent:main:cron:<id>').

### `openclaw_chat_history` (~149 tokens)

Fetch chat history for a session. Wraps `chat.history`. Wire format (verified live): requires `sessionKey`; accepts `limit`. Read-only. The pre-0.5.x `agentId`/`sessionId`/`offset` fields are rejected.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `sessionKey` (string, required): Composite session key from openclaw_sessions_list.

### `openclaw_chat_abort` (~124 tokens)

Abort an in-flight chat turn for a session. Wraps `chat.abort`. Wire format (verified live): requires `sessionKey`. Destructive — cancels running LLM call.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionKey` (string, required): Composite session key from openclaw_sessions_list.

### `openclaw_logs_tail` (~301 tokens)

Tail recent gateway logs. Wraps `logs.tail`. Read-only. The gateway only forwards `limit` to the wire; `sinceMs`, `level`, and `component` are applied client-side AFTER fetch (verified live: the gateway rejects them with `unexpected property` against 2026.4.12+). For wide tails, raise `limit` and the client filters on the way back. Use this for debug — e.g. tracing why a cron job failed, why a session aborted, or what an agent emitted.

Input parameters:

- `component` (string): Client-side filter: keep entries whose message text contains this substring (case-insensitive). Useful for narrowing to a subsystem (e.g. 'discord', 'cron', 'gateway/ws').
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `level` (string): Client-side filter on `_meta.logLevelName` (case-insensitive). Common values: 'INFO', 'WARN', 'ERROR'.
- `limit` (integer): Forwarded to the gateway. Number of lines to fetch before client-side filtering.
- `sinceMs` (integer): Client-side filter: keep entries with `_meta.date` >= sinceMs (epoch ms).

### `openclaw_agents_list` (~95 tokens)

List configured agents on the gateway (e.g. 'main', custom agents). Wraps `agents.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_agents_create` (~209 tokens)

Create a new agent configuration. Wraps `agents.create`. Pass `agentId`, `displayName`, `model`, plus any extra fields the gateway accepts (system prompt, default tools, etc.). Call openclaw_agents_list first to see the full shape of an existing agent.

Input parameters:

- `agentId` (string): Agent identifier (e.g. 'support-bot'). Defaults to a generated id if omitted.
- `displayName` (string): Human-readable name shown in the Control panel.
- `id` (string): Alias for agentId — pass either, not both.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `model` (string): Default model id (e.g. 'claude-sonnet-4-6').

### `openclaw_agents_update` (~128 tokens)

Update an existing agent's configuration. Wraps `agents.update`. Pass `agentId` + only the fields you want to change. Schema is permissive — gateway accepts the same shape as `agents.create`.

Input parameters:

- `agentId` (string, required): Agent id, e.g. 'main'
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_agents_delete` (~114 tokens)

Delete an agent configuration. Wraps `agents.delete`. Destructive — confirm before calling. Sessions tied to this agent may be orphaned.

Input parameters:

- `agentId` (string, required): Agent id, e.g. 'main'
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_agents_files_list` (~111 tokens)

List files attached to an agent (instructions, system files, etc.). Wraps `agents.files.list`. Read-only.

Input parameters:

- `agentId` (string, required): Agent id, e.g. 'main'
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_agents_files_get` (~170 tokens)

Fetch a specific agent file's contents (system prompt, tool definitions, etc.). Wraps `agents.files.get`. Read-only. Pass either `path` (full path including the file name) or `name` (file basename) — not both.

Input parameters:

- `agentId` (string, required)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `name` (string): File basename. Pass either this or `path`.
- `path` (string): Full file path (e.g. 'system.md'). Pass either this or `name`.

### `openclaw_agents_files_set` (~206 tokens)

Write or overwrite an agent file. Wraps `agents.files.set`. Destructive — overwrites existing content silently. Pass `agentId`, `path` or `name`, and `content` or `body` (gateway accepts both names depending on version).

Input parameters:

- `agentId` (string, required)
- `body` (string): File body. Older alias for `content`; pass either, not both.
- `content` (string): File body. Newer field name.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `name` (string): File basename. Pass either this or `path`.
- `path` (string): Full file path (e.g. 'system.md'). Pass either this or `name`.

### `openclaw_channels_status` (~93 tokens)

Get the connection status of delivery channels (Telegram, email, etc.). Wraps `channels.status`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_channels_logout` (~121 tokens)

Log out / disconnect a delivery channel. Wraps `channels.logout`. Destructive — channel won't deliver until re-authenticated. Pass the channel name (e.g. 'telegram').

Input parameters:

- `channel` (string, required): Channel name, e.g. 'telegram'
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_models_list` (~102 tokens)

List models available to the gateway (Anthropic, OpenAI, etc.) with their IDs and any provider metadata. Wraps `models.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_usage_status` (~91 tokens)

Get usage status (token counts, current period, quotas). Wraps `usage.status`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_usage_cost` (~125 tokens)

Get usage cost breakdown (per agent, per model, per period). Wraps `usage.cost`. Read-only. Pass period/agent filters if supported.

Input parameters:

- `agentId` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sinceMs` (integer)
- `untilMs` (integer)

### `openclaw_cron_list` (~182 tokens)

List configured OpenClaw cron jobs. Wraps the gateway JSON-RPC method `cron.list`. Returns jobs with name, schedule, payload kind, and enabled state.

Input parameters:

- `enabled` (string): Filter by enabled/disabled state
- `includeDisabled` (boolean): Set true to include disabled jobs (alias for enabled='all')
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `offset` (integer)
- `query` (string): Free-text search filter on job name
- `sortBy` (string)
- `sortDir` (string)

### `openclaw_cron_status` (~96 tokens)

Get the OpenClaw cron scheduler status (enabled flag, next-run timestamp, recent failures). Wraps `cron.status`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_cron_run` (~102 tokens)

Trigger an immediate run of a specific OpenClaw cron job by id. Wraps `cron.run`.

Input parameters:

- `id` (string, required): Cron job id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_cron_runs` (~214 tokens)

List recent runs of a specific OpenClaw cron job. Wraps `cron.runs`. Pass `compact: true` to truncate each run's `summary` to 200 chars (saves tokens when scanning many runs); a `summaryTruncated` flag is added per entry. Each entry also gets a `runAtAgo` field (e.g. "3h ago") for readability.

Input parameters:

- `compact` (boolean): Truncate each run's summary to 200 chars
- `id` (string, required): Cron job id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `offset` (integer)
- `summaryMaxChars` (integer): Override the truncation length when compact=true (default 200)

### `openclaw_cron_remove` (~104 tokens)

Delete an OpenClaw cron job by id. Destructive — confirm before calling. Wraps `cron.remove`.

Input parameters:

- `id` (string, required): Cron job id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_cron_add` (~212 tokens)

Create a new OpenClaw cron job. Wraps `cron.add`. Field names match the gateway wire format (verified by the Control panel SPA + live calls), NOT the README placeholders sometimes seen in the MCP source: schedule uses `expr`/`tz` (cron) or `everyMs` (every) or `at` (exact); payload.agentTurn uses `message` and `timeoutSeconds`. Examples: `{ schedule: { kind: "cron", expr: "0 13 * * 5", tz: "Europe/Paris" }, payload: { kind: "agentTurn", message: "...", timeoutSeconds: 180 } }`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `job` (object, required)

### `openclaw_cron_update` (~280 tokens)

Update an existing OpenClaw cron job in place. Wraps `cron.update`. Avoids the remove + re-add dance when you just want to change schedule, timeout, payload, or delivery. Wire format (verified live against gateway 2026.4.12+): `{ id|jobId: string, patch: object }` — pass the job id and a `patch` object containing only the fields you want to change. Older shape `{ job: { id, ...fields } }` is auto-translated for backward compat with pre-0.5.1 callers.

Input parameters:

- `id` (string): Cron job id (preferred). Pass either `id` or `jobId`.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `job` (object): DEPRECATED — pre-0.5.1 shape. Pass `id` + `patch` instead.
- `jobId` (string): Cron job id (alias). Pass either `id` or `jobId`.
- `patch` (object): Fields to change (any subset of writable cron fields).

### `openclaw_cron_add_weekly` (~452 tokens)

Create a cron job that fires once a week at a fixed local time. Synthesizes a `cron`-kind schedule and an `agentTurn` payload, then calls `cron.add`. Pass `dayOfWeek` (mon..sun), `hour` (0-23), `minute` (0-59), `tz` (IANA, defaults to Europe/Paris), and `message`. Optional channel delivery: pass `channel` + `to`.

Input parameters:

- `agentId` (string): Override the default agent. Defaults to gateway's default.
- `channel` (string): Delivery channel name (e.g. 'telegram', 'email', 'discord'). Omit to keep the result internal.
- `dayOfWeek` (string, required): Day of the week (lowercase 3-letter, e.g. 'fri').
- `deliveryMode` (string): 'announce' broadcasts to channel; 'direct' DMs; 'none' keeps result internal. Defaults to 'announce' when channel is set.
- `hour` (integer, required): Local hour (0-23).
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string, required): The text the agent receives at fire time. Used as the agentTurn `message` field.
- `minute` (integer): Local minute (0-59). Defaults to 0.
- `model` (string): Override the default model, e.g. 'claude-sonnet-4-6'.
- `name` (string, required): Job name shown in the Control panel.
- `timeoutSeconds` (integer): Hard cap for the agent run. Default 900s (15min) — enough for cold-start + non-trivial work.
- `to` (string): Channel-specific recipient (Telegram chat id, email address, Discord channel id, …). Required when `channel` is set.
- `tz` (string): IANA timezone. Defaults to Europe/Paris.

### `openclaw_cron_add_daily` (~353 tokens)

Create a cron job that fires every day at a fixed local time. Synthesizes the `cron`-kind schedule + `agentTurn` payload. Pass `hour`, `minute`, `tz`, `message`. Optional channel delivery via `channel` + `to`.

Input parameters:

- `agentId` (string): Override the default agent. Defaults to gateway's default.
- `channel` (string): Delivery channel name (e.g. 'telegram', 'email', 'discord'). Omit to keep the result internal.
- `deliveryMode` (string): 'announce' broadcasts to channel; 'direct' DMs; 'none' keeps result internal. Defaults to 'announce' when channel is set.
- `hour` (integer, required)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string, required): The text the agent receives at fire time. Used as the agentTurn `message` field.
- `minute` (integer)
- `model` (string): Override the default model, e.g. 'claude-sonnet-4-6'.
- `name` (string, required)
- `timeoutSeconds` (integer): Hard cap for the agent run. Default 900s (15min) — enough for cold-start + non-trivial work.
- `to` (string): Channel-specific recipient (Telegram chat id, email address, Discord channel id, …). Required when `channel` is set.
- `tz` (string)

### `openclaw_cron_add_every` (~371 tokens)

Create a cron job that fires every N minutes/hours regardless of clock time. Synthesizes an `every`-kind schedule. Pass either `intervalMinutes` or `intervalHours` (the tool computes `everyMs`). Use for monitoring jobs that don't care about wall-clock alignment.

Input parameters:

- `agentId` (string): Override the default agent. Defaults to gateway's default.
- `channel` (string): Delivery channel name (e.g. 'telegram', 'email', 'discord'). Omit to keep the result internal.
- `deliveryMode` (string): 'announce' broadcasts to channel; 'direct' DMs; 'none' keeps result internal. Defaults to 'announce' when channel is set.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `intervalHours` (integer): Interval in hours. Pass either this or intervalMinutes.
- `intervalMinutes` (integer): Interval in minutes. Pass either this or intervalHours.
- `message` (string, required): The text the agent receives at fire time. Used as the agentTurn `message` field.
- `model` (string): Override the default model, e.g. 'claude-sonnet-4-6'.
- `name` (string, required)
- `timeoutSeconds` (integer): Hard cap for the agent run. Default 900s (15min) — enough for cold-start + non-trivial work.
- `to` (string): Channel-specific recipient (Telegram chat id, email address, Discord channel id, …). Required when `channel` is set.

### `openclaw_cron_add_once` (~399 tokens)

Create a one-shot reminder/job that fires exactly once at a given absolute timestamp, then auto-deletes. Synthesizes an `exact`-kind schedule with `deleteAfterRun: true`. Pass `at` as RFC3339 (e.g. '2026-05-08T09:00:00+02:00') and a `message`.

Input parameters:

- `agentId` (string): Override the default agent. Defaults to gateway's default.
- `at` (string, required): RFC3339 timestamp, e.g. '2026-05-08T09:00:00+02:00' or '2026-05-08T07:00:00Z'.
- `channel` (string): Delivery channel name (e.g. 'telegram', 'email', 'discord'). Omit to keep the result internal.
- `deliveryMode` (string): 'announce' broadcasts to channel; 'direct' DMs; 'none' keeps result internal. Defaults to 'announce' when channel is set.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `message` (string, required): The text the agent receives at fire time. Used as the agentTurn `message` field.
- `model` (string): Override the default model, e.g. 'claude-sonnet-4-6'.
- `name` (string, required)
- `timeoutSeconds` (integer): Hard cap for the agent run. Default 900s (15min) — enough for cold-start + non-trivial work.
- `to` (string): Channel-specific recipient (Telegram chat id, email address, Discord channel id, …). Required when `channel` is set.

### `openclaw_config_get` (~170 tokens)

Read the gateway's current configuration. Wraps `config.get`. Read-only. The gateway returns the full config; pass `path` to project to a sub-section client-side after fetch (the gateway itself does NOT support a `path` filter — verified live against 2026.4.12+).

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `path` (string): Dotted path applied client-side to project the response (e.g. 'channels.telegram'). Does not reduce wire traffic — the gateway always returns the full config.

### `openclaw_config_set` (~130 tokens)

Replace a config value at a given path. Wraps `config.set`. Destructive — overwrites the previous value. Prefer openclaw_config_patch for partial updates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `path` (string, required): Dotted path of the config key to set
- `value`: New value (any JSON)

### `openclaw_config_patch` (~319 tokens)

Optimistic-locked replace of the FULL gateway config (verified live against 2026.4.12+). Wraps `config.patch`. Wire format: `{ raw: string, baseHash: string }` where `raw` is the full config serialized as JSON and `baseHash` comes from a previous `openclaw_config_get` call. Pass `mergePath` + `mergeValue` for the convenience flow: this tool will fetch the current config, deep-merge your value at the given dotted path, compute the resulting `raw` JSON, and submit it with the freshly-read `baseHash`. Destructive — replaces the entire config atomically.

Input parameters:

- `baseHash` (string): Hash of the config the patch is based on. Required with `raw`. Get it from openclaw_config_get.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `mergePath` (string): Convenience: dotted path to merge `mergeValue` into. The tool fetches the current config and merges client-side.
- `mergeValue`: Convenience: object/value to deep-merge at `mergePath`.
- `raw` (string): Full new config as a JSON string. Use this when you've already serialized the new state. Mutually exclusive with mergePath/mergeValue.

### `openclaw_config_apply` (~94 tokens)

Apply pending config changes (commit). Wraps `config.apply`. Destructive — propagates buffered config to running components.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_config_schema` (~105 tokens)

Get the JSON schema describing the gateway's config structure. Wraps `config.schema`. Read-only — useful before openclaw_config_set/patch to know which paths exist.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_config_schema_lookup` (~105 tokens)

Look up the schema description for a specific config path. Wraps `config.schema.lookup`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `path` (string, required): Dotted path to look up

### `openclaw_secrets_reload` (~107 tokens)

Reload the gateway's secret store from disk. Wraps `secrets.reload`. Use after editing the secrets file out-of-band so the gateway picks up new values without a restart.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_secrets_resolve` (~188 tokens)

Resolve a command-scoped secret. Wraps `secrets.resolve`. Wire format (verified live against gateway 2026.4.12+): `{ commandName: string }` — the gateway secrets subsystem is COMMAND-scoped, not arbitrary key/value. SENSITIVE — returns secret material; only use for debugging missing/wrong-values issues. For arbitrary API keys consumed by skills, use `openclaw_secrets_set` (which writes to the config tree, not the command-scoped secret store).

Input parameters:

- `commandName` (string, required): Command name whose secret to resolve.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_secrets_set` (~285 tokens)

Store an arbitrary secret (API key, third-party token, etc.) in the gateway's config tree where skills can consume it. Internally calls `config.patch` with a `mergePath` so the value lands at `config.<scope>.<name>`. Default scope is `secrets` (creates `config.secrets.<name>`); override with `scope` for skill-scoped secrets like `tools.linkedin-outreach.proxycurlApiKey`. Note: this writes to the CONFIG tree, not the gateway's `secrets.resolve` command-scoped store (which has no public write API). After this call, restart-free — the next agent run sees the updated config.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `name` (string, required): Secret name (e.g. 'PROXYCURL_API_KEY', 'OPENAI_API_KEY').
- `scope` (string): Dotted config path to nest under. Default 'secrets' creates config.secrets.<name>. Use e.g. 'tools.linkedin-outreach' for skill-scoped secrets.
- `value` (string, required): Secret value.

### `openclaw_skills_status` (~96 tokens)

Get the skills subsystem status (which skills are installed, enabled, recently updated). Wraps `skills.status`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_skills_search` (~104 tokens)

Search the available skill catalog (installed and remote). Wraps `skills.search`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `query` (string)

### `openclaw_skills_detail` (~108 tokens)

Get detailed info on a specific skill (manifest, version, dependencies, install state). Wraps `skills.detail`. Read-only.

Input parameters:

- `id` (string, required): Skill id / slug
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_skills_install` (~116 tokens)

Install a skill (or a specific version). Wraps `skills.install`. Mutates the gateway's skill set — confirm before calling.

Input parameters:

- `id` (string, required): Skill id to install
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `version` (string)

### `openclaw_skills_update` (~115 tokens)

Update an installed skill to its latest (or a specified) version. Wraps `skills.update`. Mutates the gateway state.

Input parameters:

- `id` (string, required): Skill id to update
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `version` (string)

### `openclaw_skills_bins` (~92 tokens)

List the binaries / executables exposed by installed skills. Wraps `skills.bins`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tools_catalog` (~118 tokens)

List the catalog of agent-facing tools available to OpenClaw agents (i.e. what `main` and other agents can call from inside a session). Wraps `tools.catalog`. Read-only.

Input parameters:

- `agentId` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tools_effective` (~120 tokens)

Get the effective (merged) tool set for an agent — base catalog + skill-provided + per-agent overrides. Wraps `tools.effective`. Read-only.

Input parameters:

- `agentId` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string)

### `openclaw_update_run` (~120 tokens)

Trigger an update of the gateway itself (pull latest version, restart components). Wraps `update.run`. DESTRUCTIVE — may briefly interrupt running sessions. Confirm before calling.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `version` (string): Specific version to install; omit for latest

### `openclaw_commands_list` (~97 tokens)

List the slash-commands registered in the gateway (commands the agent or operator can invoke). Wraps `commands.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_message_action` (~127 tokens)

Trigger a message-level action (e.g. retry, mark-as-handled, attach to a session). Wraps `message.action`. Mutates gateway state.

Input parameters:

- `action` (string, required): Action name
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `messageId` (string)
- `sessionId` (string)

### `openclaw_exec_approval_list` (~117 tokens)

List pending and recent exec approvals (commands the agent wants to run that need a human OK). Wraps `exec.approval.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)
- `status` (string)

### `openclaw_exec_approval_get` (~112 tokens)

Get details of a specific exec approval request (command, args, agent, status). Wraps `exec.approval.get`. Read-only.

Input parameters:

- `id` (string, required): Exec approval request id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_exec_approval_request` (~97 tokens)

Submit a new exec approval request (programmatic; normally agents do this themselves). Wraps `exec.approval.request`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_exec_approval_resolve` (~141 tokens)

Resolve (approve / reject) a pending exec approval. Wraps `exec.approval.resolve`. Mutates — the agent will proceed (or not) based on this decision.

Input parameters:

- `approved` (boolean)
- `decision` (string)
- `id` (string, required): Exec approval request id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `reason` (string)

### `openclaw_exec_approval_waitDecision` (~123 tokens)

Block until an exec approval gets a decision (or timeout). Wraps `exec.approval.waitDecision`. Long-running — bounded by the request timeout.

Input parameters:

- `id` (string, required): Exec approval request id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `timeoutMs` (integer)

### `openclaw_exec_approvals_get` (~99 tokens)

Get the global exec approvals policy (auto-allow rules, defaults). Wraps `exec.approvals.get`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_exec_approvals_set` (~100 tokens)

Set / replace the global exec approvals policy. Wraps `exec.approvals.set`. Destructive — overwrites the existing policy.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_exec_approvals_node_get` (~106 tokens)

Get the per-node exec approvals policy override. Wraps `exec.approvals.node.get`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required): Node id

### `openclaw_exec_approvals_node_set` (~107 tokens)

Set the exec approvals policy for a specific node. Wraps `exec.approvals.node.set`. Destructive.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required): Node id

### `openclaw_plugin_approval_list` (~110 tokens)

List pending and recent plugin approval requests (a skill / plugin asking for permission to do X). Wraps `plugin.approval.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `status` (string)

### `openclaw_plugin_approval_request` (~90 tokens)

Submit a plugin approval request (programmatic). Wraps `plugin.approval.request`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_plugin_approval_resolve` (~120 tokens)

Resolve a pending plugin approval (approve / reject). Wraps `plugin.approval.resolve`. Mutates.

Input parameters:

- `approved` (boolean)
- `decision` (string)
- `id` (string, required): Plugin approval request id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_plugin_approval_waitDecision` (~114 tokens)

Block until a plugin approval gets a decision. Wraps `plugin.approval.waitDecision`. Long-running.

Input parameters:

- `id` (string, required): Plugin approval request id
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `timeoutMs` (integer)

### `openclaw_wizard_start` (~113 tokens)

Start a setup wizard flow (e.g. agent onboarding, channel pairing). Wraps `wizard.start`. Pass the wizard id / kind.

Input parameters:

- `id` (string)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `kind` (string)

### `openclaw_wizard_next` (~95 tokens)

Advance the active wizard to its next step (with the user's answer to the current step). Wraps `wizard.next`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_wizard_cancel` (~87 tokens)

Cancel the active wizard flow without applying its changes. Wraps `wizard.cancel`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_wizard_status` (~130 tokens)

Get the wizard's current step and pending input for a specific session. Wraps `wizard.status`. Wire format (verified live against gateway 2026.4.12+): requires `sessionId`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `sessionId` (string, required): Session id whose wizard state to inspect.

### `openclaw_doctor_memory_status` (~98 tokens)

Get the memory subsystem health (short-term store, dream diary, grounding state). Wraps `doctor.memory.status`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_doctor_memory_dreamDiary` (~111 tokens)

Read the dream diary (the gateway's REM/light dream artifacts that promote into MEMORY.md). Wraps `doctor.memory.dreamDiary`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `limit` (integer)

### `openclaw_doctor_memory_backfillDreamDiary` (~110 tokens)

Backfill the dream diary from past sessions (re-runs dreaming on history). Wraps `doctor.memory.backfillDreamDiary`. Mutates — can be expensive in tokens.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_doctor_memory_dedupeDreamDiary` (~96 tokens)

Deduplicate dream diary entries. Wraps `doctor.memory.dedupeDreamDiary`. Mutates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_doctor_memory_repairDreamingArtifacts` (~104 tokens)

Repair corrupted dreaming artifacts (e.g. orphan files, broken JSON). Wraps `doctor.memory.repairDreamingArtifacts`. Mutates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_doctor_memory_resetDreamDiary` (~107 tokens)

Wipe the dream diary entirely. Wraps `doctor.memory.resetDreamDiary`. DESTRUCTIVE — confirm before calling. Loses all promoted-into-memory candidates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_doctor_memory_resetGroundedShortTerm` (~106 tokens)

Wipe the grounded short-term memory store. Wraps `doctor.memory.resetGroundedShortTerm`. DESTRUCTIVE — agents lose their recent recall.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_node_list` (~95 tokens)

List nodes registered with this gateway (worker / canvas / sub-gateway nodes). Wraps `node.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_node_describe` (~104 tokens)

Describe a specific node — capabilities, host, version, last heartbeat. Wraps `node.describe`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required): Node id

### `openclaw_node_invoke` (~119 tokens)

Invoke a method on a specific node (RPC routed through the gateway). Wraps `node.invoke`. Mutates depending on the target method.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `method` (string, required)
- `nodeId` (string, required)
- `params`

### `openclaw_node_invoke_result` (~100 tokens)

Fetch the result of a previously-issued node invocation. Wraps `node.invoke.result`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `invocationId` (string, required)

### `openclaw_node_event` (~105 tokens)

Emit an event toward a node (or the gateway-side node bus). Wraps `node.event`.

Input parameters:

- `event` (string, required)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string)

### `openclaw_node_rename` (~112 tokens)

Rename a node (display name / id). Wraps `node.rename`. Mutates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `name` (string)
- `newName` (string)
- `nodeId` (string, required)

### `openclaw_node_pair_list` (~91 tokens)

List node pairing requests (pending and resolved). Wraps `node.pair.list`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_node_pair_request` (~86 tokens)

Request pairing for a new node. Wraps `node.pair.request`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_node_pair_verify` (~85 tokens)

Verify a node pairing handshake. Wraps `node.pair.verify`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_node_pair_approve` (~105 tokens)

Approve a pending node pairing request. Wraps `node.pair.approve`. Mutates — node gains gateway access.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `requestId` (string, required)

### `openclaw_node_pair_reject` (~95 tokens)

Reject a pending node pairing request. Wraps `node.pair.reject`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `requestId` (string, required)

### `openclaw_node_pending_pull` (~112 tokens)

Pull pending work items destined for a node (queue drain). Wraps `node.pending.pull`. Read-and-mutate (work items leave the pending queue).

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required): Node id

### `openclaw_node_pending_drain` (~110 tokens)

Drain (clear) all pending work items for a node. Wraps `node.pending.drain`. Destructive — discards queued work.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required): Node id

### `openclaw_node_pending_enqueue` (~99 tokens)

Enqueue a new work item for a node. Wraps `node.pending.enqueue`. Mutates.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `nodeId` (string, required)

### `openclaw_node_pending_ack` (~107 tokens)

Acknowledge / commit completion of a pending work item. Wraps `node.pending.ack`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `itemId` (string)
- `nodeId` (string, required)

### `openclaw_node_canvas_capability_refresh` (~100 tokens)

Refresh the canvas capability map for nodes (re-registers what each canvas node can do). Wraps `node.canvas.capability.refresh`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tts_status` (~94 tokens)

Get the TTS subsystem status (enabled, current provider, voice). Wraps `tts.status`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tts_enable` (~84 tokens)

Enable text-to-speech output. Wraps `tts.enable`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tts_disable` (~84 tokens)

Disable text-to-speech output. Wraps `tts.disable`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tts_providers` (~93 tokens)

List available TTS providers (and their voices / models). Wraps `tts.providers`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_tts_setProvider` (~109 tokens)

Switch the active TTS provider / voice. Wraps `tts.setProvider`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `model` (string)
- `provider` (string, required)
- `voice` (string)

### `openclaw_tts_convert` (~112 tokens)

Synthesize a piece of text to audio. Wraps `tts.convert`. Returns audio / a download URL depending on the gateway config.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `text` (string, required)
- `voice` (string)

### `openclaw_talk_config` (~98 tokens)

Get / set the talk-mode config (push-to-talk, hold-to-listen, voice activity detection). Wraps `talk.config`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_talk_mode` (~150 tokens)

Toggle talk mode on/off. Wraps `talk.mode`. Wire format (verified live against gateway 2026.4.12+): requires `enabled: boolean` — this is a SETTER, not a getter. Use `openclaw_talk_config` to read the current state.

Input parameters:

- `enabled` (boolean, required): True to turn talk mode on, false to turn it off.
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_talk_speak` (~104 tokens)

Make the agent speak a piece of text out loud (synthesizes + plays). Wraps `talk.speak`.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `text` (string, required)

### `openclaw_voicewake_get` (~95 tokens)

Get the voice-wake configuration (wake word, sensitivity, enabled). Wraps `voicewake.get`. Read-only.

Input parameters:

- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…

### `openclaw_voicewake_set` (~100 tokens)

Update the voice-wake configuration. Wraps `voicewake.set`.

Input parameters:

- `enabled` (boolean)
- `instance` (string): Optional OpenClaw instance to route this call to (e.g. 'default', 'work'). Falls back to the active default instance, or the OPENCLAW_GATEWAY_URL/TOKEN env vars when set. List configured instances wi…
- `wakeWord` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 65
- 2026-08-01: 19
- 2026-07-31: 24
- 2026-07-30: 25
- 2026-07-28: 24
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/openclaw-control-mcp
- Socket report: https://socket.dev/npm/package/openclaw-control-mcp
- Repository: https://github.com/smurfy92/openclaw-control-mcp
- Changelog RSS feed: https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/smurfy92-openclaw-control-mcp/openclaw-control-mcp
