A research agent that uses web search and file writing capabilities to gather and save information. Implements agentic workflows using LangGraph and OpenAI.
This server has severe definition quality issues. Tool definitions exist in agent.py, harness.py, and research_agent.py but lack consistency and rigor. Duplicate tool names (web_search appears 3 times, write_files/write_file/write_tool appear 3 times) indicate poor composition and naming discipline. Descriptions are minimal (10-50 chars, well below the 194-char baseline for A+ tools). Parameter descriptions are present but generic ('search query', 'name of the file to write'). No output schemas are documented. No error handling guidance. The server is not an MCP server at all, it's a collection of Python scripts using OpenAI and Tavily APIs directly, with no MCP protocol implementation visible.
search the web for the information needed
searches the web for the information
searches the web for the information
searches theweb forthe information based on the prompt given by the user
writes content to a.txt file
gathers the info collected and write it in a files of format .txt
Write research summary to a file. Use the filename provided by the user and write the full researched content as content.
Not an MCP server. Code is a collection of Python scripts using OpenAI and Tavily APIs directly. No MCP protocol implementation, no transport layer, no tool registration via MCP. Cannot be deployed as an MCP server.
Duplicate tool names across files (web_search appears 3 times, write_files/write_file/write_tool appear 3 times). Violates single-responsibility principle and confuses LLM tool selection. Each tool should have a unique, unambiguous name.
Descriptions are too short (10-50 chars, well below 194-char baseline). 'searches the web for the information' and 'gathers the info collected and write it in a files of format .txt' lack context for LLM tool selection. No guidance on when to use each tool or what it returns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | 2026-07-28+ | v2 |
No output schemas documented. Tools return raw strings (e.g., 'file written successfully', Tavily search result as str()). LLMs cannot plan downstream calls or extract structured data. No pagination, no field documentation.
Minimal error handling. write_files catches exceptions but returns generic 'failed to write: <error>' with no recovery guidance. web_search has no error handling visible. LLMs cannot self-correct or retry intelligently.