Oort
Search infrastructure for agents
Ranked page content instead of links — with character offsets, so every quote can be checked against its source.
Most search APIs hand a model ten links and hope. Oort returns ranked page content inside a token budget — and every passage carries character offsets, so a quote can be traced back to the exact words it came from.
The MCP server imports nothing outside the standard library. Pick a client, paste a key if you want it personalised, copy.
oort_search
A question in, ranked passages out — each with offsets, heading breadcrumbs and a token count.
oort_extract
URLs to clean markdown. HTML, PDF, JSON and RSS, plus screenshots and scripted browser actions.
oort_map
Enumerate a site's URLs without fetching a page body. Sitemap first, local index as fallback.
Plan
Classify the question without an LLM. Intent decides how fresh an answer has to be — a realtime query will not be served from a week-old page.
Ask our own index
If the local index already covers every term of the query inside one document, the external providers are skipped entirely.
Fetch in tiers
Plain HTTP first, about 85% of pages. Escalate to TLS impersonation, then a real browser — each tier rate-limited and deadline-gated.
Extract and chunk
Restricted markdown with heading breadcrumbs and byte offsets. Code fences and tables stay whole — half a code block is not an answer.
Rank and pack
BM25 into a rerank cascade, then maximal marginal relevance, packed to the token budget you asked for.
on the
critical path
without
the network
never reach
a browser
survive every
transformation
tokens
returned
A result is not just text — it is a span. The offsets index into the extracted markdown of that exact document, so you can re-read the passage yourself and confirm the model quoted what it claims to have quoted.
Provenance you can check
Every passage carries char_start and char_end into the extracted markdown — so a quote is verifiable, not a claim.
Injection fencing
Content arrives inside nonce-bearing untrusted delimiters. A page saying "ignore your instructions" is labelled as data.
An index that is yours
Crawl and extract feed one searchable store. A URL pulled today answers a query tomorrow with no second fetch.
Deadline contract
Slow requests return partial results, never a timeout error — and degraded_reasons says what was given up.
Reproducible
/v1/replay reconstructs a past request. Deterministic extraction is what makes that reproduce rather than approximate.
Honest about limits
Benchmarks cover four crawled documentation domains. It does not claim open-web parity, and says so.
Crawl the corpus you care about, and repeat questions stop costing an API call.