{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"session.started","ts":"2026-05-09T19:54:56.994Z","seq":1,"sourceSeq":1,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"trigger":"heartbeat","sessionFile":"/Users/brandon/.openclaw/agents/main/sessions/44e9a0fa-b586-416f-88ea-acb3ff0d452b.jsonl","workspaceDir":"/Users/brandon/.openclaw/workspace","agentId":"main","messageProvider":"heartbeat","toolCount":22,"clientToolCount":0}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"trace.metadata","ts":"2026-05-09T19:54:57.006Z","seq":2,"sourceSeq":2,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"capturedAt":"2026-05-09T19:54:57.001Z","harness":{"type":"openclaw","name":"OpenClaw","version":"2026.5.7","os":{"platform":"darwin","arch":"arm64","release":"25.3.0","label":"macos 26.3 (arm64)"},"runtime":{"node":"v25.6.0"},"invocation":["/opt/homebrew/Cellar/node/25.6.0/bin/node","/opt/homebrew/lib/node_modules/openclaw/dist/index.js","gateway","--port","18789"],"entrypoint":"/opt/homebrew/lib/node_modules/openclaw/dist/index.js","workspaceDir":"$OPENCLAW_STATE_DIR/workspace","sessionFile":"$OPENCLAW_STATE_DIR/agents/main/sessions/44e9a0fa-b586-416f-88ea-acb3ff0d452b.jsonl"},"model":{"provider":"amazon-bedrock","name":"us.anthropic.claude-sonnet-4-6-v1","api":"bedrock-converse-stream","fastMode":false,"thinkLevel":"medium","reasoningLevel":"off"},"config":{"redacted":{"meta":{"lastTouchedVersion":"2026.4.14","lastTouchedAt":"2026-04-16T03:46:32.368Z"},"wizard":{"lastRunAt":"2026-04-16T03:43:53.694Z","lastRunVersion":"2026.4.14","lastRunCommand":"configure","lastRunMode":"local"},"auth":{"profiles":{"anthropic:default":{"provider":"anthropic","mode":"api_key"}}},"models":{"providers":{"amazon-bedrock":{"baseUrl":"https://bedrock-runtime.us-west-2.amazonaws.com","auth":"api-key","api":"bedrock-converse-stream","models":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}}},"agents":{"defaults":{"model":{"primary":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1","fallbacks":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"models":{"amazon-bedrock/us.anthropic.claude-opus-4-6-v1":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"workspace":"/Users/brandon/.openclaw/workspace","contextTokens":1000000,"memorySearch":{"enabled":true,"sources":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"extraPaths":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"experimental":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"provider":"local","fallback":"none","local":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"sync":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"query":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"compaction":{"mode":"safeguard","memoryFlush":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"blockStreamingDefault":"on","timeoutSeconds":900,"heartbeat":{"every":"15m","model":"amazon-bedrock/us.anthropic.claude-sonnet-4-6-v1","target":"none","lightContext":false},"maxConcurrent":8,"subagents":{"maxConcurrent":12,"maxSpawnDepth":2}},"list":[{"id":"main","default":true,"name":"Link","workspace":"/Users/brandon/.openclaw/workspace","model":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"subagents":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},{"id":"grocery","name":"Pantry","workspace":"/Users/brandon/.openclaw/agents/grocery/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"ledger","name":"Ledger","workspace":"/Users/brandon/.openclaw/agents/ledger/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"anchor","name":"Anchor","workspace":"/Users/brandon/.openclaw/agents/anchor/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"shepherd","name":"Shepherd","workspace":"/Users/brandon/.openclaw/agents/shepherd/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"muse","name":"Muse","workspace":"/Users/brandon/.openclaw/agents/muse/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"verse","name":"Verse","workspace":"/Users/brandon/.openclaw/agents/verse/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"therapist","name":"Ellis","workspace":"/Users/brandon/.openclaw/agents/therapist/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"releasy-pm","name":"Relay","workspace":"/Users/brandon/.openclaw/agents/releasy-pm/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1","subagents":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},{"id":"releasy-ios","name":"Swift","workspace":"/Users/brandon/.openclaw/agents/releasy-ios/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"releasy-qa","name":"Check","workspace":"/Users/brandon/.openclaw/agents/releasy-qa/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"},{"id":"releasy-marketing","name":"Promo","workspace":"/Users/brandon/.openclaw/agents/releasy-marketing/workspace","model":"amazon-bedrock/us.anthropic.claude-opus-4-6-v1"}]},"tools":{"web":{"search":{}},"exec":{"security":"full","ask":"off"}},"bindings":[{"agentId":"therapist","match":{"channel":"stoat","peer":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}}],"messages":{"ackReaction":"👀","ackReactionScope":"all"},"commands":{"native":"auto","nativeSkills":"auto","restart":true,"ownerDisplay":"raw"},"session":{"maintenance":{"mode":"enforce","pruneAfter":"30d"}},"hooks":{"enabled":true,"path":"/hooks","allowedAgentIds":["*"]},"channels":{"discord":{"enabled":true,"groupPolicy":"allowlist","streaming":{"mode":"off"},"guilds":{"1374219798443069460":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}},"signal":{"enabled":true,"account":"+12135792424","cliPath":"/opt/homebrew/bin/signal-cli","dmPolicy":"allowlist","allowFrom":["+12817509483"],"groupPolicy":"allowlist","blockStreaming":true,"blockStreamingCoalesce":{"minChars":80,"maxChars":2000,"idleMs":3000},"httpUrl":"http://127.0.0.1:8080","autoStart":false},"stoat":{"enabled":true,"wsBase":"wss://chat.disorganized.net/ws","apiBase":"https://chat.disorganized.net/api","autumnBase":"https://chat.disorganized.net/autumn","accounts":{"link":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"ellis":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"ledger":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"pantry":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"anchor":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"shepherd":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"muse":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"verse":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"relay":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"swift":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"check":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"promo":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"default":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}}},"discovery":{"mdns":{"mode":"off"}},"gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"allowedOrigins":["http://127.0.0.1"]},"auth":{"mode":"token"},"tailscale":{"mode":"off","resetOnExit":false},"nodes":{"denyCommands":["camera.snap","camera.clip","screen.record","calendar.add","contacts.add","reminders.add"]}},"memory":{"backend":"qmd","qmd":{"command":"/Users/brandon/.bun/bin/qmd","searchMode":"search","includeDefaultMemory":true,"sessions":{"enabled":true,"retentionDays":90},"update":{"interval":"5m","onBoot":true}}},"skills":{"entries":{"protonmail":{"enabled":true,"env":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"tavily":{"enabled":true}}},"plugins":{"allow":["stoat","discord","signal","amazon-bedrock","anthropic","brave","memory-core"],"entries":{"discord":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"signal":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"stoat":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"brave":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"amazon-bedrock":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"anthropic":{"enabled":true,"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"memory-core":{"config":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}}}},"runtime":{"timeoutMs":900000,"trigger":"heartbeat","disableTools":false,"toolResultFormat":"plain"}},"plugins":{"source":"active-registry","importedRuntimePluginIds":["amazon-bedrock","memory-core","signal","stoat"],"entries":[{"id":"memory-core","name":"Memory (Core)","version":"2026.5.7","description":"File-backed memory search tools and CLI","origin":"bundled","enabled":true,"explicitlyEnabled":true,"activated":true,"activationSource":"explicit","activationReason":"selected memory slot","status":"loaded","format":"openclaw","kind":"memory","source":"/opt/homebrew/lib/node_modules/openclaw/dist/extensions/memory-core/index.js","rootDir":"/opt/homebrew/lib/node_modules/openclaw/dist/extensions/memory-core","toolNames":["memory_get","memory_search"],"memoryEmbeddingProviderIds":["local"]},{"id":"signal","name":"Signal","version":"2026.5.7","description":"Signal channel plugin","origin":"bundled","enabled":true,"explicitlyEnabled":true,"activated":true,"activationSource":"explicit","activationReason":"enabled in config","status":"loaded","format":"openclaw","kind":"bundled-channel-entry","source":"/opt/homebrew/lib/node_modules/openclaw/dist/extensions/signal/index.js","rootDir":"/opt/homebrew/lib/node_modules/openclaw/dist/extensions/signal","channelIds":["signal"]},{"id":"stoat","name":"Stoat","version":"1.0.0","description":"Stoat (Revolt) channel plugin","origin":"global","enabled":true,"explicitlyEnabled":true,"activated":true,"activationSource":"explicit","activationReason":"enabled in config","status":"loaded","format":"openclaw","source":"/Users/brandon/.openclaw/extensions/stoat/index.js","rootDir":"/Users/brandon/.openclaw/extensions/stoat","channelIds":["stoat"]}]},"skills":{"snapshotVersion":0,"entries":[{"id":"1password","name":"1password","description":"Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/1password/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/1password","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/1password","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/1password/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"agent-autonomy-kit","name":"agent-autonomy-kit","description":"Stop waiting for prompts. Keep working.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/agent-autonomy-kit/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/agent-autonomy-kit","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/agent-autonomy-kit","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/agent-autonomy-kit/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"agent-browser","name":"agent-browser","description":"Headless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/agent-browser-clawdbot/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/agent-browser-clawdbot","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/agent-browser-clawdbot","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/agent-browser-clawdbot/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"alpaca","name":"alpaca","description":"Trade stocks and crypto via Alpaca API. Use for market data (quotes, bars, news), placing orders (market, limit, stop), checking positions, portfolio management, and account info. Supports both paper and live trading. Use when user asks about stock prices, wants to buy/sell securities, check portfolio, or manage trades.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/alpaca/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/alpaca","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/alpaca","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/alpaca/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"asset-allocation","name":"asset-allocation","description":"Professional investment advisory skill based on CFA framework. From financial diagnosis to portfolio rebalancing. Use when: users ask about investing, wealth management, fund/ETF selection, retirement planning, or asset allocation. Covers: risk assessment, goal-based planning, portfolio construction, product selection, and ongoing rebalancing.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/asset-allocation/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/asset-allocation","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/asset-allocation","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/asset-allocation/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"blogwatcher","name":"blogwatcher","description":"Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/blogwatcher/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/blogwatcher","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/blogwatcher","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/blogwatcher/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"browser-booking-agent","name":"browser-booking-agent","description":"Execute booking/search flows via browser automation with verification artifacts. Use for reservation forms, availability checks, and capture of proof (screenshots/confirmation IDs).","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/browser-booking-agent/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/browser-booking-agent","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/browser-booking-agent","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/browser-booking-agent/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"cinematic-script-writer","name":"cinematic-script-writer","description":"Create professional cinematic scripts for AI video generation with character consistency and cinematography knowledge. Use when the user wants to write a cinematic script, create story contexts with characters, generate image prompts for AI video tools (Midjourney, Sora, Veo), or needs cinematography guidance (camera angles, lighting, color grading). Also use for character consistency sheets, voice profiles, anachronism detection, and saving scripts to Google Drive.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/cinematic-script-writer/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/cinematic-script-writer","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/cinematic-script-writer","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/cinematic-script-writer/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"clawcall","name":"clawcall","description":"Make real AI-powered phone calls. Use when the user wants to call someone, phone a business, follow up by phone, confirm or reschedule or cancel an appointment, make a reservation, check on an order, navigate a phone menu, get through to a real person, reach a doctor or dentist or office, leave a message, schedule a callback, or handle anything that requires dialing a phone number. NOT for international calls, SMS, or email. US and Canada only. Works on the first call — API key is auto-provisioned.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/clawcall-dev/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/clawcall-dev","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/clawcall-dev","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/clawcall-dev/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"clawhub","name":"clawhub","description":"Search, install, update, sync, or publish agent skills with the ClawHub CLI and registry.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/clawhub/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/clawhub","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/clawhub","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/clawhub/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"discord","name":"discord","description":"Discord ops via the message tool (channel=discord).","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/discord/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/discord","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/discord","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/discord/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"dividend-growth-pullback-screener","name":"dividend-growth-pullback-screener","description":"Use this skill to find high-quality dividend growth stocks (12%+ annual dividend growth, 1.5%+ yield) that are experiencing temporary pullbacks, identified by RSI oversold conditions (RSI ≤40). This skill combines fundamental dividend analysis with technical timing indicators to identify buying opportunities in strong dividend growers during short-term weakness.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/dividend-growth-pullback-screener/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/dividend-growth-pullback-screener","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/dividend-growth-pullback-screener","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/dividend-growth-pullback-screener/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"finance","name":"finance","description":"Track stocks, ETFs, indices, crypto (where available), and FX pairs with caching + provider fallbacks.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/finance/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/finance/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"finance_lite","name":"finance_lite","description":"Daily macro + market brief (FRED + benchmarks + watchlist ticker) with critical-headline triage, explicit source/freshness notes, and graceful fallback behavior. Use when the user asks for a concise “what moved today and why” summary with practical context.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/finance-lite/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-lite","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-lite","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/finance-lite/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"finance-news","name":"finance-news","description":"Market news briefings with AI summaries. Use when asked about stock news, market updates, portfolio performance, morning/evening briefings, financial headlines, or price alerts. Supports US/Europe/Japan markets, WhatsApp delivery, and English/German output.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/finance-news/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-news","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-news","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/finance-news/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"finance-radar","name":"finance-radar","description":"Stock and cryptocurrency analysis powered by Yahoo Finance data. Use when a user wants to: (1) Analyze stocks or crypto prices/fundamentals, (2) Track investment portfolios, (3) Monitor watchlists with alerts, (4) Analyze dividends, (5) Score stocks on 8 dimensions, (6) Detect viral trending tickers (hot scanner), (7) Spot rumors and early signals before mainstream, (8) Check earnings reactions, (9) Find trending stocks or crypto. Integrates SkillPay.me billing at 0.001 USDT per call.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/finance-radar/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-radar","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/finance-radar","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/finance-radar/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"First Investing Policy Statement","name":"First Investing Policy Statement","description":"Helps beginners create a personal investing rulebook before they buy anything: goals, risk tolerance, contribution rhythm, rebalancing rules, and panic-prevention guardrails.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/first-investing-policy-statement/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/first-investing-policy-statement","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/first-investing-policy-statement","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/first-investing-policy-statement/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"fred-navigator","name":"fred-navigator","description":"Navigate FRED categories and series using fredapi, supporting natural-language queries with intent recognition and double validation.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/fred-navigator/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/fred-navigator","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/fred-navigator","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/fred-navigator/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"gh-issues","name":"gh-issues","description":"Fetch GitHub issues, delegate fixes to subagents, open PRs, watch reviews, or run /gh-issues workflows.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/gh-issues/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/gh-issues","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/gh-issues","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/gh-issues/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"github","name":"github","description":"Use gh for GitHub issues, PR status, CI/logs, comments, reviews, releases, and API queries.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/github/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/github","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/github","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/github/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"gog","name":"gog","description":"Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/gog/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/gog","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/gog","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/gog/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"healthcheck","name":"healthcheck","description":"Audit and harden hosts running OpenClaw for SSH, firewall, updates, exposure, cron checks, and risk posture.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/healthcheck/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/healthcheck","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/healthcheck","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/healthcheck/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"imap-smtp-email","name":"imap-smtp-email","description":"Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Supports multiple accounts. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, and vip.188.com.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/imap-smtp-email/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/imap-smtp-email","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/imap-smtp-email","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/imap-smtp-email/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"imsg","name":"imsg","description":"iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/imsg/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/imsg","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/imsg","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/imsg/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"investing-analyst","name":"investing-analyst","description":"Thesis-driven equity and options trading analyst. Use when: (1) evaluating a trade idea before entering a position, (2) analyzing options pricing via IV vs Historical Volatility, (3) planning earnings catalyst plays, (4) reviewing a losing position and deciding whether to hold or exit, (5) checking for emotional/FOMO trading patterns, (6) running a pre-trade checklist. NOT for: general financial education, portfolio-level asset allocation, or tax advice.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/investing-analyst/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/investing-analyst","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/investing-analyst","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/investing-analyst/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"ios-simulator","name":"ios-simulator","description":"Automate iOS Simulator workflows (simctl + idb): create/boot/erase devices, install/launch apps, push notifications, privacy grants, screenshots, and accessibility-based UI navigation. Use when working with iOS apps, Xcode, Simulator, simctl, idb, UI automation, or iOS testing.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/ios-simulator/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/ios-simulator","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/ios-simulator","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/ios-simulator/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"market-news-analyst","name":"market-news-analyst","description":"This skill should be used when analyzing recent market-moving news events and their impact on equity markets and commodities. Use this skill when the user requests analysis of major financial news from the past 10 days, wants to understand market reactions to monetary policy decisions (FOMC, ECB, BOJ), needs assessment of geopolitical events' impact on commodities, or requires comprehensive review of earnings announcements from mega-cap stocks. The skill automatically collects news using WebSearch/WebFetch tools and produces impact-ranked analysis reports. All analysis thinking and output are conducted in English.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/market-news-analyst/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/market-news-analyst","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/market-news-analyst","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/market-news-analyst/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"mcporter","name":"mcporter","description":"List, configure, authenticate, call, and inspect MCP servers/tools with mcporter over HTTP or stdio.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/mcporter/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/mcporter","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/mcporter","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/mcporter/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"memory-hygiene","name":"memory-hygiene","description":"Audit, clean, and optimize Clawdbot's vector memory (LanceDB). Use when memory is bloated with junk, token usage is high from irrelevant auto-recalls, or setting up memory maintenance automation.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/memory-hygiene/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/memory-hygiene","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/memory-hygiene","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/memory-hygiene/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"n8n-workflow-automation","name":"n8n-workflow-automation","description":"Designs and outputs n8n workflow JSON with robust triggers, idempotency, error handling, logging, retries, and human-in-the-loop review queues. Use when you need an auditable automation that won’t silently fail.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/n8n-workflow-automation/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/n8n-workflow-automation","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/n8n-workflow-automation","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/n8n-workflow-automation/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"nano-pdf","name":"nano-pdf","description":"Edit PDFs with natural-language instructions using the nano-pdf CLI.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/nano-pdf/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/nano-pdf","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/nano-pdf","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/nano-pdf/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"node-connect","name":"node-connect","description":"Diagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/node-connect/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/node-connect","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/node-connect","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/node-connect/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"obsidian","name":"obsidian","description":"Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/obsidian/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/obsidian","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/obsidian","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/obsidian/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"ontology","name":"ontology","description":"Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linking related objects, enforcing constraints, planning multi-step actions as graph transformations, or when skills need to share state. Trigger on \"remember\", \"what do I know about\", \"link X to Y\", \"show dependencies\", entity CRUD, or cross-skill data access.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/ontology/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/ontology","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/ontology","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/ontology/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"openai-whisper","name":"openai-whisper","description":"Local speech-to-text with the Whisper CLI (no API key).","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/openai-whisper","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/openai-whisper","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"pr-commit-workflow","name":"pr-commit-workflow","description":"This skill should be used when creating commits or pull requests, enforcing a human-written PR structure, intent capture, and evidence in agentic workflows.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/pr-commit-workflow/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/pr-commit-workflow","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/pr-commit-workflow","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/pr-commit-workflow/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"proactive-agent","name":"proactive-agent","description":"Transform AI agents from task-followers into proactive partners that anticipate needs and continuously improve. Now with WAL Protocol, Working Buffer, Autonomous Crons, and battle-tested patterns. Part of the Hal Stack 🦞","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/proactive-agent/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/proactive-agent","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/proactive-agent","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/proactive-agent/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"protonmail","name":"protonmail","description":"ProtonMail integration via Proton Mail Bridge for reading and sending encrypted emails.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/openclaw-protonmail/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/openclaw-protonmail","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/openclaw-protonmail","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/openclaw-protonmail/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"quantitative-research","name":"quantitative-research","description":"World-class systematic trading research - backtesting, alpha generation, factor models, statistical arbitrage. Transform hypotheses into edges. Use when \"backtest, alpha, factor model, statistical arbitrage, quant research, systematic trading, mean reversion, momentum strategy, regime detection, walk forward, \" mentioned.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/quantitative-research/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/quantitative-research","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/quantitative-research","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/quantitative-research/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"Self-Improving + Proactive Agent","name":"Self-Improving + Proactive Agent","description":"Self-reflection + Self-criticism + Self-learning + Self-organizing memory. Agent evaluates its own work, catches mistakes, and improves permanently. Use when (1) a command, tool, API, or operation fails; (2) the user corrects you or rejects your work; (3) you realize your knowledge is outdated or incorrect; (4) you discover a better approach; (5) the user explicitly installs or references the skill for the current task.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/self-improving/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/self-improving","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/self-improving","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/self-improving/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"skill-creator","name":"skill-creator","description":"Create, edit, improve, tidy, review, audit, or restructure AgentSkills and SKILL.md files.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/skill-creator/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/skill-creator","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/skill-creator","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/skill-creator/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"taskflow","name":"taskflow","description":"Coordinate multi-step detached tasks as one durable TaskFlow job with owner context, state, waits, and child tasks.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"taskflow-inbox-triage","name":"taskflow-inbox-triage","description":"Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow-inbox-triage/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow-inbox-triage","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow-inbox-triage","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/taskflow-inbox-triage/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"tavily","name":"tavily","description":"AI-optimized web search using Tavily Search API. Use when you need comprehensive web research, current events lookup, domain-specific search, or AI-generated answer summaries. Tavily is optimized for LLM consumption with clean structured results, answer generation, and raw content extraction. Best for research tasks, news queries, fact-checking, and gathering authoritative sources.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/tavily/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/tavily","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/tavily","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/tavily/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"tmux","name":"tmux","description":"Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/tmux/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/tmux","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/tmux","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/tmux/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"tradingview-screener","name":"tradingview-screener","description":"Screen markets across 6 asset classes using TradingView data. API pre-filters + pandas computed signals. YAML-driven strategies.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/tradingview-screener/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/tradingview-screener","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/tradingview-screener","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/tradingview-screener/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"vercel","name":"vercel","description":"Deploy applications and manage projects with complete CLI reference. Commands for deployments, projects, domains, environment variables, and live documentation access.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/vercel/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/vercel","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/vercel","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/vercel/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true},{"id":"video-frames","name":"video-frames","description":"Extract frames or short clips from videos using ffmpeg.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/video-frames/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/video-frames","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/video-frames","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/video-frames/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"weather","name":"weather","description":"Get current weather, rain, temperature, and forecasts for locations or travel planning.","filePath":"/opt/homebrew/lib/node_modules/openclaw/skills/weather/SKILL.md","baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/weather","source":"openclaw-bundled","sourceInfo":{"baseDir":"/opt/homebrew/lib/node_modules/openclaw/skills/weather","origin":"top-level","path":"/opt/homebrew/lib/node_modules/openclaw/skills/weather/SKILL.md","scope":"project","source":"openclaw-bundled"},"disableModelInvocation":false,"available":true},{"id":"yahoo-finance","name":"yahoo-finance","description":"Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required.","filePath":"$OPENCLAW_STATE_DIR/workspace/skills/yahoo-finance/SKILL.md","baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/yahoo-finance","source":"openclaw-workspace","sourceInfo":{"baseDir":"$OPENCLAW_STATE_DIR/workspace/skills/yahoo-finance","origin":"top-level","path":"$OPENCLAW_STATE_DIR/workspace/skills/yahoo-finance/SKILL.md","scope":"project","source":"openclaw-workspace"},"disableModelInvocation":false,"available":true}]},"prompting":{"skillsPrompt":"⚠️ Skills catalog using compact format (descriptions omitted). Run `openclaw skills check` to audit.\n\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its name.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n<available_skills>\n  <skill>\n    <name>1password</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/1password/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>agent-autonomy-kit</name>\n    <location>~/.openclaw/workspace/skills/agent-autonomy-kit/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>agent-browser</name>\n    <location>~/.openclaw/workspace/skills/agent-browser-clawdbot/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>alpaca</name>\n    <location>~/.openclaw/workspace/skills/alpaca/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>asset-allocation</name>\n    <location>~/.openclaw/workspace/skills/asset-allocation/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>blogwatcher</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/blogwatcher/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>browser-booking-agent</name>\n    <location>~/.openclaw/workspace/skills/browser-booking-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>cinematic-script-writer</name>\n    <location>~/.openclaw/workspace/skills/cinematic-script-writer/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawcall</name>\n    <location>~/.openclaw/workspace/skills/clawcall-dev/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawhub</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/clawhub/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>discord</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/discord/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>dividend-growth-pullback-screener</name>\n    <location>~/.openclaw/workspace/skills/dividend-growth-pullback-screener/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>finance</name>\n    <location>~/.openclaw/workspace/skills/finance/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>finance_lite</name>\n    <location>~/.openclaw/workspace/skills/finance-lite/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>finance-news</name>\n    <location>~/.openclaw/workspace/skills/finance-news/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>finance-radar</name>\n    <location>~/.openclaw/workspace/skills/finance-radar/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>First Investing Policy Statement</name>\n    <location>~/.openclaw/workspace/skills/first-investing-policy-statement/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>fred-navigator</name>\n    <location>~/.openclaw/workspace/skills/fred-navigator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>gh-issues</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/gh-issues/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>gog</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/gog/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>healthcheck</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/healthcheck/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>imap-smtp-email</name>\n    <location>~/.openclaw/workspace/skills/imap-smtp-email/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>imsg</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/imsg/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>investing-analyst</name>\n    <location>~/.openclaw/workspace/skills/investing-analyst/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>ios-simulator</name>\n    <location>~/.openclaw/workspace/skills/ios-simulator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>market-news-analyst</name>\n    <location>~/.openclaw/workspace/skills/market-news-analyst/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>memory-hygiene</name>\n    <location>~/.openclaw/workspace/skills/memory-hygiene/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>n8n-workflow-automation</name>\n    <location>~/.openclaw/workspace/skills/n8n-workflow-automation/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>nano-pdf</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/nano-pdf/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>node-connect</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/node-connect/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>obsidian</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/obsidian/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>ontology</name>\n    <location>~/.openclaw/workspace/skills/ontology/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>pr-commit-workflow</name>\n    <location>~/.openclaw/workspace/skills/pr-commit-workflow/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>proactive-agent</name>\n    <location>~/.openclaw/workspace/skills/proactive-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>protonmail</name>\n    <location>~/.openclaw/workspace/skills/openclaw-protonmail/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>quantitative-research</name>\n    <location>~/.openclaw/workspace/skills/quantitative-research/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>Self-Improving + Proactive Agent</name>\n    <location>~/.openclaw/workspace/skills/self-improving/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>taskflow</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/taskflow/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>taskflow-inbox-triage</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/taskflow-inbox-triage/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tavily</name>\n    <location>~/.openclaw/workspace/skills/tavily/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tradingview-screener</name>\n    <location>~/.openclaw/workspace/skills/tradingview-screener/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>vercel</name>\n    <location>~/.openclaw/workspace/skills/vercel/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <location>/opt/homebrew/lib/node_modules/openclaw/skills/weather/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>yahoo-finance</name>\n    <location>~/.openclaw/workspace/skills/yahoo-finance/SKILL.md</location>\n  </skill>\n</available_skills>","systemPromptReport":{"source":"run","generatedAt":1778356496982,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","provider":"amazon-bedrock","model":"us.anthropic.claude-sonnet-4-6-v1","workspaceDir":"/Users/brandon/.openclaw/workspace","bootstrapMaxChars":12000,"bootstrapTotalMaxChars":60000,"bootstrapTruncation":{"warningMode":"once","warningShown":true,"promptWarningSignature":"{\"bootstrapMaxChars\":12000,\"bootstrapTotalMaxChars\":60000,\"files\":[{\"path\":\"/Users/brandon/.openclaw/workspace/AGENTS.md\",\"rawChars\":12171,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]},{\"path\":\"/Users/brandon/.openclaw/workspace/MEMORY.md\",\"rawChars\":30267,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]},{\"path\":\"/Users/brandon/.openclaw/workspace/TOOLS.md\",\"rawChars\":17798,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]}]}","warningSignaturesSeen":["{\"bootstrapMaxChars\":12000,\"bootstrapTotalMaxChars\":60000,\"files\":[{\"path\":\"/Users/brandon/.openclaw/workspace/AGENTS.md\",\"rawChars\":12171,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]},{\"path\":\"/Users/brandon/.openclaw/workspace/MEMORY.md\",\"rawChars\":30267,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]},{\"path\":\"/Users/brandon/.openclaw/workspace/TOOLS.md\",\"rawChars\":17798,\"injectedChars\":11999,\"causes\":[\"per-file-limit\"]}]}"],"truncatedFiles":3,"nearLimitFiles":3,"totalNearLimit":false},"sandbox":{"mode":"off","sandboxed":false},"systemPrompt":{"chars":66862,"projectContextChars":46885,"nonProjectContextChars":19977},"injectedWorkspaceFiles":[{"name":"AGENTS.md","path":"/Users/brandon/.openclaw/workspace/AGENTS.md","missing":false,"rawChars":12171,"injectedChars":11999,"truncated":true},{"name":"SOUL.md","path":"/Users/brandon/.openclaw/workspace/SOUL.md","missing":false,"rawChars":5810,"injectedChars":5810,"truncated":false},{"name":"TOOLS.md","path":"/Users/brandon/.openclaw/workspace/TOOLS.md","missing":false,"rawChars":17798,"injectedChars":11999,"truncated":true},{"name":"IDENTITY.md","path":"/Users/brandon/.openclaw/workspace/IDENTITY.md","missing":false,"rawChars":1265,"injectedChars":1265,"truncated":false},{"name":"USER.md","path":"/Users/brandon/.openclaw/workspace/USER.md","missing":false,"rawChars":3499,"injectedChars":3499,"truncated":false},{"name":"HEARTBEAT.md","path":"/Users/brandon/.openclaw/workspace/HEARTBEAT.md","missing":false,"rawChars":43,"injectedChars":43,"truncated":false},{"name":"BOOTSTRAP.md","path":"/Users/brandon/.openclaw/workspace/BOOTSTRAP.md","missing":true,"rawChars":0,"injectedChars":0,"truncated":false},{"name":"MEMORY.md","path":"/Users/brandon/.openclaw/workspace/MEMORY.md","missing":false,"rawChars":30267,"injectedChars":11999,"truncated":true}],"skills":{"promptChars":7296,"entries":[{"name":"1password","blockChars":136},{"name":"agent-autonomy-kit","blockChars":136},{"name":"agent-browser","blockChars":135},{"name":"alpaca","blockChars":112},{"name":"asset-allocation","blockChars":132},{"name":"blogwatcher","blockChars":140},{"name":"browser-booking-agent","blockChars":142},{"name":"cinematic-script-writer","blockChars":146},{"name":"clawcall","blockChars":120},{"name":"clawhub","blockChars":132},{"name":"discord","blockChars":132},{"name":"dividend-growth-pullback-screener","blockChars":166},{"name":"finance","blockChars":114},{"name":"finance_lite","blockChars":124},{"name":"finance-news","blockChars":124},{"name":"finance-radar","blockChars":126},{"name":"First Investing Policy Statement","blockChars":164},{"name":"fred-navigator","blockChars":128},{"name":"gh-issues","blockChars":136},{"name":"github","blockChars":130},{"name":"gog","blockChars":124},{"name":"healthcheck","blockChars":140},{"name":"imap-smtp-email","blockChars":130},{"name":"imsg","blockChars":126},{"name":"investing-analyst","blockChars":134},{"name":"ios-simulator","blockChars":126},{"name":"market-news-analyst","blockChars":138},{"name":"mcporter","blockChars":134},{"name":"memory-hygiene","blockChars":128},{"name":"n8n-workflow-automation","blockChars":146},{"name":"nano-pdf","blockChars":134},{"name":"node-connect","blockChars":142},{"name":"obsidian","blockChars":134},{"name":"ontology","blockChars":116},{"name":"openai-whisper","blockChars":146},{"name":"pr-commit-workflow","blockChars":136},{"name":"proactive-agent","blockChars":130},{"name":"protonmail","blockChars":129},{"name":"quantitative-research","blockChars":142},{"name":"Self-Improving + Proactive Agent","blockChars":146},{"name":"skill-creator","blockChars":144},{"name":"taskflow","blockChars":134},{"name":"taskflow-inbox-triage","blockChars":160},{"name":"tavily","blockChars":112},{"name":"tmux","blockChars":126},{"name":"tradingview-screener","blockChars":140},{"name":"vercel","blockChars":112},{"name":"video-frames","blockChars":142},{"name":"weather","blockChars":132},{"name":"yahoo-finance","blockChars":126}]},"tools":{"listChars":0,"schemaChars":15892,"entries":[{"name":"read","summaryChars":298,"schemaChars":304,"propertiesCount":3},{"name":"edit","summaryChars":326,"schemaChars":834,"propertiesCount":2},{"name":"write","summaryChars":127,"schemaChars":225,"propertiesCount":2},{"name":"exec","summaryChars":446,"schemaChars":1139,"propertiesCount":12},{"name":"process","summaryChars":322,"schemaChars":1011,"propertiesCount":12},{"name":"canvas","summaryChars":106,"schemaChars":661,"propertiesCount":18},{"name":"message","summaryChars":96,"schemaChars":6174,"propertiesCount":108},{"name":"tts","summaryChars":305,"schemaChars":316,"propertiesCount":3},{"name":"agents_list","summaryChars":118,"schemaChars":33,"propertiesCount":0},{"name":"sessions_list","summaryChars":225,"schemaChars":432,"propertiesCount":9},{"name":"sessions_history","summaryChars":180,"schemaChars":161,"propertiesCount":3},{"name":"sessions_send","summaryChars":314,"schemaChars":274,"propertiesCount":5},{"name":"sessions_spawn","summaryChars":419,"schemaChars":1211,"propertiesCount":16},{"name":"sessions_yield","summaryChars":97,"schemaChars":60,"propertiesCount":1},{"name":"subagents","summaryChars":105,"schemaChars":191,"propertiesCount":4},{"name":"session_status","summaryChars":456,"schemaChars":89,"propertiesCount":2},{"name":"web_search","summaryChars":83,"schemaChars":1209,"propertiesCount":12},{"name":"web_fetch","summaryChars":129,"schemaChars":374,"propertiesCount":3},{"name":"image","summaryChars":260,"schemaChars":342,"propertiesCount":6},{"name":"pdf","summaryChars":275,"schemaChars":400,"propertiesCount":6},{"name":"memory_search","summaryChars":605,"schemaChars":237,"propertiesCount":4},{"name":"memory_get","summaryChars":239,"schemaChars":215,"propertiesCount":4}]}}},"redaction":{"config":{"mode":"redactConfigObject","secretsMasked":true},"payloads":{"mode":"sanitizeDiagnosticPayload","credentialsRemoved":true,"imageDataRedacted":true},"harness":{"mode":"diagnostic-support-redaction","programArgumentsRedacted":true,"localPathsRedacted":true}},"metadata":{"sessionKey":"agent:main:signal:default:direct:+12817509483","agentId":"main","messageProvider":"heartbeat"}}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"context.compiled","ts":"2026-05-09T19:54:57.012Z","seq":3,"sourceSeq":3,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"systemPrompt":{"truncated":true,"reason":"trajectory-field-size-limit","originalChars":66862,"limitChars":32768},"prompt":"[OpenClaw heartbeat poll]","messages":[],"tools":[{"name":"agents_list","description":"List OpenClaw agent ids you can target with `sessions_spawn` when `runtime=\"subagent\"` (based on subagent allowlists).","parameters":{"type":"object","properties":{}}},{"name":"canvas","description":"Control node canvases (present/hide/navigate/eval/snapshot/A2UI). Use snapshot to capture the rendered UI.","parameters":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"gatewayUrl":{"type":"string"},"timeoutMs":{"type":"number"},"node":{"type":"string"},"target":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"url":{"type":"string"},"javaScript":{"type":"string"},"outputFormat":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"maxWidth":{"type":"number"},"quality":{"type":"number"},"delayMs":{"type":"number"},"jsonl":{"type":"string"},"jsonlPath":{"type":"string"}}}},{"name":"edit","description":"Edit a single file using exact text replacement. Every edits[].oldText must match a unique, non-overlapping region of the original file. If two changes affect the same block or nearby lines, merge them into one edit instead of emitting overlapping edits. Do not include large unchanged regions just to connect distant changes.","parameters":{"type":"object","required":["path","edits"],"properties":{"path":{"type":"string","description":"Path to the file to edit (relative or absolute)"},"edits":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"One or more targeted replacements. Each edit is matched against the original file, not incrementally. Do not include overlapping or nested edits. If two changes touch the same block or nearby lines, merge them into one edit instead."}},"additionalProperties":false}},{"name":"exec","description":"Execute shell commands with background continuation for work that starts now. Use yieldMs/background to continue later via process tool. For long-running work started now, rely on automatic completion wake when it is enabled and the command emits output or fails; otherwise use process to confirm completion. Use process whenever you need logs, status, input, or intervention. Use pty=true for TTY-required commands (terminal UIs, coding agents).","parameters":{"type":"object","required":["command"],"properties":{"command":{"type":"string","description":"Shell command to execute"},"workdir":{"type":"string","description":"Working directory (defaults to cwd)"},"env":{"type":"object","patternProperties":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"yieldMs":{"type":"number","description":"Milliseconds to wait before backgrounding (default 10000)"},"background":{"type":"boolean","description":"Run in background immediately"},"timeout":{"type":"number","description":"Timeout in seconds (optional, kills process on expiry)"},"pty":{"type":"boolean","description":"Run in a pseudo-terminal (PTY) when available (TTY-required CLIs, coding agents)"},"elevated":{"type":"boolean","description":"Run on the host with elevated permissions (if allowed)"},"host":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Exec host/target (auto|sandbox|gateway|node)."},"security":{"type":"string","description":"Exec security mode (deny|allowlist|full)."},"ask":{"type":"string","description":"Exec ask mode (off|on-miss|always)."},"node":{"type":"string","description":"Node id/name for host=node."}}}},{"name":"image","description":"Analyze one or more images with a vision model. Use image for a single path/URL, or images for multiple (up to 20). Only use this tool when images were NOT already provided in the user's message. Images mentioned in the prompt are automatically visible to you.","parameters":{"type":"object","properties":{"prompt":{"type":"string"},"image":{"type":"string","description":"Single image path or URL."},"images":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Multiple image paths or URLs (up to maxImages, default 20)."},"model":{"type":"string"},"maxBytesMb":{"type":"number"},"maxImages":{"type":"number"}}}},{"name":"memory_get","description":"Safe exact excerpt read from MEMORY.md or memory/*.md. Defaults to a bounded excerpt when lines are omitted, includes truncation/continuation info when more content exists, and `corpus=wiki` reads from registered compiled-wiki supplements.","parameters":{"type":"object","properties":{"path":{"type":"string"},"from":{"type":"number"},"lines":{"type":"number"},"corpus":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}},"required":["path"],"additionalProperties":false}},{"name":"memory_search","description":"Mandatory recall step: semantically search MEMORY.md + memory/*.md (and optional session transcripts) before answering questions about prior work, decisions, dates, people, preferences, or todos. Optional `corpus=wiki` or `corpus=all` also searches registered compiled-wiki supplements. `corpus=memory` restricts hits to indexed memory files (excludes session transcript chunks from ranking). `corpus=sessions` restricts hits to indexed session transcripts (same visibility rules as session history tools). If response has disabled=true, memory retrieval is unavailable and should be surfaced to the user.","parameters":{"type":"object","properties":{"query":{"type":"string"},"maxResults":{"type":"number"},"minScore":{"type":"number"},"corpus":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}},"required":["query"],"additionalProperties":false}},{"name":"message","description":"Send, delete, and manage messages via channel plugins. Supports actions: broadcast, react, send.","parameters":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"channel":{"type":"string"},"target":{"type":"string","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"},"targets":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"accountId":{"type":"string"},"dryRun":{"type":"boolean"},"message":{"type":"string"},"effectId":{"type":"string","description":"Message effect name/id for sendWithEffect (e.g., invisible ink)."},"effect":{"type":"string","description":"Alias for effectId (e.g., invisible-ink, balloons)."},"media":{"type":"string","description":"Media URL or local path. data: URLs are not supported here, use buffer."},"filename":{"type":"string"},"buffer":{"type":"string","description":"Base64 payload for attachments (optionally a data: URL)."},"contentType":{"type":"string"},"mimeType":{"type":"string"},"caption":{"type":"string"},"path":{"type":"string"},"filePath":{"type":"string"},"replyTo":{"type":"string"},"threadId":{"type":"string"},"asVoice":{"type":"boolean"},"silent":{"type":"boolean"},"quoteText":{"type":"string","description":"Quote text for Telegram reply_parameters"},"bestEffort":{"type":"boolean"},"gifPlayback":{"type":"boolean"},"forceDocument":{"type":"boolean","description":"Send image/GIF as document to avoid Telegram compression (Telegram only)."},"asDocument":{"type":"boolean","description":"Send image/GIF as document to avoid Telegram compression. Alias for forceDocument (Telegram only)."},"messageId":{"type":"string","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."},"message_id":{"type":"string","description":"snake_case alias of messageId. If omitted for reaction-like actions, defaults to the current inbound message id when available."},"emoji":{"type":"string"},"remove":{"type":"boolean"},"trackToolCalls":{"type":"boolean","description":"When true for a reaction to the current inbound message, use that reacted message as the status-reaction target for subsequent tool progress when the channel supports it."},"track_tool_calls":{"type":"boolean","description":"snake_case alias of trackToolCalls."},"targetAuthor":{"type":"string"},"targetAuthorUuid":{"type":"string"},"groupId":{"type":"string"},"limit":{"type":"number"},"pageSize":{"type":"number"},"before":{"type":"string"},"after":{"type":"string"},"around":{"type":"string"},"fromMe":{"type":"boolean"},"includeArchived":{"type":"boolean"},"pollId":{"type":"string"},"pollOptionId":{"type":"string","description":"Poll answer id to vote for. Use when the channel exposes stable answer ids."},"pollOptionIds":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"pollOptionIndex":{"type":"number","description":"1-based poll option number to vote for, matching the rendered numbered poll choices."},"pollOptionIndexes":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"pollQuestion":{"type":"string"},"pollOption":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"pollDurationHours":{"type":"number"},"pollMulti":{"type":"boolean"},"channelId":{"type":"string","description":"Channel id filter (search/thread list/event create)."},"chatId":{"type":"string","description":"Chat id for chat-scoped metadata actions."},"channelIds":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"memberId":{"type":"string"},"memberIdType":{"type":"string"},"guildId":{"type":"string"},"userId":{"type":"string"},"openId":{"type":"string"},"unionId":{"type":"string"},"authorId":{"type":"string"},"authorIds":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"roleId":{"type":"string"},"_truncated":{"truncated":true,"reason":"trajectory-object-size-limit","originalKeys":108,"limitKeys":64}}}},{"name":"pdf","description":"Analyze one or more PDF documents with a model. Supports native PDF analysis for Anthropic and Google models, with text/image extraction fallback for other providers. Use pdf for a single path/URL, or pdfs for multiple (up to 10). Provide a prompt describing what to analyze.","parameters":{"type":"object","properties":{"prompt":{"type":"string"},"pdf":{"type":"string","description":"Single PDF path or URL."},"pdfs":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Multiple PDF paths or URLs (up to 10)."},"pages":{"type":"string","description":"Page range to process, e.g. \"1-5\", \"1,3,5-7\". Defaults to all pages."},"model":{"type":"string"},"maxBytesMb":{"type":"number"}}}},{"name":"process","description":"Manage running exec sessions for commands already started: list, poll, log, write, send-keys, submit, paste, kill. Use poll/log when you need status, logs, quiet-success confirmation, or completion confirmation when automatic completion wake is unavailable. Use write/send-keys/submit/paste/kill for input or intervention.","parameters":{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Process action"},"sessionId":{"type":"string","description":"Session id for actions other than list"},"data":{"type":"string","description":"Data to write for write"},"keys":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Key tokens to send for send-keys"},"hex":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Hex bytes to send for send-keys"},"literal":{"type":"string","description":"Literal string for send-keys"},"text":{"type":"string","description":"Text to paste for paste"},"bracketed":{"type":"boolean","description":"Wrap paste in bracketed mode"},"eof":{"type":"boolean","description":"Close stdin after write"},"offset":{"type":"number","description":"Log offset"},"limit":{"type":"number","description":"Log length"},"timeout":{"type":"number","description":"For poll: wait up to this many milliseconds before returning; max 30000 ms, higher values are clamped to 30000","minimum":0}}}},{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","parameters":{"type":"object","required":["path"],"properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}}}},{"name":"session_status","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.","parameters":{"type":"object","properties":{"sessionKey":{"type":"string"},"model":{"type":"string"}}}},{"name":"sessions_history","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.","parameters":{"type":"object","required":["sessionKey"],"properties":{"sessionKey":{"type":"string"},"limit":{"type":"number","minimum":1},"includeTools":{"type":"boolean"}}}},{"name":"sessions_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.","parameters":{"type":"object","properties":{"kinds":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"limit":{"type":"number","minimum":1},"activeMinutes":{"type":"number","minimum":1},"messageLimit":{"type":"number","minimum":0},"label":{"type":"string","minLength":1},"agentId":{"type":"string","minLength":1,"maxLength":64},"search":{"type":"string","minLength":1},"includeDerivedTitles":{"type":"boolean"},"includeLastMessage":{"type":"boolean"}}}},{"name":"sessions_send","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.","parameters":{"type":"object","required":["message"],"properties":{"sessionKey":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":512},"agentId":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string"},"timeoutSeconds":{"type":"number","minimum":0}}}},{"name":"sessions_spawn","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.","parameters":{"type":"object","required":["task"],"properties":{"task":{"type":"string"},"label":{"type":"string"},"runtime":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"agentId":{"type":"string"},"model":{"type":"string"},"thinking":{"type":"string"},"cwd":{"type":"string"},"runTimeoutSeconds":{"type":"number","minimum":0},"timeoutSeconds":{"type":"number","minimum":0},"mode":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"cleanup":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"sandbox":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"context":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"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."},"lightContext":{"type":"boolean","description":"When true, spawned subagent runs use lightweight bootstrap context. Only applies to runtime='subagent'."},"attachments":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"maxItems":50},"attachAs":{"type":"object","properties":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}}}}},{"name":"sessions_yield","description":"End your current turn. Use after spawning subagents to receive their results as the next message.","parameters":{"type":"object","properties":{"message":{"type":"string"}}}},{"name":"subagents","description":"List, kill, or steer spawned sub-agents for this requester session. Use this for sub-agent orchestration.","parameters":{"type":"object","properties":{"action":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6}},"target":{"type":"string"},"message":{"type":"string"},"recentMinutes":{"type":"number","minimum":1}}}},{"name":"tts","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.","parameters":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"Text to convert to speech."},"channel":{"type":"string","description":"Optional channel id to pick output format."},"timeoutMs":{"type":"number","description":"Optional provider request timeout in milliseconds.","minimum":1}}}},{"name":"web_fetch","description":"Fetch and extract readable content from a URL (HTML → markdown/text). Use for lightweight page access without browser automation.","parameters":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"HTTP or HTTPS URL to fetch."},"extractMode":{"type":"string","enum":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Extraction mode (\"markdown\" or \"text\").","default":"markdown"},"maxChars":{"type":"number","description":"Maximum characters to return (truncates when exceeded).","minimum":100}}}},{"name":"web_search","description":"Search the web. Returns provider-normalized results for current information lookup.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query string."},"count":{"type":"number","description":"Number of results to return.","minimum":1,"maximum":10},"country":{"type":"string","description":"2-letter country code for region-specific results."},"language":{"type":"string","description":"ISO 639-1 language code for results."},"freshness":{"type":"string","description":"Filter by time: day, week, month, or year."},"date_after":{"type":"string","description":"Only results published after this date (YYYY-MM-DD)."},"date_before":{"type":"string","description":"Only results published before this date (YYYY-MM-DD)."},"search_lang":{"type":"string","description":"Brave search result language code."},"ui_lang":{"type":"string","description":"Brave UI locale code in language-region format."},"domain_filter":{"type":"array","items":{"truncated":true,"reason":"trajectory-depth-limit","limitDepth":6},"description":"Perplexity native Search API domain filter."},"max_tokens":{"type":"number","description":"Perplexity native Search API total content budget.","minimum":1,"maximum":1000000},"max_tokens_per_page":{"type":"number","description":"Perplexity native Search API max tokens extracted per page.","minimum":1}}}},{"name":"write","description":"Write content to a file. Creates the file if it doesn't exist, overwrites if it does. Automatically creates parent directories.","parameters":{"type":"object","required":["path","content"],"properties":{"path":{"type":"string","description":"Path to the file to write (relative or absolute)"},"content":{"type":"string","description":"Content to write to the file"}}}}],"imagesCount":0,"streamStrategy":"session-custom","transport":"auto","transcriptLeafId":"27e5a0fd"}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"prompt.submitted","ts":"2026-05-09T19:54:57.013Z","seq":4,"sourceSeq":4,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"prompt":"[OpenClaw heartbeat poll]","systemPrompt":{"truncated":true,"reason":"trajectory-field-size-limit","originalChars":66862,"limitChars":32768},"messages":[],"imagesCount":0}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"model.completed","ts":"2026-05-09T19:54:57.529Z","seq":5,"sourceSeq":5,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"aborted":false,"externalAbort":false,"timedOut":false,"idleTimedOut":false,"timedOutDuringCompaction":false,"timedOutDuringToolExecution":false,"promptErrorSource":null,"promptCache":{"lastCallUsage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0},"lastCacheTouchAt":1778356497090},"compactionCount":0,"assistantTexts":[],"finalPromptText":"[OpenClaw heartbeat poll]","messagesSnapshot":[{"role":"user","content":[{"type":"text","text":"[OpenClaw heartbeat poll]"}],"timestamp":1778356497013},{"role":"custom","customType":"openclaw.runtime-context","content":"System: [2026-05-09 13:54:56 MDT] Gateway restart restart ok (gateway.restart)\nSystem: Restarting to reconnect Stoat bots (Ledger failing to connect since April 30)\nSystem: Run: openclaw doctor --non-interactive\nSystem: [2026-05-09 13:54:56 MDT] Check if Ledger is now online in Stoat. Run: grep 'stoat.*ledger.*ready' ~/.openclaw/logs/gateway.log | tail -3\n\nRead HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.\nWhen reading HEARTBEAT.md, use workspace file /Users/brandon/.openclaw/workspace/HEARTBEAT.md (exact case). Do not read docs/heartbeat.md.\nCurrent time: Saturday, May 9th, 2026 - 1:54 PM (America/Denver) / 2026-05-09 19:54 UTC","display":false,"details":{"source":"openclaw-runtime-context"},"timestamp":1778356497013},{"role":"assistant","content":[],"api":"bedrock-converse-stream","provider":"amazon-bedrock","model":"us.anthropic.claude-sonnet-4-6-v1","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1778356497090,"errorMessage":"Validation error: The provided model identifier is invalid."}]}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"trace.artifacts","ts":"2026-05-09T19:54:57.529Z","seq":6,"sourceSeq":6,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"capturedAt":"2026-05-09T19:54:57.529Z","finalStatus":"success","aborted":false,"externalAbort":false,"timedOut":false,"idleTimedOut":false,"timedOutDuringCompaction":false,"timedOutDuringToolExecution":false,"promptErrorSource":null,"promptCache":{"lastCallUsage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0},"lastCacheTouchAt":1778356497090},"compactionCount":0,"assistantTexts":[],"finalPromptText":"[OpenClaw heartbeat poll]","itemLifecycle":{"startedCount":0,"completedCount":0,"activeCount":0},"toolMetas":[],"didSendViaMessagingTool":false,"successfulCronAdds":0,"messagingToolSentTexts":[],"messagingToolSentMediaUrls":[],"messagingToolSentTargets":[]}}
{"traceSchema":"openclaw-trajectory","schemaVersion":1,"traceId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","source":"runtime","type":"session.ended","ts":"2026-05-09T19:54:57.529Z","seq":7,"sourceSeq":7,"sessionId":"44e9a0fa-b586-416f-88ea-acb3ff0d452b","sessionKey":"agent:main:signal:default:direct:+12817509483","runId":"9ed86edd-ec5c-474d-b774-d00da4260006","workspaceDir":"/Users/brandon/.openclaw/workspace","provider":"amazon-bedrock","modelId":"us.anthropic.claude-sonnet-4-6-v1","modelApi":"bedrock-converse-stream","data":{"status":"success","aborted":false,"externalAbort":false,"timedOut":false,"idleTimedOut":false,"timedOutDuringCompaction":false,"timedOutDuringToolExecution":false}}
