Files
openclaw/test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/codex-dynamic-tools.telegram-direct.json
pashpashpash bcb2476ae7 Rename Codex runtime prompt snapshot directory (#76274)
* test: rename Codex runtime prompt snapshots

* test: refresh prompt snapshots with node24

* test: format prompt snapshot markdown in generator
2026-05-03 07:34:59 +09:00

1472 lines
47 KiB
JSON

[
{
"description": "Control node canvases (present/hide/navigate/eval/snapshot/A2UI). Use snapshot to capture the rendered UI.",
"inputSchema": {
"properties": {
"action": {
"enum": ["present", "hide", "navigate", "eval", "snapshot", "a2ui_push", "a2ui_reset"],
"type": "string"
},
"delayMs": {
"type": "number"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"height": {
"type": "number"
},
"javaScript": {
"type": "string"
},
"jsonl": {
"type": "string"
},
"jsonlPath": {
"type": "string"
},
"maxWidth": {
"type": "number"
},
"node": {
"type": "string"
},
"outputFormat": {
"enum": ["png", "jpg", "jpeg"],
"type": "string"
},
"quality": {
"type": "number"
},
"target": {
"type": "string"
},
"timeoutMs": {
"type": "number"
},
"url": {
"type": "string"
},
"width": {
"type": "number"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": ["action"],
"type": "object"
},
"name": "canvas"
},
{
"description": "Discover and control paired nodes (status/describe/pairing/notify/camera/photos/screen/location/notifications/invoke). For file retrieval, use the dedicated file_fetch tool.",
"inputSchema": {
"properties": {
"action": {
"enum": [
"status",
"describe",
"pending",
"approve",
"reject",
"notify",
"camera_snap",
"camera_list",
"camera_clip",
"photos_latest",
"screen_record",
"location_get",
"notifications_list",
"notifications_action",
"device_status",
"device_info",
"device_permissions",
"device_health",
"invoke"
],
"type": "string"
},
"body": {
"type": "string"
},
"delayMs": {
"type": "number"
},
"delivery": {
"enum": ["system", "overlay", "auto"],
"type": "string"
},
"desiredAccuracy": {
"enum": ["coarse", "balanced", "precise"],
"type": "string"
},
"deviceId": {
"type": "string"
},
"duration": {
"type": "string"
},
"durationMs": {
"maximum": 300000,
"type": "number"
},
"facing": {
"description": "camera_snap: front/back/both; camera_clip: front/back only.",
"enum": ["front", "back", "both"],
"type": "string"
},
"fps": {
"type": "number"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"includeAudio": {
"type": "boolean"
},
"invokeCommand": {
"type": "string"
},
"invokeParamsJson": {
"type": "string"
},
"invokeTimeoutMs": {
"type": "number"
},
"limit": {
"type": "number"
},
"locationTimeoutMs": {
"type": "number"
},
"maxAgeMs": {
"type": "number"
},
"maxWidth": {
"type": "number"
},
"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": {
"type": "number"
},
"requestId": {
"type": "string"
},
"screenIndex": {
"type": "number"
},
"sound": {
"type": "string"
},
"timeoutMs": {
"type": "number"
},
"title": {
"type": "string"
}
},
"required": ["action"],
"type": "object"
},
"name": "nodes"
},
{
"description": "Manage Gateway cron jobs (status/list/add/update/remove/run/runs) and send wake events. Use this for reminders, \"check back later\" requests, delayed follow-ups, and recurring tasks. Do not emulate scheduling with exec sleep or process polling.\n\nMain-session cron jobs enqueue system events for heartbeat handling. Isolated cron jobs create background task runs that appear in `openclaw tasks`.\n\nACTIONS:\n- status: Check cron scheduler status\n- list: List jobs (use includeDisabled:true to include disabled)\n- add: Create job (requires job object, see schema below)\n- update: Modify job (requires jobId + patch object)\n- remove: Delete job (requires jobId)\n- run: Trigger job immediately (requires jobId)\n- runs: Get job run history (requires jobId)\n- wake: Send wake event (requires text, optional mode)\n\nJOB SCHEMA (for add action):\n{\n \"name\": \"string (optional)\",\n \"schedule\": { ... }, // Required: when to run\n \"payload\": { ... }, // Required: what to execute\n \"delivery\": { ... }, // Optional: announce summary (isolated/current/session:xxx only) or webhook POST\n \"sessionTarget\": \"main\" | \"isolated\" | \"current\" | \"session:<custom-id>\", // Optional, defaults based on context\n \"enabled\": true | false // Optional, default true\n}\n\nSESSION TARGET OPTIONS:\n- \"main\": Run in the main session (requires payload.kind=\"systemEvent\")\n- \"isolated\": Run in an ephemeral isolated session (requires payload.kind=\"agentTurn\")\n- \"current\": Bind to the current session where the cron is created (resolved at creation time)\n- \"session:<custom-id>\": Run in a persistent named session (e.g., \"session:project-alpha-daily\")\n\nDEFAULT BEHAVIOR (unchanged for backward compatibility):\n- payload.kind=\"systemEvent\" → defaults to \"main\"\n- payload.kind=\"agentTurn\" → defaults to \"isolated\"\nTo use current session binding, explicitly set sessionTarget=\"current\".\n\nSCHEDULE TYPES (schedule.kind):\n- \"at\": One-shot at absolute time\n { \"kind\": \"at\", \"at\": \"<ISO-8601 timestamp>\" }\n- \"every\": Recurring interval\n { \"kind\": \"every\", \"everyMs\": <interval-ms>, \"anchorMs\": <optional-start-ms> }\n- \"cron\": Cron expression evaluated in the supplied timezone, or the Gateway host local timezone when tz is omitted\n { \"kind\": \"cron\", \"expr\": \"<cron-expression>\", \"tz\": \"<optional-IANA-timezone>\" }\n Write expr in the selected timezone's local wall-clock time; do not convert the requested local time to UTC first.\n If tz is omitted, do not assume UTC; the Gateway host local timezone is used.\n Example: \"Remind me every day at 6pm Shanghai time\" -> { \"kind\": \"cron\", \"expr\": \"0 18 * * *\", \"tz\": \"Asia/Shanghai\" }\n\nFor schedule.kind=\"at\", ISO timestamps without an explicit timezone are treated as UTC.\n\nPAYLOAD TYPES (payload.kind):\n- \"systemEvent\": Injects text as system event into session\n { \"kind\": \"systemEvent\", \"text\": \"<message>\" }\n- \"agentTurn\": Runs agent with message (isolated sessions only)\n { \"kind\": \"agentTurn\", \"message\": \"<prompt>\", \"model\": \"<optional>\", \"thinking\": \"<optional>\", \"timeoutSeconds\": <optional, 0 means no timeout> }\n\nDELIVERY (top-level):\n { \"mode\": \"none|announce|webhook\", \"channel\": \"<optional>\", \"to\": \"<optional>\", \"threadId\": \"<optional>\", \"bestEffort\": <optional-bool> }\n - Default for isolated agentTurn jobs (when delivery omitted): \"announce\"\n - announce: send to chat channel (optional channel/to target)\n - threadId: chat thread/topic id for channels that support threaded delivery\n - webhook: send finished-run event as HTTP POST to delivery.to (URL required)\n - If the task needs to send to a specific chat/recipient, set announce delivery.channel/to; do not call messaging tools inside the run.\n\nCRITICAL CONSTRAINTS:\n- sessionTarget=\"main\" REQUIRES payload.kind=\"systemEvent\"\n- sessionTarget=\"isolated\" | \"current\" | \"session:xxx\" REQUIRES payload.kind=\"agentTurn\"\n- For webhook callbacks, use delivery.mode=\"webhook\" with delivery.to set to a URL.\nDefault: prefer isolated agentTurn jobs unless the user explicitly wants current-session binding.\n\nWAKE MODES (for wake action):\n- \"next-heartbeat\" (default): Wake on next heartbeat\n- \"now\": Wake immediately\n\nUse jobId as the canonical identifier; id is accepted for compatibility. Use contextMessages (0-10) to add previous messages as context to the job text.",
"inputSchema": {
"additionalProperties": true,
"properties": {
"action": {
"enum": ["status", "list", "add", "update", "remove", "run", "runs", "wake"],
"type": "string"
},
"contextMessages": {
"maximum": 10,
"minimum": 0,
"type": "number"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"id": {
"type": "string"
},
"includeDisabled": {
"type": "boolean"
},
"job": {
"additionalProperties": true,
"properties": {
"agentId": {
"description": "Agent id, or null to keep it unset",
"type": "string"
},
"deleteAfterRun": {
"description": "Delete after first execution",
"type": "boolean"
},
"delivery": {
"additionalProperties": true,
"properties": {
"accountId": {
"description": "Account target for delivery",
"type": "string"
},
"bestEffort": {
"type": "boolean"
},
"channel": {
"description": "Delivery channel",
"type": "string"
},
"failureDestination": {
"additionalProperties": true,
"properties": {
"accountId": {
"type": "string"
},
"channel": {
"type": "string"
},
"mode": {
"enum": ["announce", "webhook"],
"type": "string"
},
"to": {
"type": "string"
}
},
"type": "object"
},
"mode": {
"description": "Delivery mode",
"enum": ["none", "announce", "webhook"],
"type": "string"
},
"threadId": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Thread/topic id for channels that support threaded delivery"
},
"to": {
"description": "Delivery target",
"type": "string"
}
},
"type": "object"
},
"description": {
"description": "Human-readable description",
"type": "string"
},
"enabled": {
"type": "boolean"
},
"failureAlert": {
"additionalProperties": true,
"description": "Failure alert config object, or the boolean value false to disable alerts for this job",
"properties": {
"accountId": {
"type": "string"
},
"after": {
"description": "Failures before alerting",
"type": "number"
},
"channel": {
"description": "Alert channel",
"type": "string"
},
"cooldownMs": {
"description": "Cooldown between alerts in ms",
"type": "number"
},
"includeSkipped": {
"description": "Count consecutive skipped runs toward alerting",
"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 model ids",
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"description": "Payload type",
"enum": ["systemEvent", "agentTurn"],
"type": "string"
},
"lightContext": {
"type": "boolean"
},
"message": {
"description": "Agent prompt (kind=agentTurn)",
"type": "string"
},
"model": {
"description": "Model override",
"type": "string"
},
"text": {
"description": "Message text (kind=systemEvent)",
"type": "string"
},
"thinking": {
"description": "Thinking level override",
"type": "string"
},
"timeoutSeconds": {
"type": "number"
},
"toolsAllow": {
"description": "Allowed tool ids",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"schedule": {
"additionalProperties": true,
"properties": {
"anchorMs": {
"description": "Optional start anchor in milliseconds (kind=every)",
"type": "number"
},
"at": {
"description": "ISO-8601 timestamp (kind=at)",
"type": "string"
},
"everyMs": {
"description": "Interval in milliseconds (kind=every)",
"type": "number"
},
"expr": {
"description": "Cron expression (kind=cron) written in the supplied tz's local wall-clock time, or the Gateway host local timezone when tz is omitted; do not convert the requested local time to UTC first. Example: 6pm Shanghai daily is \"0 18 * * *\" with tz \"Asia/Shanghai\".",
"type": "string"
},
"kind": {
"description": "Schedule type",
"enum": ["at", "every", "cron"],
"type": "string"
},
"staggerMs": {
"description": "Random jitter in ms (kind=cron)",
"type": "number"
},
"tz": {
"description": "IANA timezone for interpreting cron wall-clock fields (kind=cron), e.g. \"Asia/Shanghai\"; if omitted, cron uses the Gateway host local timezone.",
"type": "string"
}
},
"type": "object"
},
"sessionKey": {
"description": "Explicit session key, or null to clear it",
"type": "string"
},
"sessionTarget": {
"description": "Session target: \"main\", \"isolated\", \"current\", or \"session:<id>\"",
"type": "string"
},
"wakeMode": {
"description": "When to wake the session",
"enum": ["now", "next-heartbeat"],
"type": "string"
}
},
"type": "object"
},
"jobId": {
"type": "string"
},
"mode": {
"enum": ["now", "next-heartbeat"],
"type": "string"
},
"patch": {
"additionalProperties": true,
"properties": {
"agentId": {
"description": "Agent id, or null to clear it",
"type": "string"
},
"deleteAfterRun": {
"type": "boolean"
},
"delivery": {
"additionalProperties": true,
"properties": {
"accountId": {
"description": "Account target for delivery",
"type": "string"
},
"bestEffort": {
"type": "boolean"
},
"channel": {
"description": "Delivery channel",
"type": "string"
},
"failureDestination": {
"additionalProperties": true,
"properties": {
"accountId": {
"type": "string"
},
"channel": {
"type": "string"
},
"mode": {
"enum": ["announce", "webhook"],
"type": "string"
},
"to": {
"type": "string"
}
},
"type": "object"
},
"mode": {
"description": "Delivery mode",
"enum": ["none", "announce", "webhook"],
"type": "string"
},
"threadId": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Thread/topic id for channels that support threaded delivery"
},
"to": {
"description": "Delivery target",
"type": "string"
}
},
"type": "object"
},
"description": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"failureAlert": {
"additionalProperties": true,
"description": "Failure alert config object, or the boolean value false to disable alerts for this job",
"properties": {
"accountId": {
"type": "string"
},
"after": {
"description": "Failures before alerting",
"type": "number"
},
"channel": {
"description": "Alert channel",
"type": "string"
},
"cooldownMs": {
"description": "Cooldown between alerts in ms",
"type": "number"
},
"includeSkipped": {
"description": "Count consecutive skipped runs toward alerting",
"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 model ids",
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"description": "Payload type",
"enum": ["systemEvent", "agentTurn"],
"type": "string"
},
"lightContext": {
"type": "boolean"
},
"message": {
"description": "Agent prompt (kind=agentTurn)",
"type": "string"
},
"model": {
"description": "Model override",
"type": "string"
},
"text": {
"description": "Message text (kind=systemEvent)",
"type": "string"
},
"thinking": {
"description": "Thinking level override",
"type": "string"
},
"timeoutSeconds": {
"type": "number"
},
"toolsAllow": {
"description": "Allowed tool ids, or null to clear",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"schedule": {
"additionalProperties": true,
"properties": {
"anchorMs": {
"description": "Optional start anchor in milliseconds (kind=every)",
"type": "number"
},
"at": {
"description": "ISO-8601 timestamp (kind=at)",
"type": "string"
},
"everyMs": {
"description": "Interval in milliseconds (kind=every)",
"type": "number"
},
"expr": {
"description": "Cron expression (kind=cron) written in the supplied tz's local wall-clock time, or the Gateway host local timezone when tz is omitted; do not convert the requested local time to UTC first. Example: 6pm Shanghai daily is \"0 18 * * *\" with tz \"Asia/Shanghai\".",
"type": "string"
},
"kind": {
"description": "Schedule type",
"enum": ["at", "every", "cron"],
"type": "string"
},
"staggerMs": {
"description": "Random jitter in ms (kind=cron)",
"type": "number"
},
"tz": {
"description": "IANA timezone for interpreting cron wall-clock fields (kind=cron), e.g. \"Asia/Shanghai\"; if omitted, cron uses the Gateway host local timezone.",
"type": "string"
}
},
"type": "object"
},
"sessionKey": {
"description": "Explicit session key, or null to clear it",
"type": "string"
},
"sessionTarget": {
"description": "Session target",
"type": "string"
},
"wakeMode": {
"enum": ["now", "next-heartbeat"],
"type": "string"
}
},
"type": "object"
},
"runMode": {
"enum": ["due", "force"],
"type": "string"
},
"text": {
"type": "string"
},
"timeoutMs": {
"type": "number"
}
},
"required": ["action"],
"type": "object"
},
"name": "cron"
},
{
"description": "Send, delete, and manage messages via channel plugins. Supports actions: send.",
"inputSchema": {
"properties": {
"accountId": {
"type": "string"
},
"action": {
"enum": ["send"],
"type": "string"
},
"activityName": {
"description": "Activity name shown in sidebar (e.g. 'with fire'). Ignored for custom type.",
"type": "string"
},
"activityState": {
"description": "State text. For custom type this is the status text; for others it shows in the flyout.",
"type": "string"
},
"activityType": {
"description": "Activity type: playing, streaming, listening, watching, competing, custom.",
"type": "string"
},
"activityUrl": {
"description": "Streaming URL (Twitch or YouTube). Only used with streaming type; may not render for bots.",
"type": "string"
},
"after": {
"type": "string"
},
"appliedTags": {
"items": {
"type": "string"
},
"type": "array"
},
"around": {
"type": "string"
},
"asDocument": {
"description": "Send image/GIF as document to avoid Telegram compression. Alias for forceDocument (Telegram only).",
"type": "boolean"
},
"asVoice": {
"type": "boolean"
},
"authorId": {
"type": "string"
},
"authorIds": {
"items": {
"type": "string"
},
"type": "array"
},
"autoArchiveMin": {
"type": "number"
},
"before": {
"type": "string"
},
"bestEffort": {
"type": "boolean"
},
"buffer": {
"description": "Base64 payload for attachments (optionally a data: URL).",
"type": "string"
},
"caption": {
"type": "string"
},
"categoryId": {
"type": "string"
},
"channel": {
"type": "string"
},
"channelId": {
"description": "Channel id filter (search/thread list/event create).",
"type": "string"
},
"channelIds": {
"items": {
"description": "Channel id filter (repeatable).",
"type": "string"
},
"type": "array"
},
"chatId": {
"description": "Chat id for chat-scoped metadata actions.",
"type": "string"
},
"clearParent": {
"description": "Clear the parent/category when supported by the provider.",
"type": "boolean"
},
"contentType": {
"type": "string"
},
"deleteDays": {
"type": "number"
},
"desc": {
"type": "string"
},
"dryRun": {
"type": "boolean"
},
"durationMin": {
"type": "number"
},
"effect": {
"description": "Alias for effectId (e.g., invisible-ink, balloons).",
"type": "string"
},
"effectId": {
"description": "Message effect name/id for sendWithEffect (e.g., invisible ink).",
"type": "string"
},
"emoji": {
"type": "string"
},
"emojiName": {
"type": "string"
},
"endTime": {
"type": "string"
},
"eventName": {
"type": "string"
},
"eventType": {
"type": "string"
},
"fileId": {
"type": "string"
},
"filename": {
"type": "string"
},
"filePath": {
"type": "string"
},
"forceDocument": {
"description": "Send image/GIF as document to avoid Telegram compression (Telegram only).",
"type": "boolean"
},
"fromMe": {
"type": "boolean"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"gifPlayback": {
"type": "boolean"
},
"groupId": {
"type": "string"
},
"guildId": {
"type": "string"
},
"image": {
"description": "Cover image URL or local file path for the event.",
"type": "string"
},
"includeArchived": {
"type": "boolean"
},
"includeMembers": {
"type": "boolean"
},
"kind": {
"type": "string"
},
"limit": {
"type": "number"
},
"location": {
"type": "string"
},
"media": {
"description": "Media URL or local path. data: URLs are not supported here, use buffer.",
"type": "string"
},
"memberId": {
"type": "string"
},
"memberIdType": {
"type": "string"
},
"members": {
"type": "boolean"
},
"message": {
"type": "string"
},
"message_id": {
"description": "snake_case alias of messageId. If omitted for reaction-like actions, defaults to the current inbound message id when available.",
"type": "string"
},
"messageId": {
"description": "Target message id for read, reaction, edit, delete, pin, or unpin. If omitted for reaction-like actions, defaults to the current inbound message id when available.",
"type": "string"
},
"mimeType": {
"type": "string"
},
"name": {
"type": "string"
},
"nsfw": {
"type": "boolean"
},
"openId": {
"type": "string"
},
"pageSize": {
"type": "number"
},
"pageToken": {
"type": "string"
},
"parentId": {
"type": "string"
},
"participant": {
"type": "string"
},
"path": {
"type": "string"
},
"pollDurationHours": {
"type": "number"
},
"pollId": {
"type": "string"
},
"pollMulti": {
"type": "boolean"
},
"pollOption": {
"items": {
"type": "string"
},
"type": "array"
},
"pollOptionId": {
"description": "Poll answer id to vote for. Use when the channel exposes stable answer ids.",
"type": "string"
},
"pollOptionIds": {
"items": {
"description": "Poll answer ids to vote for in a multiselect poll. Use when the channel exposes stable answer ids.",
"type": "string"
},
"type": "array"
},
"pollOptionIndex": {
"description": "1-based poll option number to vote for, matching the rendered numbered poll choices.",
"type": "number"
},
"pollOptionIndexes": {
"items": {
"description": "1-based poll option numbers to vote for in a multiselect poll, matching the rendered numbered poll choices.",
"type": "number"
},
"type": "array"
},
"pollQuestion": {
"type": "string"
},
"position": {
"type": "number"
},
"query": {
"type": "string"
},
"quoteText": {
"description": "Quote text for Telegram reply_parameters",
"type": "string"
},
"rateLimitPerUser": {
"type": "number"
},
"reason": {
"type": "string"
},
"remove": {
"type": "boolean"
},
"replyTo": {
"type": "string"
},
"roleId": {
"type": "string"
},
"roleIds": {
"items": {
"type": "string"
},
"type": "array"
},
"scope": {
"type": "string"
},
"silent": {
"type": "boolean"
},
"startTime": {
"type": "string"
},
"status": {
"description": "Bot status: online, dnd, idle, invisible.",
"type": "string"
},
"stickerDesc": {
"type": "string"
},
"stickerId": {
"items": {
"type": "string"
},
"type": "array"
},
"stickerName": {
"type": "string"
},
"stickerTags": {
"type": "string"
},
"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"
},
"targetAuthor": {
"type": "string"
},
"targetAuthorUuid": {
"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"
},
"threadName": {
"type": "string"
},
"timeoutMs": {
"type": "number"
},
"topic": {
"type": "string"
},
"type": {
"type": "number"
},
"unionId": {
"type": "string"
},
"until": {
"type": "string"
},
"userId": {
"type": "string"
}
},
"required": ["action"],
"type": "object"
},
"name": "message"
},
{
"description": "Use only for explicit audio intent (audio, voice, speech, TTS) or active TTS config. Never use for ordinary text replies. Audio is delivered automatically from the tool result. After a successful call, follow the current conversation's reply instructions and avoid sending a duplicate text/audio response.",
"inputSchema": {
"properties": {
"channel": {
"description": "Optional channel id to pick output format.",
"type": "string"
},
"text": {
"description": "Text to convert to speech.",
"type": "string"
},
"timeoutMs": {
"description": "Optional provider request timeout in milliseconds.",
"minimum": 1,
"type": "number"
}
},
"required": ["text"],
"type": "object"
},
"name": "tts"
},
{
"description": "Restart, inspect a specific config schema path, apply config, or update the gateway in-place (SIGUSR1). Use config.schema.lookup with a targeted dot path before config edits. Use config.patch for safe partial config updates (merges with existing). Use config.apply only when replacing entire config. Config writes hot-reload when possible and restart when required. Always pass a human-readable completion message via the `note` parameter so the system can deliver it to the user after restart. If restarting during a user task and you still owe the user a reply, pass a specific one-shot `continuationMessage` for what to verify or report after boot; 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": {
"type": "number"
},
"gatewayToken": {
"type": "string"
},
"gatewayUrl": {
"type": "string"
},
"note": {
"type": "string"
},
"path": {
"type": "string"
},
"raw": {
"type": "string"
},
"reason": {
"type": "string"
},
"restartDelayMs": {
"type": "number"
},
"sessionKey": {
"type": "string"
},
"timeoutMs": {
"type": "number"
}
},
"required": ["action"],
"type": "object"
},
"name": "gateway"
},
{
"description": "List OpenClaw agent ids you can target with `sessions_spawn` when `runtime=\"subagent\"` (based on subagent allowlists).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "agents_list"
},
{
"description": "List visible sessions with optional filters for kind, label, agentId, search, recent activity, derived titles, and last-message previews. Use this to discover a target session before calling sessions_history or sessions_send.",
"inputSchema": {
"properties": {
"activeMinutes": {
"minimum": 1,
"type": "number"
},
"agentId": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"includeDerivedTitles": {
"type": "boolean"
},
"includeLastMessage": {
"type": "boolean"
},
"kinds": {
"items": {
"type": "string"
},
"type": "array"
},
"label": {
"minLength": 1,
"type": "string"
},
"limit": {
"minimum": 1,
"type": "number"
},
"messageLimit": {
"minimum": 0,
"type": "number"
},
"search": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "sessions_list"
},
{
"description": "Fetch sanitized message history for a visible session. Supports limits and optional tool messages; use this to inspect another session before replying, debugging, or resuming work.",
"inputSchema": {
"properties": {
"includeTools": {
"type": "boolean"
},
"limit": {
"minimum": 1,
"type": "number"
},
"sessionKey": {
"type": "string"
}
},
"required": ["sessionKey"],
"type": "object"
},
"name": "sessions_history"
},
{
"description": "Send a message into another visible session by sessionKey or label. Thread-scoped chat sessions are rejected; target the parent channel session for inter-agent coordination. Use this to delegate follow-up work to an existing session; waits for the target run and returns the updated assistant 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": "number"
}
},
"required": ["message"],
"type": "object"
},
"name": "sessions_send"
},
{
"description": "Spawn a clean isolated session by default with the native subagent runtime. `mode=\"run\"` is one-shot background work. Subagents inherit the parent workspace directory automatically. For native subagents only, set `context=\"fork\"` when the child needs the current transcript context; otherwise omit it or use `context=\"isolated\"`. Use this when the work should happen in a fresh child session instead of the current one.",
"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 subagent context mode. Omit or use \"isolated\" for a clean child session; use \"fork\" only when the child needs the requester transcript context.",
"enum": ["isolated", "fork"],
"type": "string"
},
"cwd": {
"type": "string"
},
"label": {
"type": "string"
},
"lightContext": {
"description": "When true, spawned subagent runs use lightweight bootstrap context. Only applies to runtime='subagent'.",
"type": "boolean"
},
"mode": {
"enum": ["run"],
"type": "string"
},
"model": {
"type": "string"
},
"runtime": {
"enum": ["subagent"],
"type": "string"
},
"runTimeoutSeconds": {
"minimum": 0,
"type": "number"
},
"sandbox": {
"enum": ["inherit", "require"],
"type": "string"
},
"task": {
"type": "string"
},
"thinking": {
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "number"
}
},
"required": ["task"],
"type": "object"
},
"name": "sessions_spawn"
},
{
"description": "End your current turn. Use after spawning subagents to receive their results as the next message.",
"inputSchema": {
"properties": {
"message": {
"type": "string"
}
},
"type": "object"
},
"name": "sessions_yield"
},
{
"description": "List, kill, or steer spawned sub-agents for this requester session. Use this for sub-agent orchestration.",
"inputSchema": {
"properties": {
"action": {
"enum": ["list", "kill", "steer"],
"type": "string"
},
"message": {
"type": "string"
},
"recentMinutes": {
"minimum": 1,
"type": "number"
},
"target": {
"type": "string"
}
},
"type": "object"
},
"name": "subagents"
},
{
"description": "Show a /status-equivalent session status card for the current or another visible session, including usage, time, cost when available, and linked background task context. Use `sessionKey=\"current\"` for the current session; do not use UI/client labels such as `openclaw-tui` as session keys. Optional `model` sets a per-session model override; `model=default` resets overrides. Use this for questions like what model is active or how a session is configured.",
"inputSchema": {
"properties": {
"model": {
"type": "string"
},
"sessionKey": {
"type": "string"
}
},
"type": "object"
},
"name": "session_status"
},
{
"description": "Search the web. Returns provider-normalized results for current information lookup.",
"inputSchema": {
"properties": {
"count": {
"description": "Number of results to return.",
"maximum": 10,
"minimum": 1,
"type": "number"
},
"country": {
"description": "2-letter country code for region-specific results.",
"type": "string"
},
"date_after": {
"description": "Only results published after this date (YYYY-MM-DD).",
"type": "string"
},
"date_before": {
"description": "Only results published before this date (YYYY-MM-DD).",
"type": "string"
},
"domain_filter": {
"description": "Perplexity native Search API domain filter.",
"items": {
"type": "string"
},
"type": "array"
},
"freshness": {
"description": "Filter by time: day, week, month, or year.",
"type": "string"
},
"language": {
"description": "ISO 639-1 language code for results.",
"type": "string"
},
"max_tokens": {
"description": "Perplexity native Search API total content budget.",
"maximum": 1000000,
"minimum": 1,
"type": "number"
},
"max_tokens_per_page": {
"description": "Perplexity native Search API max tokens extracted per page.",
"minimum": 1,
"type": "number"
},
"query": {
"description": "Search query string.",
"type": "string"
},
"search_lang": {
"description": "Brave search result language code.",
"type": "string"
},
"ui_lang": {
"description": "Brave UI locale code in language-region format.",
"type": "string"
}
},
"type": "object"
},
"name": "web_search"
},
{
"description": "Fetch and extract readable content from a URL (HTML → markdown/text). Use for lightweight page access without browser automation.",
"inputSchema": {
"properties": {
"extractMode": {
"default": "markdown",
"description": "Extraction mode (\"markdown\" or \"text\").",
"enum": ["markdown", "text"],
"type": "string"
},
"maxChars": {
"description": "Maximum characters to return (truncates when exceeded).",
"minimum": 100,
"type": "number"
},
"url": {
"description": "HTTP or HTTPS URL to fetch.",
"type": "string"
}
},
"required": ["url"],
"type": "object"
},
"name": "web_fetch"
}
]