A local MCP lead CRM with JSON/CSV storage and optional n8n webhooks.
Strong foundation with complete schemas, clear descriptions, and proper input validation via Zod. All 10 tools have explicit registrations with descriptions (avg 95 chars) and typed parameters. Naming follows verb_noun convention (add_lead, qualify_lead, move_stage). However, output schemas are undocumented, responses are text-wrapped without formal structure declarations. Error messages lack recovery guidance (e.g., 'CRM operation failed' is generic). No tool annotations (readOnlyHint/destructiveHint) despite clear WRITE vs READ_ONLY risk classifications. Parameter descriptions are solid but could be more prescriptive about constraints (e.g., 'Lead ID matching pattern L-\d{4,}' is stated but not in description text for all tools).
Add a new lead to the CRM pipeline.
List follow-up tasks due by the end of the requested window, including overdue tasks.
Export all leads to a CSV file inside the CRM database directory.
Import or update leads from a CSV file inside the CRM database directory. The file must use all 11 export columns; blank optional cells clear values.
List a compact view of leads in the pipeline.
Record a call, email, meeting, note, or follow-up task for a lead.
Move a lead to another pipeline stage.
Output schemas undocumented. Tools return text-wrapped responses without formal structure declarations. LLMs cannot plan downstream calls or extract typed fields reliably.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Risk classifications exist (WRITE vs READ_ONLY) but are not exposed to the MCP client, limiting agent safety and planning.
Generic error messages ('CRM operation failed', 'n8n webhook failed') lack recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Score a lead and mark it qualified at 60 or above, otherwise unqualified.
Search lead names, emails, companies, and notes.
Trigger an n8n webhook, or return a safe dry run when no webhook URL is configured.
Pagination not implemented for list_pipeline and search_leads. No limit enforcement or next_cursor support. Large result sets could exhaust context windows.
Destructive operations (import_csv, trigger_n8n) lack dry-run or confirmation steps. Agents cannot preview side effects before committing.