Parallel Search: LLM-Optimized Web Search Providers for AI Agents
This page covers the two Parallel search providers for LLM-optimized web excerpts. Developers integrating AI agents need to know how to configure these providers for efficient web search.
Read this when
- You want web search without an API key
- You want Parallel's paid Search API
- You want dense excerpts ranked for LLM context efficiency
The Parallel plugin supplies two web_search providers, both of which are detailed under Parallel. Each one delivers ranked, LLM-optimized excerpts drawn from a web index designed for AI agents:
| Provider | id | Auth |
|---|---|---|
| Parallel Search (Free) | parallel-free | None -- Parallel's free Search MCP |
| Parallel Search | parallel | PARALLEL_API_KEY -- paid Search API, higher rate limits and objective tuning |
To choose one explicitly, set tools.web.search.provider to either parallel-free or parallel; neither is detected automatically.
Note
Direct OpenAI Responses models (
api: "openai-responses", provideropenai, official API base URL) automatically use OpenAI's hosted native web search whentools.web.search.provideris not set, is empty, is"auto", or is"openai". This means they bypass Parallel by default. To route these models through Parallel instead, assigntools.web.search.providertoparallel-freeorparallel. Refer to the Web Search overview for more.
Install plugin
openclaw plugins install @openclaw/parallel-plugin
openclaw gateway restart
API key (paid provider)
No key is required for parallel-free, but it still must be explicitly chosen. The paid parallel provider, on the other hand, requires an API key:
Create an account
Visit platform.parallel.ai to sign up, then generate an API key from your dashboard.
Store the key
Configure PARALLEL_API_KEY in the Gateway environment, or use the following setup:
openclaw configure --section web
Config
{
plugins: {
entries: {
parallel: {
config: {
webSearch: {
apiKey: "par-...", // optional if PARALLEL_API_KEY is set
baseUrl: "https://api.parallel.ai", // optional; OpenClaw appends /v1/search
},
},
},
},
},
tools: {
web: {
search: {
// "parallel-free" for the free Search MCP, or "parallel" for the
// paid API-backed provider shown here.
provider: "parallel",
},
},
},
}
Environment alternative: define PARALLEL_API_KEY within the Gateway environment. For a gateway installation, place it inside ~/.openclaw/.env.
Base URL override
This setting applies only to the paid parallel provider; parallel-free always uses https://search.parallel.ai/mcp and disregards this value.
To route paid requests through a compatible proxy or alternative endpoint (such as the Cloudflare AI Gateway), set plugins.entries.parallel.config.webSearch.baseUrl. OpenClaw normalizes bare hosts by adding https:// at the beginning and appending /v1/search unless the path already ends there. The resolved endpoint becomes part of the search cache key, so results from different endpoints are never shared.
Tool parameters
Both providers expose Parallel's native search shape, which prompts the model to supply a natural-language goal along with a few short keyword queries. This pairing is what Parallel recommends for optimal results.
-
objective(string, required), A natural-language description of the underlying question or objective, up to 5000 characters. Must be self-contained. -
search_queries(string[], required), Short keyword search queries, each 3-6 words long. Provide 1-5 entries, each capped at 200 characters. For best outcomes, supply 2-3 diverse queries. -
count(number), The number of results to retrieve, from 1 to 40. -
session_id(string), An optional Parallel session id taken from a previous result'ssessionId. Use it on follow-up searches within the same task so Parallel groups related calls and improves later results. Maximum 1000 characters onparallel; the freeparallel-freeSearch MCP limits it to 100. An id exceeding the limit is discarded (paid) or a new one is generated (free). -
client_model(string), An optional identifier for the model making the call (e.g.,claude-opus-4-7,gpt-5.6-sol), up to 100 characters. This allows Parallel to adjust default settings for your model's capabilities. Pass the exact active model slug; do not shorten it to a family alias.
Notes
-
Results are condensed and compressed for LLM reasoning, not for human browsing. Expect short excerpts per result rather than full page content.
-
Result excerpts are returned as the
excerptsarray and also concatenated intodescriptionfor compatibility with the standardweb_searchcontract. -
Both providers return a
session_id; OpenClaw exposes it assessionIdin the tool payload so callers can group follow-up searches. A session id generated by Parallel (one the caller did not provide) is omitted from the cache entry, since unrelated tasks with identical queries should not inherit it. -
searchId,warnings, andusagefrom Parallel are forwarded when available. -
OpenClaw always sends a resolved result count to Parallel as
advanced_settings.max_results(parallel) or appliescounton the client side after Parallel's fixed-size response (parallel-free). The caller'scountargument takes precedence, thentools.web.search.maxResults, otherwise OpenClaw's genericweb_searchdefault of 5 is used. Parallel's own API defaults to 10. -
Results are cached for 15 minutes by default (
cacheTtlMinutes). -
parallel-freecreates a freshsession_idper call through its MCP handshake when the caller does not provide one;parallelleaves it unset in that scenario.
Related
- Web Search overview -- all providers and auto-detection
- Exa search -- neural search with content extraction
- Perplexity Search -- structured results with domain filtering