Autonomous campaign runner and cold email orchestration toolkit. Manages multi-inbox email campaigns with warmup-safe daily caps, contact enrollment, campaign creation, and analytics reporting.
Server has 7 tools with basic schemas and descriptions, but significant gaps prevent production use. Tool names lack consistent verb-noun structure (e.g., 'bulkUpsertContactMarkers' vs 'create_campaign'). Descriptions exist but are often vague about prerequisites, return types, and error conditions. Parameter schemas are present but lack enums for constrained values (e.g., 'dry_run' boolean, campaign names). No documented output schemas. Error handling is absent, tools will fail silently or with unhelpful messages. Security concerns: credentials embedded in MailboxDetails objects passed as parameters. No idempotency guarantees documented despite claims. Tool composition is poor, 'bulkUpsertContactMarkers' combines enrollment + distribution logic; 'start_campaign' mixes orchestration + sending.
Enrolls contacts from a CSV into a campaign's audience, distributed round-robin across the inboxes (one contact = one sending inbox). Batched: one IMAP session per inbox. Idempotent (skips existing markers).
Creates a campaign (same name + audience segment) on each inbox, from a sequence JSON file. Each inbox then sends to the contacts enrolled on it.
Retrieves mailbox details by email address from the local accounts file.
Retrieves mailbox details by ID from the local accounts file.
Retrieves campaign analytics including total sent, replied, interested, meeting requests, and bounced counts.
Lists all available mailboxes from the local accounts file.
Autonomous campaign runner. Advances due contacts on each inbox, respecting a warmup-safe per-inbox daily cap. Idempotent: safe to call as often as you like.
Inconsistent naming convention: mix of camelCase (bulkUpsertContactMarkers, getMailboxByEmail) and snake_case (create_campaign, start_campaign). LLMs struggle with inconsistent naming patterns.
No output schemas documented. Tools return complex objects (MailboxDetails, campaign state) but LLMs cannot plan downstream calls without knowing response structure. Violates pattern:tool requirement.
Credentials (password, imapPassword, smtpPassword) embedded in MailboxDetails objects passed as tool parameters. Violates pattern:secret-injection, secrets in params leak into logs and LLM traces.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Parameter 'sequence' in create_campaign is type 'object' with no schema. LLMs cannot validate or construct valid sequence JSON. Needs explicit schema or enum of valid sequence templates.
No error handling guidance. Tools will fail (e.g., missing ACCOUNTS_FILE, invalid email) but descriptions do not explain recovery steps. Violates pattern:recovery-guide.