Search with Ozone
Ozone searches real-time licensed publisher content, and every result it returns is marked licensed. Pin a query to Ozone with one field, and its results come back in the same shape as every other provider’s.
Results from Ozone
- 1
- 2
-
3
Lightning DOES strike twice! Scottish detectorist finds second Bronze Age hoard scottishdailyexpress.co.uk
- 4
-
5
Metal detectorist unearths two Bronze Age hoards in two years independent.co.uk
Recorded from live searches on 8 October 2026.
Pin a query to Ozone
- Over HTTP, send
"requested_provider": "ozone"with the query. - In an agent connected over MCP, ask it to search with Ozone.
Results come back in the same shape for every provider, as the docs describe. Leave the field out, and Grounder routes each query to the provider most likely to answer it well.
search.shShell
curl https://api.grounder.net/v1/search \
-H "Authorization: Bearer $GROUNDER_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "new archaeological finds announced this week",
"top_k": 5,
"requested_provider": "ozone"
}'
import os
import httpx
KEY = os.environ["GROUNDER_KEY"]
r = httpx.post(
"https://api.grounder.net/v1/search",
headers={"Authorization": f"Bearer {KEY}"},
json={
"query": "new archaeological finds announced this week",
"top_k": 5,
"requested_provider": "ozone",
},
timeout=30,
).json()
for hit in r["results"]:
print(hit["rank"], hit["title"], hit["url"])
const res = await fetch("https://api.grounder.net/v1/search", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.GROUNDER_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
query: "new archaeological finds announced this week",
top_k: 5,
requested_provider: "ozone",
}),
})
const { results } = await res.json()
claude mcp add --transport http grounder \
https://api.grounder.net/mcp
# then /mcp, grounder, Authenticate
Filters Ozone applies
Set them under filters. A filter a provider can’t apply returns 400 unsupported_filter.
| Filter | Keeps |
|---|---|
domains | Only these sites, or with "mode": "exclude", none of them. |
recency | The last so many days, or a range of dates. |
language | One language, by its code. |
publisher_ids | Only these Ozone publishers. |
article_types | Only these kinds of Ozone article. |
temporal_sensitivity | Only Ozone articles with these temporal sensitivity values. |
request.jsonJSON
{
"query": "new archaeological finds announced this week",
"top_k": 5,
"requested_provider": "ozone",
"filters": {
"domains": { "values": ["washingtonpost.com"] }
}
}