research-topic
Drive wet-mcp's extract(action="agent") to answer a research question
end to end: one search round + concurrent extracts of the top hits + a
single LLM synthesis pass that preserves numbered [N] citations
matching the returned sources.
Use this skill when:
- The user asks an open-ended question that needs multiple sources.
- "Summarise the current state of X."
- "What's the latest on Y?"
- "Compare approaches to Z."
- The user needs a quoted, cited answer (the citations are first-class output, not an afterthought).
Do NOT use this skill when:
- The user already gave you a specific URL -- call
extract(action="extract"). - The user wants a single search result list -- call
search(action="web"). - The question is about library API documentation -- call
search(action="docs_query")against a Tier 1 / locked stack.
Steps
Restate the question to the user in 1-2 sentences (calibration: confirm scope before spending tokens).
Pick
max_urlsbased on breadth:- 3-5 for a tight question (single technology, single timeframe).
- 6-10 for a broad survey (multiple competitors, multi-year window).
- Hard ceiling is 20 (cost guard).
Pick
synthesis_modelonly if the user asked for a specific model. Otherwise omit and let wet auto-detect fromLLM_MODELS/GEMINI_API_KEY/OPENAI_API_KEY/XAI_API_KEY.Call
extract(action="agent", query="<question>", max_urls=<N>)Optional knobs:
synthesis_model="...",token_budget=<int>(default 10000; raise for long-form questions, lower for tight cost control).Quote the synthesised Markdown verbatim to the user, then list the sources from the
sourcesarray as clickable URLs. Ifper_url_metadatashows anyerror, mention which URL failed and that the synthesis used the remaining N-K sources.If wet returns
Error: no LLM provider detected, surface the exact error to the user (do not silently retry againstsearch(action="research")); they need to set one of the supported API keys before agent works.
Output contract
{
"markdown": "# Synthesised answer with [1] inline citations...",
"sources": [
{"index": 1, "url": "https://...", "title": "..."}
],
"per_url_metadata": [
{"url": "...", "extract_strategy": "basic_http", "tokens": 487, "error": null}
]
}
Anti-patterns
- Do NOT chain multiple
agentcalls back-to-back without informing the user; each call is a full search + N extracts + LLM round. - Do NOT post-edit the synthesised Markdown to drop citations -- the citation markers are the user's audit trail.
- Do NOT replace
extract(action="agent")with manualsearch+extractloops "to save tokens"; the orchestrator enforces token budgets per source and avoids re-implementation drift.