vilvona 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (812) hide show
  1. package/CHANGELOG.md +12331 -0
  2. package/LICENSE +24 -0
  3. package/README.md +314 -0
  4. package/THIRD_PARTY_NOTICES.md +37 -0
  5. package/docs/.i18n/README.md +81 -0
  6. package/docs/.i18n/ar-navigation.json +18 -0
  7. package/docs/.i18n/de-navigation.json +18 -0
  8. package/docs/.i18n/es-navigation.json +18 -0
  9. package/docs/.i18n/fr-navigation.json +18 -0
  10. package/docs/.i18n/glossary.ar.json +82 -0
  11. package/docs/.i18n/glossary.de.json +82 -0
  12. package/docs/.i18n/glossary.es.json +82 -0
  13. package/docs/.i18n/glossary.fa.json +82 -0
  14. package/docs/.i18n/glossary.fr.json +82 -0
  15. package/docs/.i18n/glossary.id.json +82 -0
  16. package/docs/.i18n/glossary.it.json +82 -0
  17. package/docs/.i18n/glossary.ja-JP.json +102 -0
  18. package/docs/.i18n/glossary.ko.json +82 -0
  19. package/docs/.i18n/glossary.nl.json +82 -0
  20. package/docs/.i18n/glossary.pl.json +82 -0
  21. package/docs/.i18n/glossary.pt-BR.json +82 -0
  22. package/docs/.i18n/glossary.th.json +82 -0
  23. package/docs/.i18n/glossary.tr.json +82 -0
  24. package/docs/.i18n/glossary.uk.json +82 -0
  25. package/docs/.i18n/glossary.vi.json +82 -0
  26. package/docs/.i18n/glossary.zh-CN.json +1182 -0
  27. package/docs/.i18n/glossary.zh-TW.json +162 -0
  28. package/docs/.i18n/id-navigation.json +18 -0
  29. package/docs/.i18n/it-navigation.json +18 -0
  30. package/docs/.i18n/ja-navigation.json +18 -0
  31. package/docs/.i18n/ko-navigation.json +18 -0
  32. package/docs/.i18n/pl-navigation.json +18 -0
  33. package/docs/.i18n/pt-BR-navigation.json +18 -0
  34. package/docs/.i18n/tr-navigation.json +18 -0
  35. package/docs/.i18n/translation-workflow.md +111 -0
  36. package/docs/.i18n/zh-Hans-navigation.json +552 -0
  37. package/docs/AGENTS.md +36 -0
  38. package/docs/agent-runtime-architecture.md +48 -0
  39. package/docs/announcements/bluebubbles-imessage.md +79 -0
  40. package/docs/auth-credential-semantics.md +124 -0
  41. package/docs/automation/auth-monitoring.md +11 -0
  42. package/docs/automation/clawflow.md +12 -0
  43. package/docs/automation/cron-jobs.md +569 -0
  44. package/docs/automation/cron-vs-heartbeat.md +11 -0
  45. package/docs/automation/gmail-pubsub.md +11 -0
  46. package/docs/automation/hooks.md +387 -0
  47. package/docs/automation/index.md +135 -0
  48. package/docs/automation/poll.md +12 -0
  49. package/docs/automation/standing-orders.md +250 -0
  50. package/docs/automation/taskflow.md +155 -0
  51. package/docs/automation/tasks.md +374 -0
  52. package/docs/automation/troubleshooting.md +12 -0
  53. package/docs/automation/webhook.md +12 -0
  54. package/docs/brave-search.md +11 -0
  55. package/docs/channels/access-groups.md +201 -0
  56. package/docs/channels/ambient-room-events.md +214 -0
  57. package/docs/channels/bot-loop-protection.md +131 -0
  58. package/docs/channels/broadcast-groups.md +472 -0
  59. package/docs/channels/channel-routing.md +162 -0
  60. package/docs/channels/clickclack.md +146 -0
  61. package/docs/channels/discord.md +1758 -0
  62. package/docs/channels/feishu.md +654 -0
  63. package/docs/channels/googlechat.md +286 -0
  64. package/docs/channels/group-messages.md +95 -0
  65. package/docs/channels/groups.md +610 -0
  66. package/docs/channels/imessage-from-bluebubbles.md +259 -0
  67. package/docs/channels/imessage.md +864 -0
  68. package/docs/channels/index.md +65 -0
  69. package/docs/channels/irc.md +253 -0
  70. package/docs/channels/line.md +243 -0
  71. package/docs/channels/location.md +71 -0
  72. package/docs/channels/matrix-migration.md +375 -0
  73. package/docs/channels/matrix-presentation.md +77 -0
  74. package/docs/channels/matrix-push-rules.md +150 -0
  75. package/docs/channels/matrix.md +935 -0
  76. package/docs/channels/mattermost.md +542 -0
  77. package/docs/channels/msteams.md +1097 -0
  78. package/docs/channels/nextcloud-talk.md +176 -0
  79. package/docs/channels/nostr.md +253 -0
  80. package/docs/channels/pairing.md +214 -0
  81. package/docs/channels/qqbot.md +317 -0
  82. package/docs/channels/signal.md +417 -0
  83. package/docs/channels/slack.md +1623 -0
  84. package/docs/channels/sms.md +380 -0
  85. package/docs/channels/synology-chat.md +187 -0
  86. package/docs/channels/telegram.md +1121 -0
  87. package/docs/channels/tlon.md +296 -0
  88. package/docs/channels/troubleshooting.md +162 -0
  89. package/docs/channels/twitch.md +431 -0
  90. package/docs/channels/wechat.md +171 -0
  91. package/docs/channels/whatsapp.md +796 -0
  92. package/docs/channels/yuanbao.md +416 -0
  93. package/docs/channels/zalo.md +253 -0
  94. package/docs/channels/zalouser.md +217 -0
  95. package/docs/ci.md +665 -0
  96. package/docs/clawhub/cli.md +82 -0
  97. package/docs/clawhub/publishing.md +96 -0
  98. package/docs/cli/acp.md +370 -0
  99. package/docs/cli/agent.md +109 -0
  100. package/docs/cli/agents.md +253 -0
  101. package/docs/cli/approvals.md +193 -0
  102. package/docs/cli/backup.md +98 -0
  103. package/docs/cli/browser.md +322 -0
  104. package/docs/cli/channels.md +154 -0
  105. package/docs/cli/clawbot.md +25 -0
  106. package/docs/cli/commitments.md +90 -0
  107. package/docs/cli/completion.md +39 -0
  108. package/docs/cli/config.md +504 -0
  109. package/docs/cli/configure.md +77 -0
  110. package/docs/cli/crestodian.md +337 -0
  111. package/docs/cli/cron.md +344 -0
  112. package/docs/cli/daemon.md +67 -0
  113. package/docs/cli/dashboard.md +33 -0
  114. package/docs/cli/devices.md +240 -0
  115. package/docs/cli/directory.md +68 -0
  116. package/docs/cli/dns.md +53 -0
  117. package/docs/cli/docs.md +63 -0
  118. package/docs/cli/doctor.md +254 -0
  119. package/docs/cli/flows.md +52 -0
  120. package/docs/cli/gateway.md +572 -0
  121. package/docs/cli/health.md +43 -0
  122. package/docs/cli/hooks.md +345 -0
  123. package/docs/cli/index.md +406 -0
  124. package/docs/cli/infer.md +364 -0
  125. package/docs/cli/logs.md +68 -0
  126. package/docs/cli/mcp.md +851 -0
  127. package/docs/cli/memory.md +183 -0
  128. package/docs/cli/message.md +317 -0
  129. package/docs/cli/migrate.md +334 -0
  130. package/docs/cli/models.md +239 -0
  131. package/docs/cli/node.md +178 -0
  132. package/docs/cli/nodes.md +76 -0
  133. package/docs/cli/onboard.md +251 -0
  134. package/docs/cli/pairing.md +77 -0
  135. package/docs/cli/path.md +511 -0
  136. package/docs/cli/plugins.md +480 -0
  137. package/docs/cli/policy.md +929 -0
  138. package/docs/cli/proxy.md +89 -0
  139. package/docs/cli/qr.md +56 -0
  140. package/docs/cli/reset.md +39 -0
  141. package/docs/cli/sandbox.md +208 -0
  142. package/docs/cli/secrets.md +202 -0
  143. package/docs/cli/security.md +135 -0
  144. package/docs/cli/sessions.md +178 -0
  145. package/docs/cli/setup.md +60 -0
  146. package/docs/cli/skills.md +156 -0
  147. package/docs/cli/status.md +45 -0
  148. package/docs/cli/system.md +89 -0
  149. package/docs/cli/tasks.md +111 -0
  150. package/docs/cli/transcripts.md +151 -0
  151. package/docs/cli/tui.md +92 -0
  152. package/docs/cli/uninstall.md +45 -0
  153. package/docs/cli/update.md +283 -0
  154. package/docs/cli/voicecall.md +204 -0
  155. package/docs/cli/webhooks.md +117 -0
  156. package/docs/cli/wiki.md +256 -0
  157. package/docs/cli/workboard.md +228 -0
  158. package/docs/concepts/active-memory.md +856 -0
  159. package/docs/concepts/agent-loop.md +185 -0
  160. package/docs/concepts/agent-runtimes.md +276 -0
  161. package/docs/concepts/agent-workspace.md +230 -0
  162. package/docs/concepts/agent.md +142 -0
  163. package/docs/concepts/architecture.md +154 -0
  164. package/docs/concepts/channel-docking.md +145 -0
  165. package/docs/concepts/commitments.md +150 -0
  166. package/docs/concepts/compaction.md +203 -0
  167. package/docs/concepts/context-engine.md +347 -0
  168. package/docs/concepts/context.md +199 -0
  169. package/docs/concepts/delegate-architecture.md +319 -0
  170. package/docs/concepts/dreaming.md +279 -0
  171. package/docs/concepts/experimental-features.md +111 -0
  172. package/docs/concepts/features.md +91 -0
  173. package/docs/concepts/mantis-slack-desktop-runbook.md +231 -0
  174. package/docs/concepts/mantis.md +744 -0
  175. package/docs/concepts/markdown-formatting.md +139 -0
  176. package/docs/concepts/memory-builtin.md +151 -0
  177. package/docs/concepts/memory-honcho.md +144 -0
  178. package/docs/concepts/memory-qmd.md +277 -0
  179. package/docs/concepts/memory-search.md +175 -0
  180. package/docs/concepts/memory.md +299 -0
  181. package/docs/concepts/message-lifecycle-refactor.md +1126 -0
  182. package/docs/concepts/messages.md +216 -0
  183. package/docs/concepts/model-failover.md +405 -0
  184. package/docs/concepts/model-providers.md +719 -0
  185. package/docs/concepts/models.md +371 -0
  186. package/docs/concepts/multi-agent.md +625 -0
  187. package/docs/concepts/oauth.md +218 -0
  188. package/docs/concepts/parallel-specialist-lanes.md +127 -0
  189. package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
  190. package/docs/concepts/presence.md +117 -0
  191. package/docs/concepts/progress-drafts.md +406 -0
  192. package/docs/concepts/qa-e2e-automation.md +979 -0
  193. package/docs/concepts/qa-matrix.md +139 -0
  194. package/docs/concepts/queue-steering.md +90 -0
  195. package/docs/concepts/queue.md +136 -0
  196. package/docs/concepts/retry.md +86 -0
  197. package/docs/concepts/session-pruning.md +104 -0
  198. package/docs/concepts/session-tool.md +201 -0
  199. package/docs/concepts/session.md +164 -0
  200. package/docs/concepts/soul.md +116 -0
  201. package/docs/concepts/streaming.md +258 -0
  202. package/docs/concepts/system-prompt.md +330 -0
  203. package/docs/concepts/timezone.md +47 -0
  204. package/docs/concepts/typebox.md +309 -0
  205. package/docs/concepts/typing-indicators.md +88 -0
  206. package/docs/concepts/usage-tracking.md +72 -0
  207. package/docs/date-time.md +126 -0
  208. package/docs/debug/node-issue.md +90 -0
  209. package/docs/diagnostics/flags.md +182 -0
  210. package/docs/docs.json +1885 -0
  211. package/docs/gateway/authentication.md +286 -0
  212. package/docs/gateway/background-process.md +147 -0
  213. package/docs/gateway/bonjour.md +303 -0
  214. package/docs/gateway/bridge-protocol.md +97 -0
  215. package/docs/gateway/cli-backends.md +463 -0
  216. package/docs/gateway/config-agents.md +1525 -0
  217. package/docs/gateway/config-channels.md +942 -0
  218. package/docs/gateway/config-tools.md +806 -0
  219. package/docs/gateway/configuration-examples.md +706 -0
  220. package/docs/gateway/configuration-reference.md +1449 -0
  221. package/docs/gateway/configuration.md +748 -0
  222. package/docs/gateway/diagnostics.md +213 -0
  223. package/docs/gateway/discovery.md +154 -0
  224. package/docs/gateway/doctor.md +576 -0
  225. package/docs/gateway/external-apps.md +86 -0
  226. package/docs/gateway/gateway-lock.md +37 -0
  227. package/docs/gateway/health.md +73 -0
  228. package/docs/gateway/heartbeat.md +498 -0
  229. package/docs/gateway/index.md +385 -0
  230. package/docs/gateway/local-model-services.md +205 -0
  231. package/docs/gateway/local-models.md +355 -0
  232. package/docs/gateway/logging.md +149 -0
  233. package/docs/gateway/multiple-gateways.md +178 -0
  234. package/docs/gateway/network-model.md +15 -0
  235. package/docs/gateway/openai-http-api.md +379 -0
  236. package/docs/gateway/openresponses-http-api.md +349 -0
  237. package/docs/gateway/openshell.md +316 -0
  238. package/docs/gateway/opentelemetry.md +440 -0
  239. package/docs/gateway/operator-scopes.md +119 -0
  240. package/docs/gateway/pairing.md +207 -0
  241. package/docs/gateway/prometheus.md +249 -0
  242. package/docs/gateway/protocol.md +839 -0
  243. package/docs/gateway/remote-gateway-readme.md +169 -0
  244. package/docs/gateway/remote.md +280 -0
  245. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +148 -0
  246. package/docs/gateway/sandboxing.md +546 -0
  247. package/docs/gateway/secrets-plan-contract.md +159 -0
  248. package/docs/gateway/secrets.md +805 -0
  249. package/docs/gateway/security/audit-checks.md +127 -0
  250. package/docs/gateway/security/exposure-runbook.md +212 -0
  251. package/docs/gateway/security/index.md +1344 -0
  252. package/docs/gateway/security/secure-file-operations.md +76 -0
  253. package/docs/gateway/security/shrinkwrap.md +111 -0
  254. package/docs/gateway/tailscale.md +180 -0
  255. package/docs/gateway/tools-invoke-http-api.md +175 -0
  256. package/docs/gateway/troubleshooting.md +881 -0
  257. package/docs/gateway/trusted-proxy-auth.md +483 -0
  258. package/docs/help/debugging.md +341 -0
  259. package/docs/help/environment.md +240 -0
  260. package/docs/help/faq-first-run.md +872 -0
  261. package/docs/help/faq-models.md +557 -0
  262. package/docs/help/faq.md +2115 -0
  263. package/docs/help/index.md +39 -0
  264. package/docs/help/scripts.md +56 -0
  265. package/docs/help/testing-live.md +592 -0
  266. package/docs/help/testing-updates-plugins.md +299 -0
  267. package/docs/help/testing.md +977 -0
  268. package/docs/help/troubleshooting.md +500 -0
  269. package/docs/index.md +196 -0
  270. package/docs/install/ansible.md +233 -0
  271. package/docs/install/azure.md +315 -0
  272. package/docs/install/bun.md +59 -0
  273. package/docs/install/clawdock.md +112 -0
  274. package/docs/install/development-channels.md +148 -0
  275. package/docs/install/digitalocean.md +174 -0
  276. package/docs/install/docker-vm-runtime.md +154 -0
  277. package/docs/install/docker.md +564 -0
  278. package/docs/install/exe-dev.md +201 -0
  279. package/docs/install/fly.md +524 -0
  280. package/docs/install/gcp.md +418 -0
  281. package/docs/install/hetzner.md +285 -0
  282. package/docs/install/hostinger.md +98 -0
  283. package/docs/install/index.md +236 -0
  284. package/docs/install/installer.md +447 -0
  285. package/docs/install/kubernetes.md +196 -0
  286. package/docs/install/macos-vm.md +281 -0
  287. package/docs/install/migrating-claude.md +165 -0
  288. package/docs/install/migrating-hermes.md +178 -0
  289. package/docs/install/migrating.md +137 -0
  290. package/docs/install/nix.md +112 -0
  291. package/docs/install/node.md +142 -0
  292. package/docs/install/northflank.mdx +44 -0
  293. package/docs/install/oracle.md +218 -0
  294. package/docs/install/podman.md +216 -0
  295. package/docs/install/railway.mdx +92 -0
  296. package/docs/install/raspberry-pi.md +234 -0
  297. package/docs/install/render.mdx +167 -0
  298. package/docs/install/uninstall.md +140 -0
  299. package/docs/install/updating.md +284 -0
  300. package/docs/install/upstash.md +96 -0
  301. package/docs/logging.md +322 -0
  302. package/docs/maturity-scores.yaml +5361 -0
  303. package/docs/nav-tabs-underline.js +104 -0
  304. package/docs/network.md +72 -0
  305. package/docs/nodes/audio.md +216 -0
  306. package/docs/nodes/camera.md +166 -0
  307. package/docs/nodes/images.md +77 -0
  308. package/docs/nodes/index.md +444 -0
  309. package/docs/nodes/location-command.md +102 -0
  310. package/docs/nodes/media-understanding.md +495 -0
  311. package/docs/nodes/talk.md +160 -0
  312. package/docs/nodes/troubleshooting.md +123 -0
  313. package/docs/nodes/voicewake.md +93 -0
  314. package/docs/openclaw-agent-runtime.md +82 -0
  315. package/docs/perplexity.md +11 -0
  316. package/docs/plan/codex-context-engine-harness.md +624 -0
  317. package/docs/plan/ui-channels.md +284 -0
  318. package/docs/platforms/android.md +286 -0
  319. package/docs/platforms/digitalocean.md +12 -0
  320. package/docs/platforms/easyrunner.md +109 -0
  321. package/docs/platforms/index.md +65 -0
  322. package/docs/platforms/ios.md +287 -0
  323. package/docs/platforms/linux.md +141 -0
  324. package/docs/platforms/mac/bundled-gateway.md +79 -0
  325. package/docs/platforms/mac/canvas.md +128 -0
  326. package/docs/platforms/mac/child-process.md +72 -0
  327. package/docs/platforms/mac/dev-setup.md +112 -0
  328. package/docs/platforms/mac/health.md +39 -0
  329. package/docs/platforms/mac/icon.md +36 -0
  330. package/docs/platforms/mac/logging.md +62 -0
  331. package/docs/platforms/mac/menu-bar.md +93 -0
  332. package/docs/platforms/mac/peekaboo.md +96 -0
  333. package/docs/platforms/mac/permissions.md +73 -0
  334. package/docs/platforms/mac/remote.md +123 -0
  335. package/docs/platforms/mac/signing.md +52 -0
  336. package/docs/platforms/mac/skills.md +45 -0
  337. package/docs/platforms/mac/voice-overlay.md +66 -0
  338. package/docs/platforms/mac/voicewake.md +79 -0
  339. package/docs/platforms/mac/webchat.md +54 -0
  340. package/docs/platforms/mac/xpc.md +66 -0
  341. package/docs/platforms/macos.md +228 -0
  342. package/docs/platforms/oracle.md +12 -0
  343. package/docs/platforms/raspberry-pi.md +13 -0
  344. package/docs/platforms/windows.md +304 -0
  345. package/docs/plugins/adding-capabilities.md +146 -0
  346. package/docs/plugins/admin-http-rpc.md +216 -0
  347. package/docs/plugins/agent-tools.md +13 -0
  348. package/docs/plugins/architecture-internals.md +1203 -0
  349. package/docs/plugins/architecture.md +483 -0
  350. package/docs/plugins/building-extensions.md +13 -0
  351. package/docs/plugins/building-plugins.md +343 -0
  352. package/docs/plugins/bundles.md +310 -0
  353. package/docs/plugins/cli-backend-plugins.md +328 -0
  354. package/docs/plugins/codex-computer-use.md +297 -0
  355. package/docs/plugins/codex-harness-reference.md +480 -0
  356. package/docs/plugins/codex-harness-runtime.md +268 -0
  357. package/docs/plugins/codex-harness.md +800 -0
  358. package/docs/plugins/codex-native-plugins.md +280 -0
  359. package/docs/plugins/community.md +77 -0
  360. package/docs/plugins/compatibility.md +198 -0
  361. package/docs/plugins/copilot.md +355 -0
  362. package/docs/plugins/dependency-resolution.md +176 -0
  363. package/docs/plugins/google-meet.md +1737 -0
  364. package/docs/plugins/hooks.md +525 -0
  365. package/docs/plugins/install-overrides.md +80 -0
  366. package/docs/plugins/llama-cpp.md +58 -0
  367. package/docs/plugins/manage-plugins.md +214 -0
  368. package/docs/plugins/manifest.md +1468 -0
  369. package/docs/plugins/memory-lancedb.md +385 -0
  370. package/docs/plugins/memory-wiki.md +529 -0
  371. package/docs/plugins/message-presentation.md +487 -0
  372. package/docs/plugins/oc-path.md +166 -0
  373. package/docs/plugins/plugin-inventory.md +318 -0
  374. package/docs/plugins/plugin-permission-requests.md +193 -0
  375. package/docs/plugins/reference/acpx.md +23 -0
  376. package/docs/plugins/reference/admin-http-rpc.md +23 -0
  377. package/docs/plugins/reference/alibaba.md +23 -0
  378. package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
  379. package/docs/plugins/reference/amazon-bedrock.md +23 -0
  380. package/docs/plugins/reference/anthropic-vertex.md +29 -0
  381. package/docs/plugins/reference/anthropic.md +23 -0
  382. package/docs/plugins/reference/arcee.md +23 -0
  383. package/docs/plugins/reference/azure-speech.md +23 -0
  384. package/docs/plugins/reference/bonjour.md +19 -0
  385. package/docs/plugins/reference/brave.md +23 -0
  386. package/docs/plugins/reference/browser.md +23 -0
  387. package/docs/plugins/reference/byteplus.md +19 -0
  388. package/docs/plugins/reference/canvas.md +19 -0
  389. package/docs/plugins/reference/cerebras.md +23 -0
  390. package/docs/plugins/reference/chutes.md +23 -0
  391. package/docs/plugins/reference/clickclack.md +23 -0
  392. package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
  393. package/docs/plugins/reference/codex-supervisor.md +27 -0
  394. package/docs/plugins/reference/codex.md +23 -0
  395. package/docs/plugins/reference/comfy.md +23 -0
  396. package/docs/plugins/reference/copilot-proxy.md +19 -0
  397. package/docs/plugins/reference/copilot.md +23 -0
  398. package/docs/plugins/reference/deepgram.md +23 -0
  399. package/docs/plugins/reference/deepinfra.md +23 -0
  400. package/docs/plugins/reference/deepseek.md +23 -0
  401. package/docs/plugins/reference/diagnostics-otel.md +19 -0
  402. package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
  403. package/docs/plugins/reference/diffs-language-pack.md +31 -0
  404. package/docs/plugins/reference/diffs.md +19 -0
  405. package/docs/plugins/reference/discord.md +23 -0
  406. package/docs/plugins/reference/document-extract.md +23 -0
  407. package/docs/plugins/reference/duckduckgo.md +23 -0
  408. package/docs/plugins/reference/elevenlabs.md +23 -0
  409. package/docs/plugins/reference/exa.md +23 -0
  410. package/docs/plugins/reference/fal.md +23 -0
  411. package/docs/plugins/reference/feishu.md +23 -0
  412. package/docs/plugins/reference/file-transfer.md +19 -0
  413. package/docs/plugins/reference/firecrawl.md +23 -0
  414. package/docs/plugins/reference/fireworks.md +23 -0
  415. package/docs/plugins/reference/github-copilot.md +23 -0
  416. package/docs/plugins/reference/gmi.md +23 -0
  417. package/docs/plugins/reference/google-meet.md +23 -0
  418. package/docs/plugins/reference/google.md +23 -0
  419. package/docs/plugins/reference/googlechat.md +23 -0
  420. package/docs/plugins/reference/gradium.md +23 -0
  421. package/docs/plugins/reference/groq.md +23 -0
  422. package/docs/plugins/reference/huggingface.md +23 -0
  423. package/docs/plugins/reference/imessage.md +23 -0
  424. package/docs/plugins/reference/inworld.md +23 -0
  425. package/docs/plugins/reference/irc.md +23 -0
  426. package/docs/plugins/reference/kilocode.md +23 -0
  427. package/docs/plugins/reference/kimi.md +23 -0
  428. package/docs/plugins/reference/line.md +23 -0
  429. package/docs/plugins/reference/litellm.md +23 -0
  430. package/docs/plugins/reference/llama-cpp.md +23 -0
  431. package/docs/plugins/reference/llm-task.md +19 -0
  432. package/docs/plugins/reference/lmstudio.md +23 -0
  433. package/docs/plugins/reference/lobster.md +19 -0
  434. package/docs/plugins/reference/matrix.md +23 -0
  435. package/docs/plugins/reference/mattermost.md +23 -0
  436. package/docs/plugins/reference/memory-core.md +19 -0
  437. package/docs/plugins/reference/memory-lancedb.md +23 -0
  438. package/docs/plugins/reference/memory-wiki.md +23 -0
  439. package/docs/plugins/reference/microsoft-foundry.md +113 -0
  440. package/docs/plugins/reference/microsoft.md +19 -0
  441. package/docs/plugins/reference/migrate-claude.md +19 -0
  442. package/docs/plugins/reference/migrate-hermes.md +19 -0
  443. package/docs/plugins/reference/minimax.md +23 -0
  444. package/docs/plugins/reference/mistral.md +23 -0
  445. package/docs/plugins/reference/moonshot.md +23 -0
  446. package/docs/plugins/reference/msteams.md +23 -0
  447. package/docs/plugins/reference/nextcloud-talk.md +23 -0
  448. package/docs/plugins/reference/nostr.md +23 -0
  449. package/docs/plugins/reference/novita.md +23 -0
  450. package/docs/plugins/reference/nvidia.md +23 -0
  451. package/docs/plugins/reference/oc-path.md +23 -0
  452. package/docs/plugins/reference/ollama.md +24 -0
  453. package/docs/plugins/reference/open-prose.md +19 -0
  454. package/docs/plugins/reference/openai.md +23 -0
  455. package/docs/plugins/reference/opencode-go.md +23 -0
  456. package/docs/plugins/reference/opencode.md +23 -0
  457. package/docs/plugins/reference/openrouter.md +23 -0
  458. package/docs/plugins/reference/openshell.md +19 -0
  459. package/docs/plugins/reference/perplexity.md +23 -0
  460. package/docs/plugins/reference/pixverse.md +23 -0
  461. package/docs/plugins/reference/policy.md +79 -0
  462. package/docs/plugins/reference/qa-channel.md +23 -0
  463. package/docs/plugins/reference/qa-lab.md +19 -0
  464. package/docs/plugins/reference/qa-matrix.md +19 -0
  465. package/docs/plugins/reference/qianfan.md +23 -0
  466. package/docs/plugins/reference/qqbot.md +23 -0
  467. package/docs/plugins/reference/qwen.md +24 -0
  468. package/docs/plugins/reference/runway.md +23 -0
  469. package/docs/plugins/reference/searxng.md +19 -0
  470. package/docs/plugins/reference/senseaudio.md +23 -0
  471. package/docs/plugins/reference/sglang.md +23 -0
  472. package/docs/plugins/reference/signal.md +23 -0
  473. package/docs/plugins/reference/slack.md +23 -0
  474. package/docs/plugins/reference/sms.md +23 -0
  475. package/docs/plugins/reference/stepfun.md +23 -0
  476. package/docs/plugins/reference/synology-chat.md +23 -0
  477. package/docs/plugins/reference/synthetic.md +23 -0
  478. package/docs/plugins/reference/tavily.md +23 -0
  479. package/docs/plugins/reference/telegram.md +23 -0
  480. package/docs/plugins/reference/tencent.md +23 -0
  481. package/docs/plugins/reference/tlon.md +23 -0
  482. package/docs/plugins/reference/together.md +23 -0
  483. package/docs/plugins/reference/tokenjuice.md +23 -0
  484. package/docs/plugins/reference/tts-local-cli.md +19 -0
  485. package/docs/plugins/reference/twitch.md +23 -0
  486. package/docs/plugins/reference/venice.md +23 -0
  487. package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
  488. package/docs/plugins/reference/vllm.md +23 -0
  489. package/docs/plugins/reference/voice-call.md +23 -0
  490. package/docs/plugins/reference/volcengine.md +23 -0
  491. package/docs/plugins/reference/voyage.md +19 -0
  492. package/docs/plugins/reference/vydra.md +23 -0
  493. package/docs/plugins/reference/web-readability.md +19 -0
  494. package/docs/plugins/reference/webhooks.md +23 -0
  495. package/docs/plugins/reference/whatsapp.md +23 -0
  496. package/docs/plugins/reference/workboard.md +23 -0
  497. package/docs/plugins/reference/xai.md +23 -0
  498. package/docs/plugins/reference/xiaomi.md +23 -0
  499. package/docs/plugins/reference/zai.md +23 -0
  500. package/docs/plugins/reference/zalo.md +23 -0
  501. package/docs/plugins/reference/zalouser.md +24 -0
  502. package/docs/plugins/reference.md +19 -0
  503. package/docs/plugins/sdk-agent-harness.md +339 -0
  504. package/docs/plugins/sdk-channel-inbound.md +70 -0
  505. package/docs/plugins/sdk-channel-ingress.md +137 -0
  506. package/docs/plugins/sdk-channel-message.md +18 -0
  507. package/docs/plugins/sdk-channel-outbound.md +113 -0
  508. package/docs/plugins/sdk-channel-plugins.md +770 -0
  509. package/docs/plugins/sdk-channel-turn.md +9 -0
  510. package/docs/plugins/sdk-entrypoints.md +344 -0
  511. package/docs/plugins/sdk-migration.md +1011 -0
  512. package/docs/plugins/sdk-overview.md +525 -0
  513. package/docs/plugins/sdk-provider-plugins.md +1019 -0
  514. package/docs/plugins/sdk-runtime.md +683 -0
  515. package/docs/plugins/sdk-setup.md +550 -0
  516. package/docs/plugins/sdk-subpaths.md +401 -0
  517. package/docs/plugins/sdk-testing.md +403 -0
  518. package/docs/plugins/tool-plugins.md +411 -0
  519. package/docs/plugins/voice-call.md +942 -0
  520. package/docs/plugins/webhooks.md +192 -0
  521. package/docs/plugins/workboard.md +402 -0
  522. package/docs/plugins/zalouser.md +86 -0
  523. package/docs/prose.md +191 -0
  524. package/docs/providers/alibaba.md +158 -0
  525. package/docs/providers/anthropic.md +386 -0
  526. package/docs/providers/arcee.md +144 -0
  527. package/docs/providers/azure-speech.md +119 -0
  528. package/docs/providers/bedrock-mantle.md +224 -0
  529. package/docs/providers/bedrock.md +433 -0
  530. package/docs/providers/cerebras.md +130 -0
  531. package/docs/providers/chutes.md +153 -0
  532. package/docs/providers/claude-max-api-proxy.md +191 -0
  533. package/docs/providers/cloudflare-ai-gateway.md +119 -0
  534. package/docs/providers/comfy.md +362 -0
  535. package/docs/providers/deepgram.md +184 -0
  536. package/docs/providers/deepinfra.md +92 -0
  537. package/docs/providers/deepseek.md +146 -0
  538. package/docs/providers/ds4.md +309 -0
  539. package/docs/providers/elevenlabs.md +130 -0
  540. package/docs/providers/fal.md +240 -0
  541. package/docs/providers/fireworks.md +144 -0
  542. package/docs/providers/github-copilot.md +257 -0
  543. package/docs/providers/gmi.md +92 -0
  544. package/docs/providers/google.md +472 -0
  545. package/docs/providers/gradium.md +123 -0
  546. package/docs/providers/groq.md +171 -0
  547. package/docs/providers/huggingface.md +235 -0
  548. package/docs/providers/index.md +105 -0
  549. package/docs/providers/inferrs.md +272 -0
  550. package/docs/providers/inworld.md +120 -0
  551. package/docs/providers/kilocode.md +135 -0
  552. package/docs/providers/litellm.md +234 -0
  553. package/docs/providers/lmstudio.md +224 -0
  554. package/docs/providers/minimax.md +518 -0
  555. package/docs/providers/mistral.md +235 -0
  556. package/docs/providers/models.md +64 -0
  557. package/docs/providers/moonshot.md +413 -0
  558. package/docs/providers/novita.md +92 -0
  559. package/docs/providers/nvidia.md +208 -0
  560. package/docs/providers/ollama-cloud.md +115 -0
  561. package/docs/providers/ollama.md +1225 -0
  562. package/docs/providers/openai.md +1091 -0
  563. package/docs/providers/opencode-go.md +123 -0
  564. package/docs/providers/opencode.md +149 -0
  565. package/docs/providers/openrouter.md +390 -0
  566. package/docs/providers/perplexity-provider.md +123 -0
  567. package/docs/providers/pixverse.md +165 -0
  568. package/docs/providers/qianfan.md +132 -0
  569. package/docs/providers/qwen-oauth.md +115 -0
  570. package/docs/providers/qwen.md +364 -0
  571. package/docs/providers/runway.md +103 -0
  572. package/docs/providers/senseaudio.md +68 -0
  573. package/docs/providers/sglang.md +161 -0
  574. package/docs/providers/stepfun.md +229 -0
  575. package/docs/providers/synthetic.md +154 -0
  576. package/docs/providers/tencent.md +130 -0
  577. package/docs/providers/together.md +140 -0
  578. package/docs/providers/venice.md +312 -0
  579. package/docs/providers/vercel-ai-gateway.md +128 -0
  580. package/docs/providers/vllm.md +407 -0
  581. package/docs/providers/volcengine.md +199 -0
  582. package/docs/providers/vydra.md +180 -0
  583. package/docs/providers/xai.md +571 -0
  584. package/docs/providers/xiaomi.md +286 -0
  585. package/docs/providers/zai.md +224 -0
  586. package/docs/refactor/access.md +9 -0
  587. package/docs/refactor/acp.md +298 -0
  588. package/docs/refactor/canvas.md +131 -0
  589. package/docs/refactor/database-first.md +2263 -0
  590. package/docs/refactor/ingress-core.md +341 -0
  591. package/docs/reference/AGENTS.default.md +131 -0
  592. package/docs/reference/RELEASING.md +844 -0
  593. package/docs/reference/api-usage-costs.md +208 -0
  594. package/docs/reference/application-modernization-plan.md +208 -0
  595. package/docs/reference/code-mode.md +1058 -0
  596. package/docs/reference/credits.md +33 -0
  597. package/docs/reference/device-models.md +50 -0
  598. package/docs/reference/full-release-validation.md +206 -0
  599. package/docs/reference/memory-config.md +630 -0
  600. package/docs/reference/prompt-caching.md +358 -0
  601. package/docs/reference/release-performance-sweep.md +347 -0
  602. package/docs/reference/rich-output-protocol.md +93 -0
  603. package/docs/reference/rpc.md +43 -0
  604. package/docs/reference/secret-placeholder-conventions.md +33 -0
  605. package/docs/reference/secretref-credential-surface.md +163 -0
  606. package/docs/reference/secretref-user-supplied-credentials-matrix.json +691 -0
  607. package/docs/reference/session-management-compaction.md +474 -0
  608. package/docs/reference/templates/AGENTS.dev.md +90 -0
  609. package/docs/reference/templates/AGENTS.md +227 -0
  610. package/docs/reference/templates/BOOT.md +16 -0
  611. package/docs/reference/templates/BOOTSTRAP.md +66 -0
  612. package/docs/reference/templates/HEARTBEAT.md +24 -0
  613. package/docs/reference/templates/IDENTITY.dev.md +52 -0
  614. package/docs/reference/templates/IDENTITY.md +34 -0
  615. package/docs/reference/templates/SOUL.dev.md +82 -0
  616. package/docs/reference/templates/SOUL.md +49 -0
  617. package/docs/reference/templates/TOOLS.dev.md +29 -0
  618. package/docs/reference/templates/TOOLS.md +51 -0
  619. package/docs/reference/templates/USER.dev.md +23 -0
  620. package/docs/reference/templates/USER.md +28 -0
  621. package/docs/reference/test.md +248 -0
  622. package/docs/reference/token-use.md +246 -0
  623. package/docs/reference/transcript-hygiene.md +226 -0
  624. package/docs/reference/wizard.md +252 -0
  625. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
  626. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  627. package/docs/security/formal-verification.md +170 -0
  628. package/docs/security/incident-response.md +59 -0
  629. package/docs/security/network-proxy.md +268 -0
  630. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
  631. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  632. package/docs/specs/claw-supervisor.md +247 -0
  633. package/docs/start/bootstrapping.md +49 -0
  634. package/docs/start/docs-directory.md +69 -0
  635. package/docs/start/getting-started.md +152 -0
  636. package/docs/start/hubs.md +201 -0
  637. package/docs/start/lore.md +223 -0
  638. package/docs/start/onboarding-overview.md +72 -0
  639. package/docs/start/onboarding.md +98 -0
  640. package/docs/start/openclaw.md +246 -0
  641. package/docs/start/quickstart.md +25 -0
  642. package/docs/start/setup.md +178 -0
  643. package/docs/start/showcase.md +371 -0
  644. package/docs/start/wizard-cli-automation.md +232 -0
  645. package/docs/start/wizard-cli-reference.md +331 -0
  646. package/docs/start/wizard.md +142 -0
  647. package/docs/style.css +137 -0
  648. package/docs/tools/acp-agents-setup.md +356 -0
  649. package/docs/tools/acp-agents.md +865 -0
  650. package/docs/tools/agent-send.md +130 -0
  651. package/docs/tools/apply-patch.md +64 -0
  652. package/docs/tools/brave-search.md +139 -0
  653. package/docs/tools/browser-control.md +405 -0
  654. package/docs/tools/browser-linux-troubleshooting.md +173 -0
  655. package/docs/tools/browser-login.md +77 -0
  656. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
  657. package/docs/tools/browser.md +866 -0
  658. package/docs/tools/btw.md +159 -0
  659. package/docs/tools/capability-cookbook.md +12 -0
  660. package/docs/tools/clawhub.md +5 -0
  661. package/docs/tools/code-execution.md +173 -0
  662. package/docs/tools/creating-skills.md +271 -0
  663. package/docs/tools/diffs.md +527 -0
  664. package/docs/tools/duckduckgo-search.md +109 -0
  665. package/docs/tools/elevated.md +128 -0
  666. package/docs/tools/exa-search.md +152 -0
  667. package/docs/tools/exec-approvals-advanced.md +457 -0
  668. package/docs/tools/exec-approvals.md +520 -0
  669. package/docs/tools/exec.md +294 -0
  670. package/docs/tools/firecrawl.md +155 -0
  671. package/docs/tools/gemini-search.md +114 -0
  672. package/docs/tools/goal.md +217 -0
  673. package/docs/tools/grok-search.md +129 -0
  674. package/docs/tools/image-generation.md +538 -0
  675. package/docs/tools/index.md +176 -0
  676. package/docs/tools/kimi-search.md +105 -0
  677. package/docs/tools/llm-task.md +137 -0
  678. package/docs/tools/lobster.md +365 -0
  679. package/docs/tools/loop-detection.md +154 -0
  680. package/docs/tools/media-overview.md +161 -0
  681. package/docs/tools/minimax-search.md +102 -0
  682. package/docs/tools/multi-agent-sandbox-tools.md +409 -0
  683. package/docs/tools/music-generation.md +372 -0
  684. package/docs/tools/ollama-search.md +153 -0
  685. package/docs/tools/parallel-search.md +154 -0
  686. package/docs/tools/pdf.md +213 -0
  687. package/docs/tools/permission-modes.md +111 -0
  688. package/docs/tools/perplexity-search.md +220 -0
  689. package/docs/tools/plugin.md +378 -0
  690. package/docs/tools/reactions.md +100 -0
  691. package/docs/tools/searxng-search.md +141 -0
  692. package/docs/tools/skill-workshop.md +283 -0
  693. package/docs/tools/skills-config.md +457 -0
  694. package/docs/tools/skills.md +591 -0
  695. package/docs/tools/slash-commands.md +518 -0
  696. package/docs/tools/steer.md +77 -0
  697. package/docs/tools/subagents.md +652 -0
  698. package/docs/tools/tavily.md +162 -0
  699. package/docs/tools/thinking.md +142 -0
  700. package/docs/tools/tokenjuice.md +84 -0
  701. package/docs/tools/tool-search.md +269 -0
  702. package/docs/tools/trajectory.md +229 -0
  703. package/docs/tools/tts.md +1013 -0
  704. package/docs/tools/video-generation.md +555 -0
  705. package/docs/tools/web-fetch.md +210 -0
  706. package/docs/tools/web.md +476 -0
  707. package/docs/tts.md +11 -0
  708. package/docs/vps.md +139 -0
  709. package/docs/web/control-ui.md +530 -0
  710. package/docs/web/dashboard.md +107 -0
  711. package/docs/web/index.md +133 -0
  712. package/docs/web/tui.md +258 -0
  713. package/docs/web/webchat.md +102 -0
  714. package/npm-shrinkwrap.json +3485 -0
  715. package/openclaw.mjs +661 -0
  716. package/package.json +1971 -0
  717. package/patches/.gitkeep +0 -0
  718. package/patches/@agentclientprotocol__claude-agent-acp@0.39.0.patch +40 -0
  719. package/pnpm-workspace.yaml +124 -0
  720. package/scripts/crabbox-wrapper.mjs +2470 -0
  721. package/scripts/lib/official-external-channel-catalog.json +570 -0
  722. package/scripts/lib/official-external-plugin-catalog.json +284 -0
  723. package/scripts/lib/official-external-provider-catalog.json +158 -0
  724. package/scripts/lib/package-dist-imports.mjs +174 -0
  725. package/scripts/npm-runner.mjs +95 -0
  726. package/scripts/postinstall-bundled-plugins.mjs +978 -0
  727. package/scripts/preinstall-package-manager-warning.mjs +74 -0
  728. package/scripts/prepare-git-hooks.mjs +73 -0
  729. package/scripts/windows-cmd-helpers.mjs +29 -0
  730. package/skills/1password/SKILL.md +70 -0
  731. package/skills/1password/references/cli-examples.md +29 -0
  732. package/skills/1password/references/get-started.md +17 -0
  733. package/skills/apple-notes/SKILL.md +77 -0
  734. package/skills/apple-reminders/SKILL.md +118 -0
  735. package/skills/bear-notes/SKILL.md +107 -0
  736. package/skills/blogwatcher/SKILL.md +69 -0
  737. package/skills/blucli/SKILL.md +47 -0
  738. package/skills/camsnap/SKILL.md +45 -0
  739. package/skills/canvas/SKILL.md +78 -0
  740. package/skills/clawhub/SKILL.md +77 -0
  741. package/skills/coding-agent/SKILL.md +143 -0
  742. package/skills/diagram-maker/SKILL.md +53 -0
  743. package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
  744. package/skills/diagram-maker/references/svg-template.md +112 -0
  745. package/skills/discord/SKILL.md +136 -0
  746. package/skills/eightctl/SKILL.md +50 -0
  747. package/skills/gemini/SKILL.md +47 -0
  748. package/skills/gh-issues/SKILL.md +213 -0
  749. package/skills/gifgrep/SKILL.md +85 -0
  750. package/skills/github/SKILL.md +84 -0
  751. package/skills/gog/SKILL.md +116 -0
  752. package/skills/goplaces/SKILL.md +52 -0
  753. package/skills/healthcheck/SKILL.md +105 -0
  754. package/skills/himalaya/SKILL.md +80 -0
  755. package/skills/himalaya/references/configuration.md +184 -0
  756. package/skills/himalaya/references/message-composition.md +199 -0
  757. package/skills/imsg/SKILL.md +122 -0
  758. package/skills/mcporter/SKILL.md +61 -0
  759. package/skills/meme-maker/SKILL.md +42 -0
  760. package/skills/meme-maker/references/templates.json +358 -0
  761. package/skills/meme-maker/scripts/meme.mjs +398 -0
  762. package/skills/model-usage/SKILL.md +71 -0
  763. package/skills/model-usage/references/codexbar-cli.md +33 -0
  764. package/skills/model-usage/scripts/model_usage.py +319 -0
  765. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  766. package/skills/nano-pdf/SKILL.md +38 -0
  767. package/skills/node-connect/SKILL.md +143 -0
  768. package/skills/node-inspect-debugger/SKILL.md +85 -0
  769. package/skills/notion/SKILL.md +150 -0
  770. package/skills/obsidian/SKILL.md +119 -0
  771. package/skills/openai-whisper/SKILL.md +38 -0
  772. package/skills/openai-whisper-api/SKILL.md +71 -0
  773. package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
  774. package/skills/openhue/SKILL.md +112 -0
  775. package/skills/oracle/SKILL.md +126 -0
  776. package/skills/ordercli/SKILL.md +78 -0
  777. package/skills/peekaboo/SKILL.md +198 -0
  778. package/skills/pyproject.toml +10 -0
  779. package/skills/python-debugpy/SKILL.md +73 -0
  780. package/skills/sag/SKILL.md +87 -0
  781. package/skills/session-logs/SKILL.md +151 -0
  782. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  783. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  784. package/skills/skill-creator/SKILL.md +78 -0
  785. package/skills/skill-creator/license.txt +202 -0
  786. package/skills/skill-creator/scripts/init_skill.py +378 -0
  787. package/skills/skill-creator/scripts/package_skill.py +144 -0
  788. package/skills/skill-creator/scripts/quick_validate.py +169 -0
  789. package/skills/skill-creator/scripts/test_package_skill.py +199 -0
  790. package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
  791. package/skills/slack/SKILL.md +78 -0
  792. package/skills/songsee/SKILL.md +49 -0
  793. package/skills/sonoscli/SKILL.md +65 -0
  794. package/skills/spike/SKILL.md +51 -0
  795. package/skills/spotify-player/SKILL.md +64 -0
  796. package/skills/summarize/SKILL.md +87 -0
  797. package/skills/taskflow/SKILL.md +149 -0
  798. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  799. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  800. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  801. package/skills/things-mac/SKILL.md +86 -0
  802. package/skills/tmux/SKILL.md +91 -0
  803. package/skills/tmux/scripts/find-sessions.sh +112 -0
  804. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  805. package/skills/trello/SKILL.md +108 -0
  806. package/skills/video-frames/SKILL.md +46 -0
  807. package/skills/video-frames/scripts/frame.sh +81 -0
  808. package/skills/voice-call/SKILL.md +45 -0
  809. package/skills/wacli/SKILL.md +72 -0
  810. package/skills/weather/SKILL.md +87 -0
  811. package/skills/xurl/SKILL.md +120 -0
  812. package/src/agents/templates/HEARTBEAT.md +5 -0
