A local AI agent combining Ollama LLM, LangChain ReAct framework, and MCP tools for web search, file operations, code execution, and knowledge base queries. Exposes OpenAI-compatible chat API and MCP protocol over SSE transport.
Server has 6 tools with complete schemas and descriptions. Naming follows verb_noun convention (web_search, file_read, file_write, file_list, code_exec, query_knowledge_base). Descriptions are present and reasonably detailed (avg ~150 chars). However, parameter descriptions lack depth, many omit constraints, ranges, or usage guidance. code_exec and file_write are high-risk tools with minimal safety documentation. No output schemas documented. Error handling returns JSON errors but lacks recovery guidance or categorization. Missing idempotency hints and confirmation patterns for destructive operations.
Execute a Python snippet in a sandboxed environment. Returns stdout/stderr.
List files in the local workspace directory.
Read a file from the local workspace.
Write content to a file in the local workspace.
Search the local AI ecosystem knowledge base. Contains documentation for Ollama, llama.cpp, LocalAI, Open WebUI, Jan, text-generation-webui, AnythingLLM, PrivateGPT, LiteLLM, GPT4All, Continue, and Tabby. Use this for questions about how to install, configure, or use any of these tools.
Search the web using DuckDuckGo. Returns top results with title, url, and snippet.
code_exec lacks safety documentation and confirmation pattern. No mention of sandbox limits, allowed/forbidden modules, or dry-run capability. Agents can execute arbitrary Python without guardrails.
file_write and file_read lack path traversal validation hints. Descriptions do not warn about security constraints or mention that paths are relative to workspace/. LLMs may attempt to escape the sandbox.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured JSON. Downstream tool chaining is error-prone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Parameter descriptions lack constraints. 'max_results' (1-10) and 'k' (1-10) have ranges in descriptions but no min/max schema properties. 'timeout' default is 10s with no documented upper bound.
Error handling returns generic JSON errors without recovery guidance. No categorization of retryable vs fatal errors. LLMs receive no actionable next steps on failure.