list_domains
Call this before search to get the sub-domain catalog and MANDATORY query format rules for a given domain.
## When to call — pick the domain that matches what the user is asking about:
finance → stocks, ticker, ETF, forex, exchange rate, currency, commodities, oil/gold price, crypto, Bitcoin, earnings, SEC filing, IPO, bond yield, financial news
academic → paper, research, journal, thesis, citation, DOI, abstract, peer review, arxiv, pubmed, scholar, literature, study, dataset
ip → patent, prior art, invention, CPC, IPC, EPO, WIPO, assignee, inventor, trademark
legal → law, statute, regulation, case, ruling, judgment, court, legislation, compliance, civil code, criminal code
travel → flight, airline, departure, arrival, delay, airport, IATA, POI, attraction, hotel, itinerary, travel guide, visa
gaming → game, Steam, price, discount, esports, player stats, rank, champion, LOL, DOTA, CS2
security → malware, virus, CVE, vulnerability, IP reputation, threat, IOC, hash, VirusTotal, OSINT, phishing, ransomware
geo → address, coordinates, geocode, POI, nearby, restaurant, walkability, transit score
environment → weather, forecast, AQI, air quality, PM2.5, satellite, NDVI, carbon, emission, agriculture
energy → electricity price, power grid, oil price, gas price, energy market
business → job, hiring, salary, company contact, B2B, lead, recruiter, HR
code → library docs, API reference, npm, pip, cargo, code snippet, function, repo search
health → clinical trial, diagnosis, drug, symptom, medical literature, WHO stats, psychology
education → course, lecture, textbook, tutorial video, MOOC, open courseware
tech → product specs, barcode, HackerNews, ProductHunt, tech review
ecommerce → price comparison, Walmart, shopping, product search
film → movie, TV show, anime, torrent, streaming
music → album, artist, lyrics, music torrent
fashion → cosmetics ingredients, beauty, trend, streetwear release
home → recipe, repair guide, food safety, walkability, appliance
religion → bible, quran, torah, buddhist texts, manuscripts
ugc → Bilibili video, YouTube video
## Returns
Markdown table filtered to the specified domain: sub_domain | description | query_format | zone
## CRITICAL: How to use results
- sub_domain is the PRIMARY routing key — always pass it to search
- query_format column is MANDATORY — wrong format = wrong data source = wrong results
Hard constraints examples: finance.us_stock requires Stock:/Forex:/News:/Commodities: prefix; security.noise requires single IPv4; geo.weather requires city name or lat,lon
- If multiple sub_domains match different aspects, make PARALLEL search calls — one per sub_domain
- zone=CN → set zone="cn" in search; zone=ALL/US/EU → omit zone
## Cache Rule — NEVER repeat list_domains for the same domain
Once you have called list_domains for a domain in this conversation, the result is valid for the ENTIRE session.
Do NOT call list_domains again for the same domain — reuse the sub_domain and query format you already received.
If you need info for multiple domains, pass them all in the domains array in a single call.
search
Execute a search and return ranked Markdown results (title, URL, snippet).
## Two modes
### Mode 1 — General web search (no list_domains needed)
Omit domain and sub_domain entirely. Use when the query is open-ended and does not target a specific structured data source.
Example: search(query="what is quantum computing")
### Mode 2 — Vertical search (call list_domains first)
Use when the query targets a specific domain: stocks, patents, flights, CVEs, weather, academic papers, etc.
Steps:
1. Call list_domains to get the sub_domain and mandatory query format for the target domain.
2. Pass domain + sub_domain from list_domains output. Never guess them.
3. Format query exactly as specified in the query_format column — wrong format = wrong results.
## Decision rule — which mode to use
Use Mode 2 (vertical) when ANY of these apply:
- Query involves a ticker, DOI, CVE, IATA code, patent number, address, or other structured identifier
- Query targets a specific vertical: finance, legal, academic, travel, security, geo, environment, etc.
- User asks for real-time or specialized data (stock price, weather, flight status, drug info, etc.)
Use Mode 1 (general) when the query is purely conversational or open-ended with no structured lookup.
## After getting results — when to call extract
Search returns titles + snippets only. Call extract when:
- The snippet is truncated or insufficient to answer the question
- User asks to read, summarize, or get details from a specific URL
- You need to verify a claim or fact from the source page
- The answer requires data only visible in the page body (tables, sections not in snippet)
## Query decomposition
One intent per search call. For 2–5 independent queries use batch_search instead.
WRONG: search(query="AAPL price and earnings and analyst rating")
RIGHT: batch_search(queries=[{query:"AAPL price",...}, {query:"AAPL earnings",...}])