Files
adolf/test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/codex-dynamic-tools.telegram-direct.json
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

1346 lines
47 KiB
JSON

[
{
"description": "Send/delete/manage channel messages. Supports actions: send.",
"inputSchema": {
"properties": {
"accountId": {
"type": "string"
},
"action": {
"enum": ["send"],
"type": "string"
},
"asDocument": {
"description": "Alias for forceDocument.",
"type": "boolean"
},
"asVoice": {
"type": "boolean"
},
"attachments": {
"description": "Structured attachments; each entry uses media.",
"items": {
"properties": {
"media": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"enum": ["image", "audio", "video", "file"],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"buffer": {
"description": "Base64 attachment payload; data URL ok.",
"type": "string"
},
"caption": {
"type": "string"
},
"channel": {
"type": "string"
},
"contentType": {
"type": "string"
},
"dryRun": {
"type": "boolean"
},
"effect": {
"description": "Alias for effectId.",
"type": "string"
},
"effectId": {
"description": "Effect id/name for sendWithEffect.",
"type": "string"
},
"filename": {
"type": "string"
},
"forceDocument": {
"description": "Send image/GIF/video as document; avoids compression.",
"type": "boolean"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"gifPlayback": {
"type": "boolean"
},
"media": {
"description": "Media URL/path. data: use buffer.",
"type": "string"
},
"message": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"quoteText": {
"description": "Telegram reply quote text.",
"type": "string"
},
"replyTo": {
"type": "string"
},
"silent": {
"type": "boolean"
},
"target": {
"description": "Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost <channelId|user:ID|channel:ID>, or iMessage handle/chat_id",
"type": "string"
},
"targets": {
"items": {
"description": "Recipient/channel targets (same format as --target); accepts ids or names when the directory is available.",
"type": "string"
},
"type": "array"
},
"threadId": {
"type": "string"
},
"timeoutMs": {
"minimum": 1,
"type": "integer"
}
},
"required": ["action"],
"type": "object"
},
"name": "message",
"type": "function"
},
{
"description": "List agent ids allowed for `sessions_spawn runtime=\"subagent\"`.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "agents_list",
"type": "function"
},
{
"description": "Spawn clean child session; default `runtime=\"subagent\"`. `mode=\"run\"` one-shot background work. Subagents inherit parent workspace. Native subagents get task in first visible `[Subagent Task]` message. Native only: `context=\"fork\"` only when child needs current transcript; else omit or `isolated`. Use for fresh child-session work. Delegate sidecar/parallel tasks: batch file reads, multi-step searches, data collection. Avoid delegating quick lookups or single-file reads unless policy prefers delegation. After spawning, do non-overlapping work while run-mode results return.",
"inputSchema": {
"properties": {
"agentId": {
"type": "string"
},
"attachAs": {
"properties": {
"mountPath": {
"type": "string"
}
},
"type": "object"
},
"attachments": {
"items": {
"properties": {
"content": {
"type": "string"
},
"encoding": {
"enum": ["utf8", "base64"],
"type": "string"
},
"mimeType": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": ["name", "content"],
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"cleanup": {
"enum": ["delete", "keep"],
"type": "string"
},
"context": {
"description": "Native context. Omit/\"isolated\" for clean child; \"fork\" only when child needs requester transcript.",
"enum": ["isolated", "fork"],
"type": "string"
},
"cwd": {
"type": "string"
},
"label": {
"type": "string"
},
"lightContext": {
"description": "Light bootstrap context; runtime=\"subagent\" only.",
"type": "boolean"
},
"mode": {
"enum": ["run"],
"type": "string"
},
"model": {
"type": "string"
},
"runtime": {
"enum": ["subagent"],
"type": "string"
},
"sandbox": {
"enum": ["inherit", "require"],
"type": "string"
},
"task": {
"type": "string"
},
"taskName": {
"description": "Stable alias for later targeting; lowercase letters/digits/underscores/hyphens, starts letter.",
"type": "string"
},
"thinking": {
"type": "string"
}
},
"required": ["task"],
"type": "object"
},
"name": "sessions_spawn",
"type": "function"
},
{
"description": "End current turn. Use after spawning subagents; results arrive as next message.",
"inputSchema": {
"properties": {
"message": {
"type": "string"
}
},
"type": "object"
},
"name": "sessions_yield",
"type": "function"
},
{
"description": "",
"name": "openclaw",
"tools": [
{
"deferLoading": true,
"description": "Discover/control paired nodes: status, describe, pairing, notify, camera/photos/screen/location/notifications/invoke. Use file_fetch for files.",
"inputSchema": {
"properties": {
"action": {
"enum": [
"status",
"describe",
"pending",
"approve",
"reject",
"notify",
"camera_snap",
"camera_list",
"camera_clip",
"photos_latest",
"screen_record",
"screen_snapshot",
"location_get",
"notifications_list",
"notifications_action",
"device_status",
"device_info",
"device_permissions",
"device_health",
"invoke"
],
"type": "string"
},
"body": {
"type": "string"
},
"delayMs": {
"minimum": 0,
"type": "integer"
},
"delivery": {
"enum": ["system", "overlay", "auto"],
"type": "string"
},
"desiredAccuracy": {
"enum": ["coarse", "balanced", "precise"],
"type": "string"
},
"deviceId": {
"type": "string"
},
"duration": {
"type": "string"
},
"durationMs": {
"maximum": 300000,
"minimum": 1,
"type": "integer"
},
"facing": {
"description": "camera_snap: front/back/both; camera_clip: front/back only.",
"enum": ["front", "back", "both"],
"type": "string"
},
"fps": {
"exclusiveMinimum": 0,
"type": "number"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"includeAudio": {
"type": "boolean"
},
"invokeCommand": {
"type": "string"
},
"invokeParamsJson": {
"type": "string"
},
"invokeTimeoutMs": {
"minimum": 1,
"type": "integer"
},
"limit": {
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"locationTimeoutMs": {
"minimum": 1,
"type": "integer"
},
"maxAgeMs": {
"minimum": 0,
"type": "integer"
},
"maxWidth": {
"minimum": 1,
"type": "integer"
},
"node": {
"type": "string"
},
"notificationAction": {
"enum": ["open", "dismiss", "reply"],
"type": "string"
},
"notificationKey": {
"type": "string"
},
"notificationReplyText": {
"type": "string"
},
"outPath": {
"type": "string"
},
"priority": {
"enum": ["passive", "active", "timeSensitive"],
"type": "string"
},
"quality": {
"maximum": 1,
"minimum": 0,
"type": "number"
},
"requestId": {
"type": "string"
},
"screenIndex": {
"minimum": 0,
"type": "integer"
},
"sound": {
"type": "string"
},
"timeoutMs": {
"minimum": 1,
"type": "integer"
},
"title": {
"type": "string"
}
},
"required": ["action"],
"type": "object"
},
"name": "nodes",
"type": "function"
},
{
"deferLoading": true,
"description": "Manage Gateway cron jobs and wake events: reminders, check-back-later, delayed follow-ups, recurring work. Do not emulate scheduling with exec sleep/process polling.\n\nMain cron => system events for heartbeat. Isolated cron => background task in `openclaw tasks`.\n\nACTIONS:\n- status: scheduler status\n- list: compact job summaries; includeDisabled true includes disabled; use get for full job details; agentId filter auto-filled from session\n- get: one job; needs jobId\n- add: create job; needs job object\n- update: patch job; needs jobId + patch\n- remove: delete job; needs jobId\n- run: run only if due by default; needs jobId; pass runMode=\"force\" to trigger now\n- runs: run history; needs jobId\n- wake: send wake event; needs text, optional mode; defaults the target to the calling session/agent. Pass top-level sessionKey/agentId to wake a different lane owned by the calling agent.\n\nJOB SCHEMA (for add action):\n{\n \"name\": \"string\",\n \"schedule\": { ... }, // required\n \"payload\": { ... }, // required\n \"delivery\": { ... }, // optional announce for isolated/current/session, webhook for any target\n \"sessionTarget\": \"main\" | \"isolated\" | \"current\" | \"session:<id>\",\n \"enabled\": true | false // default true\n}\n\nSESSION TARGET OPTIONS:\n- \"main\": main session; requires payload.kind=\"systemEvent\"\n- \"isolated\": ephemeral isolated session; requires payload.kind=\"agentTurn\"\n- \"current\": bind current session at creation\n- \"session:<id>\": persistent named session\n\nDEFAULTS:\n- payload.kind=\"systemEvent\" → defaults to \"main\"\n- payload.kind=\"agentTurn\" → defaults to \"isolated\"\nCurrent binding needs sessionTarget=\"current\".\n\nSCHEDULE TYPES (schedule.kind):\n- \"at\": one-shot absolute time\n { \"kind\": \"at\", \"at\": \"<ISO-8601 timestamp>\" }\n- \"every\": recurring interval\n { \"kind\": \"every\", \"everyMs\": <ms>, \"anchorMs\": <optional-ms> }\n- \"cron\": expr in supplied timezone, or Gateway host local timezone when tz omitted\n { \"kind\": \"cron\", \"expr\": \"<cron-expression>\", \"tz\": \"<optional-IANA-timezone>\" }\n Write expr in local wall-clock time; do not convert the requested local time to UTC first.\n tz omitted => Gateway host local timezone, not UTC.\n Example 6pm Shanghai daily: { \"kind\": \"cron\", \"expr\": \"0 18 * * *\", \"tz\": \"Asia/Shanghai\" }\n\nFor \"at\", ISO timestamps without timezone are UTC.\n\nPAYLOAD TYPES (payload.kind):\n- \"systemEvent\": inject text as system event\n { \"kind\": \"systemEvent\", \"text\": \"<message>\" }\n- \"agentTurn\": run agent with prompt; isolated/current/session only\n { \"kind\": \"agentTurn\", \"message\": \"<prompt>\", \"model\": \"<optional>\", \"thinking\": \"<optional>\", \"timeoutSeconds\": <optional, 0=no timeout> }\n\nDELIVERY (top-level):\n { \"mode\": \"none|announce|webhook\", \"channel\": \"<optional>\", \"to\": \"<optional>\", \"threadId\": \"<optional>\", \"bestEffort\": <optional-bool> }\n - isolated agentTurn default when omitted: \"announce\"\n - announce: send to chat channel; isolated/current/session only; optional channel/to\n - threadId: chat thread/topic id\n - webhook: POST finished-run event to delivery.to URL\n - Specific chat/recipient: set announce delivery.channel/to; do not call messaging tools inside run.\n\nCRITICAL CONSTRAINTS:\n- sessionTarget=\"main\" REQUIRES payload.kind=\"systemEvent\"\n- sessionTarget=\"isolated\" | \"current\" | \"session:xxx\" REQUIRES payload.kind=\"agentTurn\"\n- Webhook: delivery.mode=\"webhook\" and delivery.to URL.\nDefault: prefer isolated agentTurn jobs unless the user explicitly wants current-session binding.\n\nRESTRICTED CRON RUNS:\n- Some isolated cron runs get narrow self-cleanup grant: status/list self-only, get/runs current job only, mutation only remove current job.\n\nWAKE MODES (for wake action):\n- \"next-heartbeat\" default: wake next heartbeat\n- \"now\": wake immediately\n\nUse jobId canonical; id accepted compat. contextMessages (0-10) adds previous messages as job context.",
"inputSchema": {
"additionalProperties": true,
"properties": {
"action": {
"enum": ["status", "list", "get", "add", "update", "remove", "run", "runs", "wake"],
"type": "string"
},
"agentId": {
"description": "List filter for `action: \"list\"`; wake target override for `action: \"wake\"` (defaults to the calling agent when omitted on wake)",
"type": "string"
},
"contextMessages": {
"maximum": 10,
"minimum": 0,
"type": "integer"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"id": {
"type": "string"
},
"includeDisabled": {
"type": "boolean"
},
"job": {
"additionalProperties": true,
"properties": {
"agentId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Agent id, or null to keep it unset"
},
"deleteAfterRun": {
"description": "Delete after first run",
"type": "boolean"
},
"delivery": {
"additionalProperties": true,
"properties": {
"accountId": {
"description": "Delivery account",
"type": "string"
},
"bestEffort": {
"type": "boolean"
},
"channel": {
"description": "Delivery channel",
"type": "string"
},
"failureDestination": {
"additionalProperties": true,
"properties": {
"accountId": {
"description": "Failure delivery account",
"type": "string"
},
"channel": {
"description": "Failure delivery channel",
"type": "string"
},
"mode": {
"anyOf": [
{
"const": "announce",
"type": "string"
},
{
"const": "webhook",
"type": "string"
}
]
},
"to": {
"description": "Failure delivery target",
"type": "string"
}
},
"type": "object"
},
"mode": {
"description": "Delivery mode",
"enum": ["none", "announce", "webhook"],
"type": "string"
},
"threadId": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Thread/topic id"
},
"to": {
"description": "Delivery target",
"type": "string"
}
},
"type": "object"
},
"description": {
"description": "Human description",
"type": "string"
},
"enabled": {
"type": "boolean"
},
"failureAlert": {
"additionalProperties": true,
"description": "Failure alert object; false disables alerts",
"properties": {
"accountId": {
"type": "string"
},
"after": {
"description": "Failures before alert",
"minimum": 1,
"type": "integer"
},
"channel": {
"description": "Alert channel",
"type": "string"
},
"cooldownMs": {
"description": "Alert cooldown ms",
"minimum": 0,
"type": "integer"
},
"includeSkipped": {
"description": "Skipped runs count toward alert",
"type": "boolean"
},
"mode": {
"enum": ["announce", "webhook"],
"type": "string"
},
"to": {
"description": "Alert target",
"type": "string"
}
},
"type": "object"
},
"name": {
"description": "Job name",
"type": "string"
},
"payload": {
"additionalProperties": true,
"properties": {
"allowUnsafeExternalContent": {
"type": "boolean"
},
"fallbacks": {
"description": "Fallback models",
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"description": "Payload kind",
"enum": ["systemEvent", "agentTurn"],
"type": "string"
},
"lightContext": {
"type": "boolean"
},
"message": {
"description": "agentTurn prompt",
"type": "string"
},
"model": {
"description": "Model override",
"type": "string"
},
"text": {
"description": "systemEvent text",
"type": "string"
},
"thinking": {
"description": "Thinking override",
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "number"
},
"toolsAllow": {
"description": "Allowed tools",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"schedule": {
"additionalProperties": true,
"properties": {
"anchorMs": {
"description": "Start anchor ms (kind=every)",
"minimum": 0,
"type": "integer"
},
"at": {
"description": "ISO-8601 time (kind=at)",
"type": "string"
},
"everyMs": {
"description": "Interval ms (kind=every)",
"minimum": 1,
"type": "integer"
},
"expr": {
"description": "Cron expr in tz wall-clock time; do not convert to UTC. Omitted tz => Gateway host local timezone. Example 6pm Shanghai daily: expr \"0 18 * * *\", tz \"Asia/Shanghai\".",
"type": "string"
},
"kind": {
"description": "Schedule kind",
"enum": ["at", "every", "cron"],
"type": "string"
},
"staggerMs": {
"description": "Jitter ms (kind=cron)",
"minimum": 0,
"type": "integer"
},
"tz": {
"description": "IANA timezone for cron wall-clock fields, e.g. \"Asia/Shanghai\"; omitted => Gateway host local timezone.",
"type": "string"
}
},
"type": "object"
},
"sessionKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Explicit session key, or null to clear it"
},
"sessionTarget": {
"description": "main | isolated | current | session:<id>",
"type": "string"
},
"wakeMode": {
"description": "Wake timing",
"enum": ["now", "next-heartbeat"],
"type": "string"
}
},
"type": "object"
},
"jobId": {
"type": "string"
},
"mode": {
"enum": ["now", "next-heartbeat"],
"type": "string"
},
"patch": {
"additionalProperties": true,
"properties": {
"agentId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Agent id, or null to clear it"
},
"deleteAfterRun": {
"type": "boolean"
},
"delivery": {
"additionalProperties": true,
"properties": {
"accountId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Delivery account, or null to clear"
},
"bestEffort": {
"type": "boolean"
},
"channel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Delivery channel, or null to clear"
},
"failureDestination": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"accountId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Failure delivery account, or null to clear"
},
"channel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Failure delivery channel, or null to clear"
},
"mode": {
"anyOf": [
{
"const": "announce",
"type": "string"
},
{
"const": "webhook",
"type": "string"
},
{
"type": "null"
}
]
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Failure delivery target, or null to clear"
}
},
"type": "object"
},
{
"type": "null"
}
],
"description": "Failure destination, or null to clear"
},
"mode": {
"description": "Delivery mode",
"enum": ["none", "announce", "webhook"],
"type": "string"
},
"threadId": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Thread/topic id"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Delivery target, or null to clear"
}
},
"type": "object"
},
"description": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"failureAlert": {
"additionalProperties": true,
"description": "Failure alert object; false disables alerts",
"properties": {
"accountId": {
"type": "string"
},
"after": {
"description": "Failures before alert",
"minimum": 1,
"type": "integer"
},
"channel": {
"description": "Alert channel",
"type": "string"
},
"cooldownMs": {
"description": "Alert cooldown ms",
"minimum": 0,
"type": "integer"
},
"includeSkipped": {
"description": "Skipped runs count toward alert",
"type": "boolean"
},
"mode": {
"enum": ["announce", "webhook"],
"type": "string"
},
"to": {
"description": "Alert target",
"type": "string"
}
},
"type": "object"
},
"name": {
"description": "Job name",
"type": "string"
},
"payload": {
"additionalProperties": true,
"properties": {
"allowUnsafeExternalContent": {
"type": "boolean"
},
"fallbacks": {
"description": "Fallback models",
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"description": "Payload kind",
"enum": ["systemEvent", "agentTurn"],
"type": "string"
},
"lightContext": {
"type": "boolean"
},
"message": {
"description": "agentTurn prompt",
"type": "string"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Model override, or null to clear"
},
"text": {
"description": "systemEvent text",
"type": "string"
},
"thinking": {
"description": "Thinking override",
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "number"
},
"toolsAllow": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Allowed tool ids, or null to clear"
}
},
"type": "object"
},
"schedule": {
"additionalProperties": true,
"properties": {
"anchorMs": {
"description": "Start anchor ms (kind=every)",
"minimum": 0,
"type": "integer"
},
"at": {
"description": "ISO-8601 time (kind=at)",
"type": "string"
},
"everyMs": {
"description": "Interval ms (kind=every)",
"minimum": 1,
"type": "integer"
},
"expr": {
"description": "Cron expr in tz wall-clock time; do not convert to UTC. Omitted tz => Gateway host local timezone. Example 6pm Shanghai daily: expr \"0 18 * * *\", tz \"Asia/Shanghai\".",
"type": "string"
},
"kind": {
"description": "Schedule kind",
"enum": ["at", "every", "cron"],
"type": "string"
},
"staggerMs": {
"description": "Jitter ms (kind=cron)",
"minimum": 0,
"type": "integer"
},
"tz": {
"description": "IANA timezone for cron wall-clock fields, e.g. \"Asia/Shanghai\"; omitted => Gateway host local timezone.",
"type": "string"
}
},
"type": "object"
},
"sessionKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Explicit session key, or null to clear it"
},
"sessionTarget": {
"description": "Session target",
"type": "string"
},
"wakeMode": {
"enum": ["now", "next-heartbeat"],
"type": "string"
}
},
"type": "object"
},
"runMode": {
"description": "Run mode for action=\"run\": omitted defaults to \"due\"; use \"force\" to trigger now.",
"enum": ["due", "force"],
"type": "string"
},
"sessionKey": {
"description": "Wake target override for `action: \"wake\"`: route the event to another session owned by the calling agent. Defaults to the resolved calling-session key when omitted.",
"type": "string"
},
"text": {
"type": "string"
},
"timeoutMs": {
"minimum": 1,
"type": "integer"
}
},
"required": ["action"],
"type": "object"
},
"name": "cron",
"type": "function"
},
{
"deferLoading": true,
"description": "Use only for explicit audio intent (voice/speech/TTS) or active TTS config. Never use for ordinary text replies. Audio auto-delivered from tool result; after success follow reply instructions, no duplicate text/audio.",
"inputSchema": {
"properties": {
"channel": {
"description": "Channel id; output-format hint.",
"type": "string"
},
"text": {
"description": "Text to speak.",
"type": "string"
},
"timeoutMs": {
"description": "Provider timeout ms.",
"minimum": 1,
"type": "integer"
}
},
"required": ["text"],
"type": "object"
},
"name": "tts",
"type": "function"
},
{
"deferLoading": true,
"description": "Gateway restart/config/update. Before config edits, use config.schema.lookup with targeted dot path. Prefer config.patch for partial merge; config.apply only full replace. For config.patch that intentionally removes array entries, pass replacePaths with the exact affected array path. Writes hot-reload or restart as needed. Always pass human `note` for post-restart delivery. If post-restart work must continue internally, pass one-shot `continuationMessage`; visible follow-up from that turn must use the message tool. Do not write restart sentinel files directly.",
"inputSchema": {
"properties": {
"action": {
"enum": [
"restart",
"config.get",
"config.schema.lookup",
"config.apply",
"config.patch",
"update.run"
],
"type": "string"
},
"baseHash": {
"type": "string"
},
"continuationMessage": {
"type": "string"
},
"delayMs": {
"minimum": 0,
"type": "integer"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"note": {
"type": "string"
},
"path": {
"type": "string"
},
"raw": {
"type": "string"
},
"reason": {
"type": "string"
},
"replacePaths": {
"items": {
"type": "string"
},
"maxItems": 256,
"type": "array"
},
"restartDelayMs": {
"minimum": 0,
"type": "integer"
},
"sessionKey": {
"type": "string"
},
"timeoutMs": {
"minimum": 1,
"type": "integer"
}
},
"required": ["action"],
"type": "object"
},
"name": "gateway",
"type": "function"
},
{
"deferLoading": true,
"description": "List visible sessions; filter by kind, label, agentId, search, activity, archive state. Use before sessions_history or sessions_send target selection.",
"inputSchema": {
"properties": {
"activeMinutes": {
"minimum": 1,
"type": "integer"
},
"agentId": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"archived": {
"type": "boolean"
},
"includeDerivedTitles": {
"type": "boolean"
},
"includeLastMessage": {
"type": "boolean"
},
"kinds": {
"items": {
"type": "string"
},
"type": "array"
},
"label": {
"minLength": 1,
"type": "string"
},
"limit": {
"minimum": 1,
"type": "integer"
},
"messageLimit": {
"minimum": 0,
"type": "integer"
},
"search": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "sessions_list",
"type": "function"
},
{
"deferLoading": true,
"description": "Fetch sanitized history for visible session. Use before replying, debugging, resuming; supports limit, offset pagination, and tool-message inclusion.",
"inputSchema": {
"properties": {
"includeTools": {
"type": "boolean"
},
"limit": {
"minimum": 1,
"type": "integer"
},
"offset": {
"minimum": 0,
"type": "integer"
},
"sessionKey": {
"type": "string"
}
},
"required": ["sessionKey"],
"type": "object"
},
"name": "sessions_history",
"type": "function"
},
{
"deferLoading": true,
"description": "Send message to visible session by sessionKey/label, or configured agent by agentId; sessionKey wins when redundant label metadata is present. Thread-scoped chats rejected; target parent channel session. Creates missing configured-agent main session; waits for reply when available.",
"inputSchema": {
"properties": {
"agentId": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"label": {
"maxLength": 512,
"minLength": 1,
"type": "string"
},
"message": {
"type": "string"
},
"sessionKey": {
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "integer"
}
},
"required": ["message"],
"type": "object"
},
"name": "sessions_send",
"type": "function"
},
{
"deferLoading": true,
"description": "List active and recent subagents for the requester session. If sessions_yield exists, use it for completion; do not poll wait loops.",
"inputSchema": {
"properties": {
"action": {
"enum": ["list"],
"type": "string"
},
"recentMinutes": {
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "subagents",
"type": "function"
},
{
"deferLoading": true,
"description": "Show /status-like card for current/visible session: model, usage, time, cost, tasks. Use `sessionKey=\"current\"` for current session; UI labels like `openclaw-tui` are not keys. `model` sets session override; `model=default` resets. Use for active model/session config questions.",
"inputSchema": {
"properties": {
"model": {
"type": "string"
},
"sessionKey": {
"type": "string"
}
},
"type": "object"
},
"name": "session_status",
"type": "function"
},
{
"deferLoading": true,
"description": "Search web for current info; returns normalized provider results.",
"inputSchema": {
"properties": {
"count": {
"description": "Result count.",
"maximum": 10,
"minimum": 1,
"type": "number"
},
"country": {
"description": "2-letter country code.",
"type": "string"
},
"date_after": {
"description": "Published after YYYY-MM-DD.",
"type": "string"
},
"date_before": {
"description": "Published before YYYY-MM-DD.",
"type": "string"
},
"domain_filter": {
"description": "Perplexity domain filter.",
"items": {
"type": "string"
},
"type": "array"
},
"freshness": {
"description": "Time filter: day/week/month/year.",
"type": "string"
},
"language": {
"description": "ISO 639-1 language.",
"type": "string"
},
"max_tokens": {
"description": "Perplexity total token budget.",
"maximum": 1000000,
"minimum": 1,
"type": "number"
},
"max_tokens_per_page": {
"description": "Perplexity tokens per page.",
"minimum": 1,
"type": "number"
},
"query": {
"description": "Search query.",
"type": "string"
},
"search_lang": {
"description": "Brave result language.",
"type": "string"
},
"ui_lang": {
"description": "Brave UI locale.",
"type": "string"
}
},
"required": ["query"],
"type": "object"
},
"name": "web_search",
"type": "function"
},
{
"deferLoading": true,
"description": "Fetch URL and extract readable markdown/text. Lightweight page access; no browser automation.",
"inputSchema": {
"properties": {
"extractMode": {
"default": "markdown",
"description": "Extract as markdown/text.",
"enum": ["markdown", "text"],
"type": "string"
},
"maxChars": {
"description": "Max chars returned; truncates.",
"minimum": 100,
"type": "integer"
},
"url": {
"description": "HTTP(S) URL.",
"type": "string"
}
},
"required": ["url"],
"type": "object"
},
"name": "web_fetch",
"type": "function"
}
],
"type": "namespace"
}
]