deepseek_research
Gathers source material for a question with one content-rich search, then fetches missing or short page content from validated URLs and returns ranked sources with errors and truncation notes.
Instructions
Gather source material for a question: one search with page content, then fetch the gaps.
Runs a single search with need_content=True (no query rewrite, no model call, no summary). Results whose content is missing or shorter than 200 characters and whose URL passes validation are fetched directly with deepseek_fetch_many (at most 5 per call); a fetched page replaces the search content of that source. A URL that fails validation (for example an internal address) is not fetched. Failed or rejected sources keep the search content and set the source's error; the call still succeeds with partial=true.
Each source has id, title, url, authority, rerank_score, content, chars, origin ('search' or 'fetch'), error (null or {code, message}) and cached (whether its content came from the cache). Content is capped at per_page_chars per source and total_chars overall, in source order; a note says when any content was truncated. requests_used counts upstream requests made (the search plus each fetch; cache hits are free) and cached_count counts responses served from the cache. failed_count counts sources whose error is set and partial is true when it is non-zero. Synthesis is left to the caller.
Args: question: Search query, max 128 characters. Supports site:, -site:, "phrase", lang:. max_pages: Number of search results to use, 1-50 (default 5). per_page_chars: Content cap per source. total_chars: Total content budget across all sources. refresh: Bypass the response caches for the search and the fetches.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | ||
| question | Yes | ||
| max_pages | No | ||
| total_chars | No | ||
| per_page_chars | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||