Gemini deep research
Start an asynchronous Gemini Deep Research run with the deep_research tool of the mcp-gemini-search MCP server — an autonomous agent that searches, reads sources, and writes a long citation-rich Markdown report over several minutes. Use this skill whenever the user wants a comprehensive report, competitive analysis, technology comparison, literature survey, market/landscape overview, or any multi-source investigation — even if they just say "research X thoroughly" or "write me a report on Y". Also read it before ever calling deep_research, because a careless call starts a duplicate billed multi-minute run.From its SKILL.md
npx -y skills add zchee/mcp-gemini-search --skill gemini-deep-researchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, as published. Nobody here has run it
deep_research (mcp-gemini-search)
deep_research starts a background Deep Research agent run and returns
immediately with {interaction_id, status} — it never waits for the report.
The run continues server-side for several minutes and is billed per run.
The report is fetched separately with deep_research_result (see the
gemini-deep-research-result skill).
The one iron rule
Call deep_research exactly once per research question, and save the
returned interaction_id the moment you get it. Re-issuing the same
question — to "retry", to "check progress", because the first call felt slow —
starts a second full billed run that will also take minutes. Progress is
checked only with deep_research_result. The only legitimate reasons to call
deep_research again are a genuinely new question, or a deliberate
plan-approval / follow-up call that sets previous_interaction_id.
When to use it (and when not)
- Use for questions whose answer is a document: comparisons with tradeoffs, state-of-the-art surveys, due-diligence style investigations.
- Do NOT use it for quick factual lookups —
google_searchanswers those in seconds for a fraction of the cost (see thegemini-google-searchskill). - Confirm with the user before starting a run when the request is ambiguous: a run is minutes of wall-clock time and real money, so "did you want a full research report on this?" is a fair question.
Calling contract
Input (additionalProperties: false):
| field | type | meaning |
|---|---|---|
query (required) | string | The research brief. |
plan_only | boolean (default false) | Return a research plan for review instead of running the research. |
previous_interaction_id | string | Id of an earlier run: approve/refine its plan, or ask a follow-up building on its findings. |
agent | string enum | deep-research-preview-04-2026 (faster) or deep-research-max-preview-04-2026 (deeper, slower). Omit to use the server default (GEMINI_DEEP_RESEARCH_AGENT). |
Output: {"interaction_id": "...", "status": "in_progress"}. The
interaction_id is durable — persist it AND tell the user immediately,
before doing anything else. A crashed or interrupted polling loop kills your
process state, and the id is the only handle that survives; losing it
orphans a billed run.
Write a rich brief
The agent works from your query alone, so treat it as a brief, not a search
query. Include:
- Scope: what is in and out ("managed Kubernetes offerings on GCP and AWS, not on-prem").
- Constraints: timeframe, region, language, source preferences ("papers from 2024 onward", "prefer primary sources").
- Desired output shape: "a comparison table plus recommendation", "an annotated bibliography", "an executive summary followed by deep-dives".
Richer briefs produce measurably better reports; a one-line query wastes the run on the agent guessing your intent. When the user's request is terse, do not pass it through verbatim — expand it into a brief yourself, stating the scope and output shape you inferred (and confirm them with the user first when the run is expensive enough to matter).
Plan-review workflow (optional but recommended for expensive questions)
- Call
deep_researchwithplan_only=true— the run returns a research plan instead of executing. - Fetch the plan with
deep_research_resultand show it to the user. - Approve or refine with a second
deep_researchcall that setsprevious_interaction_idto the plan run's id and puts the approval ("proceed with this plan") or the corrections inquery.
Follow-up questions after a completed run use the same mechanism: set
previous_interaction_id so the new run builds on the previous findings
instead of starting from zero.
Choosing the agent
Default (omit agent) unless the user signals otherwise. Pick
deep-research-max-preview-04-2026 when the user asks for exhaustiveness
("be thorough", "leave no stone unturned") and accepts a longer wait; pick
deep-research-preview-04-2026 explicitly when the server default is Max but
the user wants a faster turnaround.
Privacy and retention
Background runs require server-side storage (store=true); on the paid tier
interactions are retained ~55 days. This differs from the stateless
google_search tool — mention it if the research brief contains sensitive
material.
Errors
Invalid arguments for deep_research: …— schema violation; fix the call.research query cannot be empty— send a real brief.deep research failed: …— the start itself failed; it is safe to retry once (no run was started when there is no interaction_id), then surface the error.