@@ -0,0 +1,210 @@
1
+ ---
2
+ summary: "web_fetch tool -- HTTP fetch with readable content extraction"
3
+ read_when:
4
+ - You want to fetch a URL and extract readable content
5
+ - You need to configure web_fetch or its Firecrawl fallback
6
+ - You want to understand web_fetch limits and caching
7
+ title: "Web fetch"
8
+ sidebarTitle: "Web Fetch"
9
+ ---
10
+
11
+ The `web_fetch` tool does a plain HTTP GET and extracts readable content
12
+ (HTML to markdown or text). It does **not** execute JavaScript.
13
+
14
+ For JS-heavy sites or login-protected pages, use the
15
+ [Web Browser](/tools/browser) instead.
16
+
17
+ ## Quick start
18
+
19
+ `web_fetch` is **enabled by default** -- no configuration needed. The agent can
20
+ call it immediately:
21
+
22
+ ```javascript
23
+ await web_fetch({ url: "https://example.com/article" });
24
+ ```
25
+
26
+ ## Tool parameters
27
+
28
+ <ParamField path="url" type="string" required>
29
+ URL to fetch. `http(s)` only.
30
+ </ParamField>
31
+
32
+ <ParamField path="extractMode" type="'markdown' | 'text'" default="markdown">
33
+ Output format after main-content extraction.
34
+ </ParamField>
35
+
36
+ <ParamField path="maxChars" type="number">
37
+ Truncate output to this many characters.
38
+ </ParamField>
39
+
40
+ ## How it works
41
+
42
+ <Steps>
43
+ <Step title="Fetch">
44
+ Sends an HTTP GET with a Chrome-like User-Agent and `Accept-Language`
45
+ header. Blocks private/internal hostnames and re-checks redirects.
46
+ </Step>
47
+ <Step title="Extract">
48
+ Runs Readability (main-content extraction) on the HTML response.
49
+ </Step>
50
+ <Step title="Fallback (optional)">
51
+ If Readability fails and Firecrawl is configured, retries through the
52
+ Firecrawl API with bot-circumvention mode.
53
+ </Step>
54
+ <Step title="Cache">
55
+ Results are cached for 15 minutes (configurable) to reduce repeated
56
+ fetches of the same URL.
57
+ </Step>
58
+ </Steps>
59
+
60
+ ## Progress updates
61
+
62
+ `web_fetch` emits a public progress line only when the fetch is still pending
63
+ after five seconds:
64
+
65
+ ```text
66
+ Fetching page content...
67
+ ```
68
+
69
+ Fast cache hits and quick network responses finish before the timer fires, so
70
+ they do not show a progress line. If the call is canceled, the timer is cleared.
71
+ When the fetch eventually completes, the agent receives the normal tool result;
72
+ the progress line is only channel UI state and never contains fetched page
73
+ content.
74
+
75
+ ## Config
76
+
77
+ ```json5
78
+ {
79
+ tools: {
80
+ web: {
81
+ fetch: {
82
+ enabled: true, // default: true
83
+ provider: "firecrawl", // optional; omit for auto-detect
84
+ maxChars: 50000, // max output chars
85
+ maxCharsCap: 50000, // hard cap for maxChars param
86
+ maxResponseBytes: 2000000, // max download size before truncation
87
+ timeoutSeconds: 30,
88
+ cacheTtlMinutes: 15,
89
+ maxRedirects: 3,
90
+ useTrustedEnvProxy: false, // let a trusted HTTP(S) env proxy resolve DNS
91
+ readability: true, // use Readability extraction
92
+ userAgent: "Mozilla/5.0 ...", // override User-Agent
93
+ ssrfPolicy: {
94
+ allowRfc2544BenchmarkRange: true, // opt-in for trusted fake-IP proxies using 198.18.0.0/15
95
+ allowIpv6UniqueLocalRange: true, // opt-in for trusted fake-IP proxies using fc00::/7
96
+ },
97
+ },
98
+ },
99
+ },
100
+ }
101
+ ```
102
+
103
+ ## Firecrawl fallback
104
+
105
+ If Readability extraction fails, `web_fetch` can fall back to
106
+ [Firecrawl](/tools/firecrawl) for bot-circumvention and better extraction:
107
+
108
+ ```json5
109
+ {
110
+ tools: {
111
+ web: {
112
+ fetch: {
113
+ provider: "firecrawl", // optional; omit for auto-detect from available credentials
114
+ },
115
+ },
116
+ },
117
+ plugins: {
118
+ entries: {
119
+ firecrawl: {
120
+ enabled: true,
121
+ config: {
122
+ webFetch: {
123
+ apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set
124
+ baseUrl: "https://api.firecrawl.dev",
125
+ onlyMainContent: true,
126
+ maxAgeMs: 86400000, // cache duration (1 day)
127
+ timeoutSeconds: 60,
128
+ },
129
+ },
130
+ },
131
+ },
132
+ },
133
+ }
134
+ ```
135
+
136
+ `plugins.entries.firecrawl.config.webFetch.apiKey` supports SecretRef objects.
137
+ Legacy `tools.web.fetch.firecrawl.*` config is auto-migrated by `openclaw doctor --fix`.
138
+
139
+ <Note>
140
+ If Firecrawl is enabled and its SecretRef is unresolved with no
141
+ `FIRECRAWL_API_KEY` env fallback, gateway startup fails fast.
142
+ </Note>
143
+
144
+ <Note>
145
+ Firecrawl `baseUrl` overrides are locked down: hosted traffic uses
146
+ `https://api.firecrawl.dev`; self-hosted overrides must target private or
147
+ internal endpoints, and `http://` is accepted only for those private targets.
148
+ </Note>
149
+
150
+ Current runtime behavior:
151
+
152
+ - `tools.web.fetch.provider` selects the fetch fallback provider explicitly.
153
+ - If `provider` is omitted, OpenClaw auto-detects the first ready web-fetch
154
+ provider from available credentials. Non-sandboxed `web_fetch` can use
155
+ installed plugins that declare `contracts.webFetchProviders` and register a
156
+ matching provider at runtime. Today the bundled provider is Firecrawl.
157
+ - Sandboxed `web_fetch` calls stay limited to bundled providers.
158
+ - If Readability is disabled, `web_fetch` skips straight to the selected
159
+ provider fallback. If no provider is available, it fails closed.
160
+
161
+ ## Trusted env proxy
162
+
163
+ If your deployment requires `web_fetch` to go through a trusted outbound
164
+ HTTP(S) proxy, set `tools.web.fetch.useTrustedEnvProxy: true`.
165
+
166
+ In this mode, OpenClaw still applies hostname-based SSRF checks before sending
167
+ the request, but it lets the proxy resolve DNS instead of doing local DNS
168
+ pinning. Enable this only when the proxy is operator-controlled and enforces
169
+ outbound policy after DNS resolution.
170
+
171
+ <Note>
172
+ If no HTTP(S) proxy env var is configured, or the target host is excluded by
173
+ `NO_PROXY`, `web_fetch` falls back to the normal strict path with local DNS
174
+ pinning.
175
+ </Note>
176
+
177
+ ## Limits and safety
178
+
179
+ - `maxChars` is clamped to `tools.web.fetch.maxCharsCap`
180
+ - Response body is capped at `maxResponseBytes` before parsing; oversized
181
+ responses are truncated with a warning
182
+ - Private/internal hostnames are blocked
183
+ - `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` and
184
+ `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` are narrow opt-ins
185
+ for trusted fake-IP proxy stacks; leave them unset unless your proxy owns
186
+ those synthetic ranges and enforces its own destination policy
187
+ - Redirects are checked and limited by `maxRedirects`
188
+ - `useTrustedEnvProxy` is an explicit opt-in and should only be enabled for
189
+ operator-controlled proxies that still enforce outbound policy after DNS
190
+ resolution
191
+ - `web_fetch` is best-effort -- some sites need the [Web Browser](/tools/browser)
192
+
193
+ ## Tool profiles
194
+
195
+ If you use tool profiles or allowlists, add `web_fetch` or `group:web`:
196
+
197
+ ```json5
198
+ {
199
+ tools: {
200
+ allow: ["web_fetch"],
201
+ // or: allow: ["group:web"] (includes web_fetch, web_search, and x_search)
202
+ },
203
+ }
204
+ ```
205
+
206
+ ## Related
207
+
208
+ - [Web Search](/tools/web) -- search the web with multiple providers
209
+ - [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
210
+ - [Firecrawl](/tools/firecrawl) -- Firecrawl search and scrape tools
@@ -0,0 +1,476 @@
1
+ ---
2
+ summary: "web_search, x_search, and web_fetch -- search the web, search X posts, or fetch page content"
3
+ title: "Web search"
4
+ sidebarTitle: "Web Search"
5
+ read_when:
6
+ - You want to enable or configure web_search
7
+ - You want to enable or configure x_search
8
+ - You need to choose a search provider
9
+ - You want to understand auto-detection and provider fallback
10
+ ---
11
+
12
+ The `web_search` tool searches the web using your configured provider and
13
+ returns results. Results are cached by query for 15 minutes (configurable).
14
+
15
+ OpenClaw also includes `x_search` for X (formerly Twitter) posts and
16
+ `web_fetch` for lightweight URL fetching. In this phase, `web_fetch` stays
17
+ local while `web_search` and `x_search` can use xAI Responses under the hood.
18
+
19
+ <Info>
20
+ `web_search` is a lightweight HTTP tool, not browser automation. For
21
+ JS-heavy sites or logins, use the [Web Browser](/tools/browser). For
22
+ fetching a specific URL, use [Web Fetch](/tools/web-fetch).
23
+ </Info>
24
+
25
+ ## Quick start
26
+
27
+ <Steps>
28
+ <Step title="Choose a provider">
29
+ Pick a provider and complete any required setup. Some providers are
30
+ key-free, while others use API keys. See the provider pages below for
31
+ details.
32
+ </Step>
33
+ <Step title="Configure">
34
+ ```bash
35
+ openclaw configure --section web
36
+ ```
37
+ This stores the provider and any needed credential. You can also set an env
38
+ var (for example `BRAVE_API_KEY`) and skip this step for API-backed
39
+ providers.
40
+ </Step>
41
+ <Step title="Use it">
42
+ The agent can now call `web_search`:
43
+
44
+ ```javascript
45
+ await web_search({ query: "OpenClaw plugin SDK" });
46
+ ```
47
+
48
+ For X posts, use:
49
+
50
+ ```javascript
51
+ await x_search({ query: "dinner recipes" });
52
+ ```
53
+
54
+ </Step>
55
+ </Steps>
56
+
57
+ ## Choosing a provider
58
+
59
+ <CardGroup cols={2}>
60
+ <Card title="Brave Search" icon="shield" href="/tools/brave-search">
61
+ Structured results with snippets. Supports `llm-context` mode, country/language filters. Free tier available.
62
+ </Card>
63
+ <Card title="DuckDuckGo" icon="bird" href="/tools/duckduckgo-search">
64
+ Key-free fallback. No API key needed. Unofficial HTML-based integration.
65
+ </Card>
66
+ <Card title="Exa" icon="brain" href="/tools/exa-search">
67
+ Neural + keyword search with content extraction (highlights, text, summaries).
68
+ </Card>
69
+ <Card title="Firecrawl" icon="flame" href="/tools/firecrawl">
70
+ Structured results. Best paired with `firecrawl_search` and `firecrawl_scrape` for deep extraction.
71
+ </Card>
72
+ <Card title="Gemini" icon="sparkles" href="/tools/gemini-search">
73
+ AI-synthesized answers with citations via Google Search grounding.
74
+ </Card>
75
+ <Card title="Grok" icon="zap" href="/tools/grok-search">
76
+ AI-synthesized answers with citations via xAI web grounding.
77
+ </Card>
78
+ <Card title="Kimi" icon="moon" href="/tools/kimi-search">
79
+ AI-synthesized answers with citations via Moonshot web search; ungrounded chat fallbacks fail explicitly.
80
+ </Card>
81
+ <Card title="MiniMax Search" icon="globe" href="/tools/minimax-search">
82
+ Structured results via the MiniMax Token Plan search API.
83
+ </Card>
84
+ <Card title="Ollama Web Search" icon="globe" href="/tools/ollama-search">
85
+ Search via a signed-in local Ollama host or the hosted Ollama API.
86
+ </Card>
87
+ <Card title="Parallel" icon="layer-group" href="/tools/parallel-search">
88
+ Paid Parallel Search API (`PARALLEL_API_KEY`); higher rate limits and objective tuning.
89
+ </Card>
90
+ <Card title="Parallel Search (Free)" icon="layer-group" href="/tools/parallel-search">
91
+ Zero-config default. Parallel's free Search MCP, with LLM-optimized dense excerpts and no API key.
92
+ </Card>
93
+ <Card title="Perplexity" icon="search" href="/tools/perplexity-search">
94
+ Structured results with content extraction controls and domain filtering.
95
+ </Card>
96
+ <Card title="SearXNG" icon="server" href="/tools/searxng-search">
97
+ Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.
98
+ </Card>
99
+ <Card title="Tavily" icon="globe" href="/tools/tavily">
100
+ Structured results with search depth, topic filtering, and `tavily_extract` for URL extraction.
101
+ </Card>
102
+ </CardGroup>
103
+
104
+ ### Provider comparison
105
+
106
+ | Provider | Result style | Filters | API key |
107
+ | ------------------------------------------------ | -------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------- |
108
+ | [Brave](/tools/brave-search) | Structured snippets | Country, language, time, `llm-context` mode | `BRAVE_API_KEY` |
109
+ | [DuckDuckGo](/tools/duckduckgo-search) | Structured snippets | -- | None (key-free) |
110
+ | [Exa](/tools/exa-search) | Structured + extracted | Neural/keyword mode, date, content extraction | `EXA_API_KEY` |
111
+ | [Firecrawl](/tools/firecrawl) | Structured snippets | Via `firecrawl_search` tool | `FIRECRAWL_API_KEY` |
112
+ | [Gemini](/tools/gemini-search) | AI-synthesized + citations | -- | `GEMINI_API_KEY` |
113
+ | [Grok](/tools/grok-search) | AI-synthesized + citations | -- | xAI OAuth, `XAI_API_KEY`, or `plugins.entries.xai.config.webSearch.apiKey` |
114
+ | [Kimi](/tools/kimi-search) | AI-synthesized + citations; fails on ungrounded chat fallbacks | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
115
+ | [MiniMax Search](/tools/minimax-search) | Structured snippets | Region (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` / `MINIMAX_OAUTH_TOKEN` |
116
+ | [Ollama Web Search](/tools/ollama-search) | Structured snippets | -- | None for signed-in local hosts; `OLLAMA_API_KEY` for direct `https://ollama.com` search |
117
+ | [Parallel](/tools/parallel-search) | Dense excerpts ranked for LLM context | -- | `PARALLEL_API_KEY` (paid) |
118
+ | [Parallel Search (Free)](/tools/parallel-search) | Dense excerpts ranked for LLM context | -- | None (free Search MCP) |
119
+ | [Perplexity](/tools/perplexity-search) | Structured snippets | Country, language, time, domains, content limits | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
120
+ | [SearXNG](/tools/searxng-search) | Structured snippets | Categories, language | None (self-hosted) |
121
+ | [Tavily](/tools/tavily) | Structured snippets | Via `tavily_search` tool | `TAVILY_API_KEY` |
122
+
123
+ ## Auto-detection
124
+
125
+ ## Native OpenAI web search
126
+
127
+ Direct OpenAI Responses models use OpenAI's hosted `web_search` tool automatically when OpenClaw web search is enabled and no managed provider is pinned. This is provider-owned behavior in the bundled OpenAI plugin and only applies to native OpenAI API traffic, not OpenAI-compatible proxy base URLs or Azure routes. Set `tools.web.search.provider` to another provider such as `brave` to keep the managed `web_search` tool for OpenAI models, or set `tools.web.search.enabled: false` to disable both managed search and native OpenAI search.
128
+
129
+ ## Native Codex web search
130
+
131
+ Codex-capable models can optionally use the provider-native Responses `web_search` tool instead of OpenClaw's managed `web_search` function.
132
+
133
+ - Configure it under `tools.web.search.openaiCodex`
134
+ - It only activates for Codex-capable OpenAI models (`openai/*` models using `api: "openai-chatgpt-responses"`)
135
+ - Managed `web_search` still applies to non-Codex models
136
+ - `mode: "cached"` is the default and recommended setting
137
+ - `tools.web.search.enabled: false` disables both managed and native search
138
+
139
+ ```json5
140
+ {
141
+ tools: {
142
+ web: {
143
+ search: {
144
+ enabled: true,
145
+ openaiCodex: {
146
+ enabled: true,
147
+ mode: "cached",
148
+ allowedDomains: ["example.com"],
149
+ contextSize: "high",
150
+ userLocation: {
151
+ country: "US",
152
+ city: "New York",
153
+ timezone: "America/New_York",
154
+ },
155
+ },
156
+ },
157
+ },
158
+ },
159
+ }
160
+ ```
161
+
162
+ If native Codex search is enabled but the current model is not Codex-capable, OpenClaw keeps the normal managed `web_search` behavior.
163
+
164
+ ## Network safety
165
+
166
+ Managed `web_search` provider calls use OpenClaw's guarded fetch path. For
167
+ trusted provider API hosts, OpenClaw allows Surge, Clash, and sing-box fake-IP
168
+ DNS answers in `198.18.0.0/15` and `fc00::/7` only for that provider hostname.
169
+ Other private, loopback, link-local, and metadata destinations remain blocked.
170
+
171
+ This automatic allowance does not apply to arbitrary `web_fetch` URLs. For
172
+ `web_fetch`, enable `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` and
173
+ `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` explicitly only when your
174
+ trusted proxy owns those synthetic ranges.
175
+
176
+ ## Setting up web search
177
+
178
+ Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a
179
+ separate precedence order.
180
+
181
+ If no `provider` is set, OpenClaw checks providers in this order and uses the
182
+ first one that is ready:
183
+
184
+ API-backed providers first:
185
+
186
+ 1. **Brave** -- `BRAVE_API_KEY` or `plugins.entries.brave.config.webSearch.apiKey` (order 10)
187
+ 2. **MiniMax Search** -- `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` / `MINIMAX_OAUTH_TOKEN` / `MINIMAX_API_KEY` or `plugins.entries.minimax.config.webSearch.apiKey` (order 15)
188
+ 3. **Gemini** -- `plugins.entries.google.config.webSearch.apiKey`, `GEMINI_API_KEY`, or `models.providers.google.apiKey` (order 20)
189
+ 4. **Grok** -- xAI OAuth, `XAI_API_KEY`, or `plugins.entries.xai.config.webSearch.apiKey` (order 30)
190
+ 5. **Kimi** -- `KIMI_API_KEY` / `MOONSHOT_API_KEY` or `plugins.entries.moonshot.config.webSearch.apiKey` (order 40)
191
+ 6. **Perplexity** -- `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` or `plugins.entries.perplexity.config.webSearch.apiKey` (order 50)
192
+ 7. **Firecrawl** -- `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webSearch.apiKey` (order 60)
193
+ 8. **Exa** -- `EXA_API_KEY` or `plugins.entries.exa.config.webSearch.apiKey`; optional `plugins.entries.exa.config.webSearch.baseUrl` overrides the Exa endpoint (order 65)
194
+ 9. **Tavily** -- `TAVILY_API_KEY` or `plugins.entries.tavily.config.webSearch.apiKey` (order 70)
195
+ 10. **Parallel** -- paid Parallel Search API via `PARALLEL_API_KEY` or `plugins.entries.parallel.config.webSearch.apiKey`; optional `plugins.entries.parallel.config.webSearch.baseUrl` overrides the endpoint (order 75)
196
+
197
+ Key-free fallbacks after that:
198
+
199
+ 11. **Parallel Search (Free)** -- the zero-config default: works with no account or API key via Parallel's free hosted [Search MCP](https://docs.parallel.ai/integrations/mcp/search-mcp) (order 76)
200
+ 12. **DuckDuckGo** -- key-free HTML fallback with no account or API key (order 100)
201
+ 13. **Ollama Web Search** -- key-free fallback via your configured local Ollama host when it is reachable and signed in with `ollama signin`; can reuse Ollama provider bearer auth when the host needs it, and can call direct `https://ollama.com` search when configured with `OLLAMA_API_KEY` (order 110)
202
+ 14. **SearXNG** -- `SEARXNG_BASE_URL` or `plugins.entries.searxng.config.webSearch.baseUrl` (order 200)
203
+
204
+ When no API-backed provider is configured, OpenClaw defaults to **Parallel
205
+ Search (Free)**, so `web_search` works without an API key.
206
+
207
+ OpenAI Responses models are an exception: while `tools.web.search.provider` is
208
+ unset, they use OpenAI's native web search instead of the managed providers
209
+ above. Set `tools.web.search.provider` to `parallel-free` (or another provider)
210
+ to route them through the managed path.
211
+
212
+ <Note>
213
+ All provider key fields support SecretRef objects. Plugin-scoped SecretRefs
214
+ under `plugins.entries.<plugin>.config.webSearch.apiKey` are resolved for the
215
+ bundled API-backed web search providers, including Brave, Exa, Firecrawl,
216
+ Gemini, Grok, Kimi, MiniMax, Parallel, Perplexity, and Tavily,
217
+ whether the provider is picked explicitly via `tools.web.search.provider` or
218
+ selected through auto-detect. In auto-detect mode, OpenClaw resolves only the
219
+ selected provider key -- non-selected SecretRefs stay inactive, so you can
220
+ keep multiple providers configured without paying resolution cost for the
221
+ ones you are not using.
222
+ </Note>
223
+
224
+ ## Config
225
+
226
+ ```json5
227
+ {
228
+ tools: {
229
+ web: {
230
+ search: {
231
+ enabled: true, // default: true
232
+ provider: "brave", // or omit for auto-detection
233
+ maxResults: 5,
234
+ timeoutSeconds: 30,
235
+ cacheTtlMinutes: 15,
236
+ },
237
+ },
238
+ },
239
+ }
240
+ ```
241
+
242
+ Provider-specific config (API keys, base URLs, modes) lives under
243
+ `plugins.entries.<plugin>.config.webSearch.*`. Gemini can also reuse
244
+ `models.providers.google.apiKey` and `models.providers.google.baseUrl` as lower-priority
245
+ fallbacks after its dedicated web-search config and `GEMINI_API_KEY`. See the
246
+ provider pages for examples.
247
+ Grok can also reuse an xAI OAuth auth profile from `openclaw models auth login
248
+ --provider xai --method oauth`; API-key config remains the fallback.
249
+
250
+ `tools.web.search.provider` is validated against the web-search provider ids
251
+ declared by bundled and installed plugin manifests. A typo such as `"brvae"`
252
+ fails config validation instead of silently falling back to auto-detection. If a
253
+ configured provider only has stale plugin evidence, such as a leftover
254
+ `plugins.entries.<plugin>` block after uninstalling a third-party plugin,
255
+ OpenClaw keeps startup resilient and reports a warning so you can reinstall the
256
+ plugin or run `openclaw doctor --fix` to clean up the stale config.
257
+
258
+ `web_fetch` fallback provider selection is separate:
259
+
260
+ - choose it with `tools.web.fetch.provider`
261
+ - or omit that field and let OpenClaw auto-detect the first ready web-fetch
262
+ provider from available credentials
263
+ - non-sandboxed `web_fetch` can use installed plugin providers that declare
264
+ `contracts.webFetchProviders`; sandboxed fetches stay bundled-only
265
+ - today the bundled web-fetch provider is Firecrawl, configured under
266
+ `plugins.entries.firecrawl.config.webFetch.*`
267
+
268
+ When you choose **Kimi** during `openclaw onboard` or
269
+ `openclaw configure --section web`, OpenClaw can also ask for:
270
+
271
+ - the Moonshot API region (`https://api.moonshot.ai/v1` or `https://api.moonshot.cn/v1`)
272
+ - the default Kimi web-search model (defaults to `kimi-k2.6`)
273
+
274
+ For `x_search`, configure `plugins.entries.xai.config.xSearch.*`. It uses the
275
+ same xAI auth profile as chat, or the `XAI_API_KEY` / plugin web-search
276
+ credential used by Grok web search.
277
+ Legacy `tools.web.x_search.*` config is auto-migrated by `openclaw doctor --fix`.
278
+ When you choose Grok during `openclaw onboard` or `openclaw configure --section web`,
279
+ OpenClaw can also offer optional `x_search` setup with the same credential.
280
+ This is a separate follow-up step inside the Grok path, not a separate top-level
281
+ web-search provider choice. If you pick another provider, OpenClaw does not
282
+ show the `x_search` prompt.
283
+
284
+ ### Storing API keys
285
+
286
+ <Tabs>
287
+ <Tab title="Config file">
288
+ Run `openclaw configure --section web` or set the key directly:
289
+
290
+ ```json5
291
+ {
292
+ plugins: {
293
+ entries: {
294
+ brave: {
295
+ config: {
296
+ webSearch: {
297
+ apiKey: "YOUR_KEY", // pragma: allowlist secret
298
+ },
299
+ },
300
+ },
301
+ },
302
+ },
303
+ }
304
+ ```
305
+
306
+ </Tab>
307
+ <Tab title="Environment variable">
308
+ Set the provider env var in the Gateway process environment:
309
+
310
+ ```bash
311
+ export BRAVE_API_KEY="YOUR_KEY"
312
+ ```
313
+
314
+ For a gateway install, put it in `~/.openclaw/.env`.
315
+ See [Env vars](/help/faq#env-vars-and-env-loading).
316
+
317
+ </Tab>
318
+ </Tabs>
319
+
320
+ ## Tool parameters
321
+
322
+ | Parameter | Description |
323
+ | --------------------- | ----------------------------------------------------- |
324
+ | `query` | Search query (required) |
325
+ | `count` | Results to return (1-10, default: 5) |
326
+ | `country` | 2-letter ISO country code (e.g. "US", "DE") |
327
+ | `language` | ISO 639-1 language code (e.g. "en", "de") |
328
+ | `search_lang` | Search-language code (Brave only) |
329
+ | `freshness` | Time filter: `day`, `week`, `month`, or `year` |
330
+ | `date_after` | Results after this date (YYYY-MM-DD) |
331
+ | `date_before` | Results before this date (YYYY-MM-DD) |
332
+ | `ui_lang` | UI language code (Brave only) |
333
+ | `domain_filter` | Domain allowlist/denylist array (Perplexity only) |
334
+ | `max_tokens` | Total content budget, default 25000 (Perplexity only) |
335
+ | `max_tokens_per_page` | Per-page token limit, default 2048 (Perplexity only) |
336
+
337
+ <Warning>
338
+ Not all parameters work with all providers. Brave `llm-context` mode
339
+ rejects `ui_lang`; `date_before` also needs `date_after` because Brave custom
340
+ freshness ranges require both start and end dates.
341
+ Gemini, Grok, and Kimi return one synthesized answer with citations. They
342
+ accept `count` for shared-tool compatibility, but it does not change the
343
+ grounded answer shape. Gemini supports `freshness`, `date_after`, and
344
+ `date_before` by converting them to Google Search grounding time ranges.
345
+ Perplexity behaves the same way when you use the Sonar/OpenRouter
346
+ compatibility path (`plugins.entries.perplexity.config.webSearch.baseUrl` /
347
+ `model` or `OPENROUTER_API_KEY`).
348
+ SearXNG accepts `http://` only for trusted private-network or loopback hosts;
349
+ public SearXNG endpoints must use `https://`.
350
+ Firecrawl and Tavily only support `query` and `count` through `web_search`
351
+ -- use their dedicated tools for advanced options.
352
+ </Warning>
353
+
354
+ ## x_search
355
+
356
+ `x_search` queries X (formerly Twitter) posts using xAI and returns
357
+ AI-synthesized answers with citations. It accepts natural-language queries and
358
+ optional structured filters. OpenClaw only enables the built-in xAI `x_search`
359
+ tool on the request that serves this tool call.
360
+
361
+ <Note>
362
+ xAI documents `x_search` as supporting keyword search, semantic search, user
363
+ search, and thread fetch. For per-post engagement stats such as reposts,
364
+ replies, bookmarks, or views, prefer a targeted lookup for the exact post URL
365
+ or status ID. Broad keyword searches may find the right post but return less
366
+ complete per-post metadata. A good pattern is: locate the post first, then
367
+ run a second `x_search` query focused on that exact post.
368
+ </Note>
369
+
370
+ ### x_search config
371
+
372
+ ```json5
373
+ {
374
+ plugins: {
375
+ entries: {
376
+ xai: {
377
+ config: {
378
+ xSearch: {
379
+ enabled: true,
380
+ model: "grok-4-1-fast-non-reasoning",
381
+ baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
382
+ inlineCitations: false,
383
+ maxTurns: 2,
384
+ timeoutSeconds: 30,
385
+ cacheTtlMinutes: 15,
386
+ },
387
+ webSearch: {
388
+ apiKey: "xai-...", // optional if an xAI auth profile or XAI_API_KEY is set
389
+ baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
390
+ },
391
+ },
392
+ },
393
+ },
394
+ },
395
+ }
396
+ ```
397
+
398
+ `x_search` posts to `<baseUrl>/responses` when
399
+ `plugins.entries.xai.config.xSearch.baseUrl` is set. If that field is omitted,
400
+ it falls back to `plugins.entries.xai.config.webSearch.baseUrl`, then the
401
+ legacy `tools.web.search.grok.baseUrl`, and finally the public xAI endpoint.
402
+
403
+ ### x_search parameters
404
+
405
+ | Parameter | Description |
406
+ | ---------------------------- | ------------------------------------------------------ |
407
+ | `query` | Search query (required) |
408
+ | `allowed_x_handles` | Restrict results to specific X handles |
409
+ | `excluded_x_handles` | Exclude specific X handles |
410
+ | `from_date` | Only include posts on or after this date (YYYY-MM-DD) |
411
+ | `to_date` | Only include posts on or before this date (YYYY-MM-DD) |
412
+ | `enable_image_understanding` | Let xAI inspect images attached to matching posts |
413
+ | `enable_video_understanding` | Let xAI inspect videos attached to matching posts |
414
+
415
+ ### x_search example
416
+
417
+ ```javascript
418
+ await x_search({
419
+ query: "dinner recipes",
420
+ allowed_x_handles: ["nytfood"],
421
+ from_date: "2026-03-01",
422
+ });
423
+ ```
424
+
425
+ ```javascript
426
+ // Per-post stats: use the exact status URL or status ID when possible
427
+ await x_search({
428
+ query: "https://x.com/huntharo/status/1905678901234567890",
429
+ });
430
+ ```
431
+
432
+ ## Examples
433
+
434
+ ```javascript
435
+ // Basic search
436
+ await web_search({ query: "OpenClaw plugin SDK" });
437
+
438
+ // German-specific search
439
+ await web_search({ query: "TV online schauen", country: "DE", language: "de" });
440
+
441
+ // Recent results (past week)
442
+ await web_search({ query: "AI developments", freshness: "week" });
443
+
444
+ // Date range
445
+ await web_search({
446
+ query: "climate research",
447
+ date_after: "2024-01-01",
448
+ date_before: "2024-06-30",
449
+ });
450
+
451
+ // Domain filtering (Perplexity only)
452
+ await web_search({
453
+ query: "product reviews",
454
+ domain_filter: ["-reddit.com", "-pinterest.com"],
455
+ });
456
+ ```
457
+
458
+ ## Tool profiles
459
+
460
+ If you use tool profiles or allowlists, add `web_search`, `x_search`, or `group:web`:
461
+
462
+ ```json5
463
+ {
464
+ tools: {
465
+ allow: ["web_search", "x_search"],
466
+ // or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
467
+ },
468
+ }
469
+ ```
470
+
471
+ ## Related
472
+
473
+ - [Web Fetch](/tools/web-fetch) -- fetch a URL and extract readable content
474
+ - [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
475
+ - [Grok Search](/tools/grok-search) -- Grok as the `web_search` provider
476
+ - [Ollama Web Search](/tools/ollama-search) -- key-free web search through your Ollama host