Skip to main content

Web Search

Sparky provides web search across all LLM providers through a lightweight side-call architecture. When the model needs to search, a cheap, fast model performs the search and returns only titles and URLs — keeping context usage minimal and predictable.

How It Works​

When the model calls the app_web_search tool, Sparky:

  1. Picks a search provider — a cheap LLM with built-in web search capability
  2. Runs a side-call — sends the query to the search model, which performs the search and returns a list of titles and URLs
  3. Returns results — the main model receives the search results and can then use app_web_read to fetch specific pages

This design keeps the main conversation context clean. Only titles and URLs are injected (~50 tokens per result), not raw page content. The model decides which pages to read in full.

Provider Priority​

Sparky automatically selects the best available search provider:

  1. Default connection — if your default LLM connection supports search, it's used first
  2. Other connections — falls through remaining connections in order
  3. DuckDuckGo — fallback when no LLM search provider is available
ProviderSearch ModelSearch Method
Anthropicclaude-haiku-4-5Native web search tool
Google Geminigemini-2.5-flashGoogle Search grounding
Google AI Studiogemini-2.5-flashGoogle Search grounding
OpenAI (API key)gpt-4o-miniWeb search tool
DuckDuckGo—DDG Lite (fallback)

The search model is always the cheapest available option — it only needs to perform a search and list results. Your main conversation uses whatever model you've selected.

Search Availability​

The app_web_search tool is always available regardless of your provider or permission mode. Any model can decide to search when it needs current information.

DuckDuckGo Fallback​

When no LLM provider with search capability is connected (e.g., only Ollama or Mistral), Sparky falls back to DuckDuckGo Lite. This works but has limitations:

  • Rate limiting — DDG Lite throttles frequent searches
  • Slower — no grounding or native search integration
  • Coverage — results depend on DDG Lite's index

Custom Search via Connected Services​

You can also connect a dedicated search API as a service connection. For example, connecting Brave Search gives the model access to a high-quality search API without DDG rate limits.

Once connected, the model can call the search service via svc.describe and svc.call, just like any other connected service.

Summary​

ProviderSearch ModelFallbackCost
AnthropicHaiku 4.5DDGLow (Haiku pricing)
Google GeminiFlashDDGFree
Google AI StudioFlashDDGFree tier available
OpenAI (API)GPT-4o MiniDDGLow
GitHub Copilot—DDGFree
Mistral—DDGFree
Ollama—DDGFree
Any (via service)—Connected APIPaid