MCP server exposing 3ilm — a curated knowledge base of 1,032 smart contract vulnerability findings from 10 fully-reconciled Sherlock audit contests. Search patterns by keyword, get acceptance rates, and learn from real accepted/rejected examples.
3ilm provides three well-named, read-only tools with clear descriptions and proper Zod schemas. Tool names follow verb_noun convention (search_, get_, list_). All three tools have descriptions (194 - 250 chars, within baseline 34 - 392 range). Input schemas are present and typed. However, output schemas are not formally documented, responses are constructed as markdown text without explicit field definitions. Parameter descriptions are adequate but could be more prescriptive about constraints. Error handling is basic (returns text messages, not structured recovery guidance). No tool annotations (readOnlyHint, etc.) despite all being read-only. Overall solid for a small, focused domain tool, but lacks production-grade output documentation and error classification.
Exact pattern name (kebab-case). One of: oracle-manipulation, reentrancy, fee-calculation, flash-loan, access-control, rounding-error, and others
List all 12 vulnerability pattern categories ranked by volume with acceptance rates
Keyword search query. Examples: "oracle price manipulation", "reentrancy", "fee calculation", "flash loan", "access control", "rounding error"
Output schemas not formally documented. Tools return markdown text without explicit field definitions. LLMs cannot reliably extract structured data or plan downstream calls.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help clients optimize caching and retry logic.
Error responses are unstructured text. No error classification (retryable vs user-fixable vs fatal) or recovery guidance. E.g., 'Pattern not found' should suggest calling list_patterns().
search_vulnerabilities parameter 'query' lacks minLength/maxLength bounds in description. Rubric baseline: numeric/string params should state range (e.g., '3 - 100 chars').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
list_patterns accepts no parameters but description does not explain when to call it vs search_vulnerabilities. Dependency hints missing.