Automated research agent with Google Gemini models that performs deep web searches and synthesizes information using LangGraph
Single tool with adequate naming but insufficient parameter descriptions. The deep_search tool has a clear verb-based name and a functional schema, but parameter descriptions lack depth and guidance. The 'effort' enum parameter description is minimal ('Search effort'), and the tool description, while present, lacks context about when to use it, what prerequisites exist, or what the output structure contains. No output schema is documented. Error handling is not visible in the provided source. The server shows basic competence but falls short of production standards.
Perform a deep search on a given query using an advanced web research agent.
Output schema not documented. The tool returns a dict with 'answer' and 'sources', but the structure, field types, and nested properties are not declared in the tool definition. LLMs cannot reliably extract or chain results.
Parameter descriptions are minimal and lack actionable guidance. 'effort: Search effort' does not explain what effort actually controls (query count, research loops, model selection, latency, cost). LLMs cannot reason about the tradeoff between low/medium/high.
Tool description lacks critical context. No mention of prerequisites (e.g., GOOGLE_API_KEY environment variable), latency expectations, cost implications, when NOT to use deep_search (vs. a simpler search), or error recovery guidance.
No error handling documentation. Tool can fail (invalid API key, rate limits, network timeouts, malformed queries), but no guidance on error classification or recovery is provided in the schema or description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Missing rate-limit and timeout constraints. A runaway agent could hammer the Google Gemini API without bounds. No explicit guidance on safe retry behavior or request frequency limits.
API credentials (Google API key) must be injected server-side, not exposed as a tool parameter. Code appears to use environment variables correctly, but this is not documented or enforced.