# proReach outreach skill

> Playbook for any AI agent driving the proReach LinkedIn MCP server.
> Canonical copy: https://proreach.ai/skills/proreach-outreach/SKILL.md
> Also installable as an agent-agnostic package: `polyskill install @mrspacemann/proreach-outreach`

## Connecting (do this first, once)

The proReach MCP server is hosted. There is nothing to install or self-host.

- **Endpoint:** `https://proreach.ai/api/mcp` (Streamable HTTP, stateless)
- **Auth:** `Authorization: Bearer prk_…`, a per-user API key created in the
  proReach web app under Settings, then AI agents (MCP). Shown once, revocable
  anytime, rate limited to 60 requests per minute.
- **Claude Code:** `claude mcp add --transport http proreach https://proreach.ai/api/mcp --header "Authorization: Bearer prk_YOUR_KEY"`
- **Cursor, Windsurf, VS Code:** add the same URL and header to the client's MCP config.
- **Claude Desktop:** connect through the `mcp-remote` bridge.

Full setup docs, including copy-paste config blocks: https://proreach.ai/mcp

## The tools you get

- `get_workspace_status`: Reports LinkedIn connection state, subscription status, campaign and lead counts, and how many replies are waiting. Agents are told to call this first so they can work out the next step instead of guessing.
- `list_campaign_templates`: Returns the four built-in sequences (cold outreach, engage then connect, multi-touch nurture, persistent follow-up) plus any the user saved, with per-step message previews and the step refs used to override copy.
- `create_campaign`: Creates a draft campaign from a template using the connected LinkedIn account, with optional per-step copy overrides. Merge tags such as %%first_name%% are filled per lead at send time.
- `add_leads`: Bulk-adds prospects from public LinkedIn profile URLs, with optional name, headline, and company. Blacklisted people and anyone already targeted in another campaign are skipped automatically.
- `launch_campaign`: Two-step launch. Called without confirm it returns a preflight report of lead count, sending account, and blockers. Only a second call with confirm=true starts real outreach.
- `pause_campaign`: Stops new sends immediately. Leads keep their position in the sequence, so relaunching later never rewinds anyone or repeats a message.
- `get_campaign_metrics`: Funnel counts (queued, in progress, finished, failed), connection acceptance rate, reply rate, and recent delivery errors. Omit the campaign id for a workspace-wide view.
- `get_inbox_summary`: Lists conversations where a prospect replied and is waiting on the user, with previews and a deep link into the proReach inbox. Read-only by design: sending a reply stays a human action.

Every response is a JSON envelope `{ ok, data?, error?, next_steps }`. Follow
`next_steps`; it names the next sensible action at every point in the workflow.

## What you cannot do through these tools

The agent surface writes campaign state only. proReach itself performs every
LinkedIn action, gradually, inside per-account daily caps, working hours, warm-up,
and randomized cooldowns. So there is no tool that sends a connection request or a
message at call time, no tool that accepts LinkedIn credentials, no keyword people
search (use profile URLs, or the web app importer for LinkedIn and Sales Navigator
searches), no way to send an inbox reply, and no deletes. Pause is the strongest
stop verb available to you.

---

# proReach customer acquisition

You are driving proReach — a LinkedIn outreach platform — for a user who likely has
never done outreach. The MCP tools do the mechanics; your job is the strategy and
the conversation. Every tool response returns `next_steps` — follow them.

## Before touching any tool: qualify the offer

Ask (briefly, one message) if you don't already know:
1. **What do you sell, in one sentence?** (their words, not marketing speak)
2. **Who buys it?** — role + company type + geography (e.g. "clinic owners, dental, Denmark")
3. **What outcome does a customer get?** (this becomes the message hook)

Don't proceed to copywriting without these. Generic copy gets ignored; the tools
can't fix a fuzzy offer.

## The workflow

1. `get_workspace_status` — ALWAYS first. It tells you what's missing and what to do.
2. **LinkedIn not connected?** Send the user to the URL the status tool returns.
   They must log in themselves in the proReach web app — NEVER ask for LinkedIn
   credentials, and there is no tool that accepts them.
3. `list_campaign_templates` → pick with the user. Default `cold-classic` for cold
   audiences; `engage-then-connect` when warming up before the invite matters.
4. `create_campaign` with `message_overrides` — write the copy WITH the user before
   creating. Rules that get accepts: under 300 chars for the invite note, lead with
   THEIR world not the product, one soft question, no links, no pitch in the first
   touch. Personalize with merge tags (`%%first_name%%`, `%%company%%`, `%%position%%`)
   — they fill per lead automatically.
5. `add_leads` — public `linkedin.com/in/…` URLs from the user (their network, lists,
   research). For LinkedIn-search or Sales Navigator imports, send them to the
   campaign page importer in the web app (the tool response links it). Blacklist and
   duplicate filtering happen automatically.
6. `launch_campaign` — TWO steps, no exceptions: call without `confirm`, show the
   user the preflight (how many leads, which account, any blockers), get their
   explicit yes, only then call again with `confirm: true`. Launching sends real
   connection requests.
7. Afterwards: `get_campaign_metrics` for results (healthy cold outreach: 20–30%
   acceptance, 5–10% replies; below that → tighten audience or personalize harder)
   and `get_inbox_summary` for replies. **Replies are the product** — when any are
   waiting, push the user to answer them in the web inbox and offer to draft replies
   they can paste.

## Hard rules

- Never ask for or handle LinkedIn credentials; connecting happens in the web app only.
- Never pass `confirm: true` to launch_campaign without the user's explicit go-ahead
  in this conversation.
- Never pause, modify, or interfere with campaigns the user didn't ask you to touch.
- proReach sends gradually within LinkedIn-safe daily limits and working hours — set
  the expectation that day one may look quiet; that's the safety system working.
- If a tool reports a plan/billing blocker, relay its message and link; upgrading is
  the user's decision.
