A tool discovery and execution service that manages MCP tools through a Librarian search interface and a Codex execution service. Provides tool search, registration, and remote execution capabilities.
This MCP server exhibits significant definition quality issues across its 5 tools. Tool naming is inconsistent and sometimes vague (e.g., 'search' and 'call_tool' lack clarity about what they operate on). Descriptions vary widely in quality, some tools (search, call_tool) have adequate descriptions, while others (get_stock_data_v2, get_historical_data_v2, get_options_chain_v2) have minimal descriptions (13-61 chars, below the 50-char minimum for clarity). Input schemas are present but inconsistent: stock tools have parameters with descriptions, but generic tools lack field-level detail. Output schemas are entirely absent from the visible code, critical information for downstream tool chaining is undocumented. Error handling and recovery guidance are not evident. The server exposes a generic 'call_tool' interface that delegates to external services without documented output contracts, making it difficult for LLMs to reason about results or chain tools. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite clear risk classifications (READ_ONLY vs WRITE).
Execute a specific tool on the Codex service with provided parameters. Once you have identified a tool using the search tool, use this tool to execute it with the appropriate parameters. The tool will be executed in an isolated subprocess and return structured results.
Get historical price data with technical indicators
Get options chain data with advanced greeks and analysis
Get comprehensive stock data including financials, analyst ratings, and calendar events
Query the Librarian service to discover available tools and their capabilities. The Librarian analyzes your natural language query and returns detailed information about relevant tools, including their purpose, required parameters, and example usage. Example queries: - "I need to analyze my PostgreSQL database" - "Tools for processing PDF documents" - "How can I interact with Google Calendar?" - "I want to automate browser testing" - "Looking for tools to manage Trello boards" - "Need to analyze GitHub repositories" - "Tools for video and image processing" - "Help me interact with Slack channels" - "I need to work with financial market data" The Librarian understands hundreds of tool categories including: - Database access (MySQL, PostgreSQL, MongoDB, etc.) - File operations and document processing - API integrations (Trello, Slack, GitHub, etc.) - Browser automation and web scraping - Calendar and task management - Financial data and analysis - Image and video processing - Cloud services (AWS, GCP, Azure) - Development tools and IDE integration The Librarian will return matching tools with their complete interface definitions, making it easy to understand how to use them for your specific needs.
No output schemas documented for any tool. LLMs cannot reason about what fields are returned, whether to chain tools, or extract relevant data for downstream calls. This violates the critical pattern 'Document the output schema' (pattern:tool) and makes tool composition impossible.
Tool 'call_tool' has an opaque 'arguments' parameter typed as a bare object with no field structure or validation. Downstream LLMs cannot predict what arguments are valid for a given tool_id+method combination. Output is also unstructured, making result interpretation impossible.
Stock data tool descriptions are insufficient (35 - 40 chars, baseline 50+). 'Get historical price data with technical indicators' does not explain WHEN to use it (vs get_stock_data_v2?), what 'technical indicators' are included, or output format. Descriptions fail to help LLMs select the right tool.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 11 | - | v1 |
Naming 'search' and 'call_tool' are generic and lack specificity. 'search' alone suggests searching anything; proper naming would be 'search_tools' or 'search_librarian'. 'call_tool' is dangerously vague, proper naming would clarify the service ('call_codex_tool'). Naming fails the verb_noun pattern and does not convey clear action intent.
Parameter constraints are documented only in description text, not as formal schema validators (enum, pattern, format). E.g., 'period' lists valid values in description, not as an enum constraint.
No error handling guidance documented. When a tool fails (e.g., invalid symbol, service unavailable), LLMs have no recovery path. Per pattern, errors must tell the LLM what to do next (retry? fallback? ask user?).
No tool annotations present. Risk classifications are declared (READ_ONLY, WRITE) but not exposed in MCP schema. LLMs cannot see which tools are safe to retry (idempotent) vs destructive. Per current spec, tools should include readOnlyHint, destructiveHint, idempotentHint.