MCP server for executing tools via FastMCP with support for command execution, time queries, web scraping, storage, and skills
The Redwood MCP server has 4 tools with critical definition quality issues. Naming is partially acceptable (verb-first on 3/4 tools), but descriptions are severely underdeveloped (averaging ~65 chars, well below the 194-char baseline for A+ tools). Input schemas are visible in the code but parameter descriptions are missing or minimal. No output schemas are documented. Error handling provides no recovery guidance. The server shows minimal alignment with the 54 Agentic Tool Patterns.
Ask a sub-agent to fulfill a prompt or answer a question. The sub-agent is an LLM that can help with complex reasoning, writing, or analysis.
Generates an image from a text prompt and saves it locally.
Outputs the current date and time in ISO format
Run a command and return its output as a string
run_command tool description (39 chars) is critically vague and creates severe security risk. Does not warn agents that arbitrary shell execution is possible, does not document command injection prevention, does not explain what happens on failure. LLMs will not infer safety constraints from a bare description.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields. For example, ask_subagent returns a string, but is it the LLM response, an error message, or partial result? generate_image saves a file but does not return the path, agents cannot locate the generated file.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Parameter descriptions are missing or trivial (1 - 3 words). The rubric baseline is 72 chars per parameter description; these average ~15 chars. 'The prompt, task, or question to send to the sub-agent' is 58 chars for ask_subagent.prompt, good, but 'The command to execute' is only 22 chars for run_command.command, and 'A descriptive prompt for the image to generate' is 45 chars for generate_image.prompt. No parameter constraints documented (length limits, regex patterns, enums, ranges).
Error handling provides zero recovery guidance. ask_subagent catches exceptions generically ('Error executing sub-agent query: {str(e)}'), agent learns only that something failed, not what to do next. run_command offers no guidance on command failures. generate_image has no documented error cases. Violates pattern:recovery-guide.
ask_subagent contains API credentials (config.model.api_key) injected at runtime. While secrets are not exposed as parameters, the tool hardcodes a model name ('gemini-2.5-flash') without documenting this choice to the LLM. If the configured model is not available, the tool fails silently. No validation that the API key exists until runtime.
run_command tool is not idempotent. Calling it twice with 'rm -rf /app/data' deletes the data twice (the second call fails, but the damage is done). Agents retry on ambiguous failures, this tool could cause catastrophic unintended side effects. Requires confirmation or dry-run support.
generate_image 'saves locally' but does not return the file path or URI. Agents cannot access the generated image without either: (a) knowing the working directory and filename in advance, or (b) making an extra discovery call. Violates pattern:tool-chain principle that outputs must include IDs/references downstream tools need.