A multi-agent conversational system with research capabilities, built with LangGraph and DeepAgents. Features a main orchestrator agent that can delegate research tasks to specialized sub-agents, with support for multiple LLM providers (OpenAI, Ollama, HuggingFace) and external tools.
The server exposes 2 tools with partial but incomplete quality. Tool names follow verb-noun convention (internet_search, think_tool), which is correct. Descriptions exist and are reasonably detailed for both tools, placing them above average (194 chars baseline). However, schema completeness is uneven: internet_search has full parameter schemas with enums and defaults, but think_tool's schema is minimal. Neither tool documents output schemas explicitly, which is a significant gap for LLM planning. The think_tool is a reasonable internal reasoning pattern, but its documentation as a public tool is questionable. Error handling and security practices are not visible in the provided code. The server integrates with Tavily Search (a remote MCP client), suggesting it functions as a Streamlit frontend rather than a standalone MCP server, which raises transport and architecture questions.
Run a web search
A scratchpad for reasoning before acting. Use this tool whenever you need to reason through something before taking an action or producing output. It creates no side effects — the thought is not sent anywhere, executed, or stored. It is a private reasoning step. Use it before: choosing between tool calls or approaches, interpreting ambiguous instructions, checking your own logic or assumptions, deciding whether you have enough information to proceed, planning a multi-step sequence of actions. The thought can be structured or free-form — whatever matches the complexity of the situation. There is no required format.
Output schemas not documented for any tool. LLMs cannot infer what fields are returned, making downstream tool composition and data extraction error-prone.
think_tool lacks actionable schema definition. Input is a single string with minimal constraint. Output behavior (return value) is undocumented in the schema, only in the docstring.
No error handling guidance visible. If internet_search fails (invalid API key, rate limit, network timeout), the code provides no recovery suggestions to the LLM.
Tavily API key exposed as environment variable (settings.TAVILY_API_KEY) in code. While not technically a tool parameter, this is credential injection at server startup. Access patterns should enforce least-privilege scoping.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
think_tool is a meta-tool (reasoning scratch pad) but is exposed as a callable tool. This is architecturally questionable, it creates no observable effect, returns unchanged input, and should likely be internal to the agent planning, not a public tool.