web_search
Search & retrievalSearches the agent-first web index and returns metadata-only hits — url, host, snippet, score — never the page body.
The tool an agent reaches for first. It accepts boolean queries and the full filter surface: vertical, site, term, source, language, date range, host rank, quality, sort, collapse and facets.
Returning metadata rather than bodies is what keeps a ten-result search affordable. The agent reads titles and snippets, decides, and then calls get_document for the one or two passages worth spending context on.
Arguments
| Name | Type | Description |
|---|---|---|
queryrequired | string | Boolean query. AND / OR, `-` negation, "quoted phrases". |
mode | string | keyword, semantic or hybrid. Defaults to hybrid. |
limit | integer | Result count. Defaults to 10. |
vertical | string | Restrict to a vertical, or omit to auto-route. |
site | string | Restrict to one host. |
lang | string | Language code. |
from / to | integer | Unix timestamp range. |
min_host_rank | number | Authority floor. |
min_quality | integer | Quality floor. |
sort | string | relevance, recency, host_rank, quality, published, words, centrality. |
collapse | string | none, host, page or story. |
Returns:Metadata-only hits with scores and world-model signals.
Example
Prompt: “Find recent Rust async runtime documentation, excluding Python results.”
{ "query": "rust AND async -python", "vertical": "code", "sort": "published", "limit": 8 }Over HTTP
The same operation is available as GET /search for anything that does not speak MCP.
curl -H "x-api-key: $UNLOB_API_KEY" \
"https://api.unlob.com/search?q=rust+AND+async+-python&vertical=code&mode=hybrid&limit=5"Setup
One config block gives your client all 11 tools, including this one.
{
"mcpServers": {
"unlob": {
"command": "npx",
"args": ["-y", "@unlob/mcp"],
"env": { "UNLOB_API_KEY": "ulb_your_key_here" }
}
}
}Get a key and connect
10,000 free requests a month. MCP calls bill exactly like HTTP calls — one request each.