Run your entire LinkedIn motion inside Claude Code. 29 skills (content, warming, outreach), an MCP layer, and a 17-command CLI. Draft-first, capped at 20 sends a day.
16 tools with minimal schema rigor. Most lack formal input schemas (inferred from CLI arg parsing, not explicit JSON Schema). Descriptions are present but generic (avg ~60 chars, well below 194-char baseline). No parameter type definitions visible in schema. No output schemas documented. Error handling is minimal, mostly dry-run messages, not recovery guidance. Tools like 'send-connections' and 'send-messages' are irreversible but lack confirmation patterns. No tool annotations (readOnlyHint, destructiveHint). Naming is inconsistent: 'warm-list' vs 'queue' vs 'engagers', no clear verb_noun pattern. Parameter descriptions are sparse; many lack type info (e.g., 'limit' is a string, not a number). No pagination support visible. Security: credentials passed via CLI flags (--api-key, --account) rather than server-side injection.
Display the current LinkedIn brief (ICP, voice, offer, buyer pains)
Connect a LinkedIn API provider (Unipile or compatible) with credentials and configuration
Verify the LinkedIn Engine setup: Node version, brief file, provider connection, daily cap, and usage tracking
Pull reactions and comments for a LinkedIn post (requires connected provider)
Search for LinkedIn profiles by title, seniority, location, and limit (requires connected provider)
Display help text for all available commands
No formal JSON Schema for tool inputs. Schemas are inferred from CLI arg parsing (parseArgs function) rather than explicitly defined. LLMs cannot validate parameter types or constraints.
Irreversible operations (send-connections, send-messages) lack confirmation or dry-run patterns. No tool annotation hints (destructiveHint). Agents could trigger sends without explicit user approval.
Credentials exposed as CLI parameters (--api-key, --account). Should use server-side secret injection via environment variables or vault. Agent traces will log secrets.
No output schemas documented. Tools return raw JSON from provider API (e.g., engagers, find, signals) without specifying field names, types, or pagination structure. LLMs cannot plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Pull recent inbound conversations from LinkedIn (requires connected provider)
Initialize the LinkedIn Engine project by creating linkedin-brief.md and .linkedin-engine/config.json
Queue a connection request or direct message for later sending
Send all queued connection requests (respects daily cap and requires --send flag)
Send all queued direct messages (respects daily cap and requires --send flag)
Pull profile data and recent activity for a LinkedIn profile to build a signal stack (requires connected provider)
Display the warm tracker (people being engaged over time with activity history)
Classify an inbound reply using heuristic rules (WARM, HOT, OBJECTION, HOSTILE, WRONG-PERSON) and suggest next action
Display the LinkedIn Engine version
Load and display a list of target people from CSV or JSON file for warming and ranking
Parameter descriptions lack type info and constraints. 'limit' is described as string but should be number with min/max bounds. 'kind' in queue has no enum constraint. LLMs will guess invalid values.