MCP tool adapter and integration layer for FicusBot agent framework, managing tool registration, discovery, and execution across multiple tool systems including file operations, shell commands, browser automation, memory systems, and sub-agents.
FicusBot exposes 22 tools with significant structural and documentation gaps. While input schemas are present for most tools, descriptions are generic or missing critical context. Tool naming follows some verb conventions (action, navigate, read, search, register, sync) but several are ambiguous or overly generic (action, tab, call_tool, process_tools). Parameter descriptions exist but lack specificity around constraints, valid values, and error conditions. Error handling is minimal, no recovery guidance visible in the source code. The tool set mixes concerns (e.g., action combines click/input/scroll/send_keys; tab combines list/switch/close) violating single-responsibility pattern. Output schemas are not documented. Security considerations for the exec tool (irreversible WRITE) lack safeguards visible in the adapter layer. STDIO transport limits remote accessibility.
Interaction operations (click/input/scroll/send_keys)
Delegate task to a sub-agent
Call MCP tool by name with arguments, routing through the MCP manager
Discover available resources: tools, skills, memories
Execute shell commands with safety checks (whitelist/blacklist filtering, path validation)
Get complete skill documentation for injection into system prompt
Get detailed information about a specific tool
Multiple tools combine unrelated responsibilities into a single tool (action handles click/input/scroll/send_keys; tab handles list/switch/close), violating single-responsibility principle and forcing LLMs to reason about action variants via string parameters instead of discrete tools
Generic or ambiguous tool names reduce LLM discoverability and increase tool selection errors. 'action' does not convey what action; 'tab' is vague (list_tabs, switch_tab, close_tab are clearer); 'process_tools' lacks verb-noun clarity
Descriptions lack critical context for LLM tool selection. Most descriptions are one sentence and under 50 characters, providing no guidance on WHEN to use the tool or WHAT prerequisites exist. Baseline for A+ tools is 50-200 chars with selection logic
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 | 30 | - | v1 |
Check if a tool name is an MCP tool
List memories without search keywords
List all MCP tools with metadata
Navigation operations (navigate/back/forward)
Parse MCP tool name to extract server and tool names
Process tool list to separate into memory tools and keep tools based on configuration
Page reading (state/extract)
Register MCP tools to ToolAdapter
Register a tool to the memory index
Save memory to the memory system
Search memory index for tools using semantic search with embedding similarity
Batch search memory index for multiple queries with automatic deduplication
Synchronize tools to memory index with full rebuild
Tab management (list/switch/close)
Unregister a tool from the memory index
No output schemas documented. Callers cannot predict what fields to expect or what IDs/references will be available for chaining downstream tools. LLMs must guess or parse free-text responses
exec tool (IRREVERSIBLE, shell command execution) lacks visible safety boundaries in the adapter layer. No dry-run option, no confirmation step, minimal input validation guidance. Whitelist/blacklist filtering mentioned but not documented in the tool interface itself
Parameter descriptions lack specificity. No enums for constrained values (e.g., action parameter in 'action' tool lists 'click, input, scroll, send_keys' as text, not a formal enum). No format specifications, ranges, or validation rules visible
No error handling or recovery guidance documented. Tools return generic status/error messages without actionable next steps. LLMs lack context on whether to retry, ask user, or abandon the task
Tool naming and parameter conventions inconsistent across the set. Some tools use underscores (search_tools, list_memories), others are single words (action, tab, read). Prefix 'mcp_' in call_tool suggests system-internal naming, not user-facing clarity