MCP server for SignalBot — insider-cluster paper trading bot that polls SEC EDGAR filings, detects insider trading clusters, and provides read-only access to filing data, analysis, and trading signals via MCP tools
SignalBot MCP defines 5 tools with complete input schemas and descriptions. All tools follow verb_noun naming (search_, get_) and have 50-150 character descriptions. Input parameters are typed and described. However, output schemas are not documented in the source code, the tool definitions show inputs but no explicit return type documentation. Parameter descriptions lack format constraints (e.g., date format 'YYYY-MM-DD' is mentioned but not formalized as a pattern). Error handling and recovery guidance are absent from tool descriptions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite all tools being read-only. The server lacks pagination guidance for list-returning tools (get_clusters, search_filings could return large result sets).
Detect and retrieve insider trading clusters — groups of insiders buying the same stock within a time window that meet minimum thresholds for number of insiders, cluster score, and total transaction value.
Retrieve detailed profile and trading history for a specific insider by name.
Retrieve recent news and market data for a stock ticker.
Get AI-generated analysis of a stock ticker based on insider trading activity and market context.
Search insider trading filings by ticker, owner name, or date range. Returns matching Form 4 filings with insider transaction details.
Output schemas not documented. Tool definitions show input parameters but no explicit return type, field structure, or pagination metadata. LLMs cannot plan downstream calls or extract required fields.
No tool annotations present. All 5 tools are read-only but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Date parameters lack format constraints. 'since' and 'until' describe format as 'YYYY-MM-DD' in text but no JSON Schema pattern or minLength/maxLength validation. LLMs may pass invalid dates.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Pagination not addressed. search_filings and get_clusters could return large result sets (hundreds of filings or clusters) but no limit, offset, or cursor parameters are documented. Results may exceed context window.
No error recovery guidance. Tool descriptions do not explain what to do if a ticker is invalid, no filings exist, or the API fails. Agents have no fallback strategy.