diff --git a/docs/plugins/architecture.md b/docs/plugins/architecture.md index 01738795679..35e56fd9db2 100644 --- a/docs/plugins/architecture.md +++ b/docs/plugins/architecture.md @@ -36,6 +36,7 @@ native OpenClaw plugin registers against one or more capability types: | Media understanding | `api.registerMediaUnderstandingProvider(...)` | `openai`, `google` | | Image generation | `api.registerImageGenerationProvider(...)` | `openai`, `google`, `fal`, `minimax` | | Video generation | `api.registerVideoGenerationProvider(...)` | `qwen` | +| Web fetch | `api.registerWebFetchProvider(...)` | `firecrawl` | | Web search | `api.registerWebSearchProvider(...)` | `google` | | Channel / messaging | `api.registerChannel(...)` | `msteams`, `matrix` | diff --git a/docs/plugins/building-plugins.md b/docs/plugins/building-plugins.md index de8ab3c694f..bfd3ecbda3b 100644 --- a/docs/plugins/building-plugins.md +++ b/docs/plugins/building-plugins.md @@ -156,6 +156,7 @@ A single plugin can register any number of capabilities via the `api` object: | Media understanding | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | | Image generation | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | | Video generation | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | +| Web fetch | `api.registerWebFetchProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | | Web search | `api.registerWebSearchProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) | | Agent tools | `api.registerTool(...)` | Below | | Custom commands | `api.registerCommand(...)` | [Entry Points](/plugins/sdk-entrypoints) | diff --git a/docs/plugins/sdk-overview.md b/docs/plugins/sdk-overview.md index 937351712db..92a39cfd049 100644 --- a/docs/plugins/sdk-overview.md +++ b/docs/plugins/sdk-overview.md @@ -293,6 +293,8 @@ methods: | `api.registerRealtimeVoiceProvider(...)` | Duplex realtime voice sessions | | `api.registerMediaUnderstandingProvider(...)` | Image/audio/video analysis | | `api.registerImageGenerationProvider(...)` | Image generation | +| `api.registerVideoGenerationProvider(...)` | Video generation | +| `api.registerWebFetchProvider(...)` | Web fetch / scrape provider | | `api.registerWebSearchProvider(...)` | Web search | ### Tools and commands diff --git a/docs/plugins/sdk-provider-plugins.md b/docs/plugins/sdk-provider-plugins.md index 496fe59b1ff..9a04af0652e 100644 --- a/docs/plugins/sdk-provider-plugins.md +++ b/docs/plugins/sdk-provider-plugins.md @@ -504,8 +504,9 @@ API key auth, and dynamic model resolution. - A provider plugin can register speech, realtime transcription, realtime voice, media - understanding, image generation, video generation, and web search alongside text inference: + A provider plugin can register speech, realtime transcription, realtime + voice, media understanding, image generation, video generation, web fetch, + and web search alongside text inference: ```typescript register(api) { @@ -574,6 +575,26 @@ API key auth, and dynamic model resolution. generateVideo: async (req) => ({ videos: [] }), }); + api.registerWebFetchProvider({ + id: "acme-ai-fetch", + label: "Acme Fetch", + hint: "Fetch pages through Acme's rendering backend.", + envVars: ["ACME_FETCH_API_KEY"], + placeholder: "acme-...", + signupUrl: "https://acme.example.com/fetch", + credentialPath: "plugins.entries.acme.config.webFetch.apiKey", + getCredentialValue: (fetchConfig) => fetchConfig?.acme?.apiKey, + setCredentialValue: (fetchConfigTarget, value) => { + const acme = (fetchConfigTarget.acme ??= {}); + acme.apiKey = value; + }, + createTool: () => ({ + description: "Fetch a page through Acme Fetch.", + parameters: {}, + execute: async (args) => ({ content: [] }), + }), + }); + api.registerWebSearchProvider({ id: "acme-ai-search", label: "Acme Search",