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
DuckDuckGoDDG 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 CopilotDDGFree
MistralDDGFree
OllamaDDGFree
Any (via service)Connected APIPaid