> ## Documentation Index
> Fetch the complete documentation index at: https://docs.harpgtm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Run outbound from Claude

> Connect Harp's MCP server to Claude Code, Claude Desktop or Cowork, and the daily workflow Claude follows to research, qualify, enroll and reply.

Harp is built to be driven by Claude. Claude does the research, writing and decisions; Harp's MCP server gives it the tools to read and write your outbound records, and Harp does the sending. You use your own Claude plan, so there are no AI credits.

## Connect the MCP server

The Harp team installs the server with you during onboarding. You need two values from the app:

* **API key**: **Settings > Integrations > Developer** > generate a key
* **Workspace ID**: the ID in your workspace URL

The server runs locally over stdio and talks to Harp over HTTPS. It reads three environment variables:

| Variable | What it is |
| - | - |
| `AI_SDR_API_KEY` | Your Harp API key |
| `AI_SDR_WORKSPACE_ID` | Your workspace ID |
| `AI_SDR_BASE_URL` | `https://harpgtm.com` |

It works in any MCP client: Claude Code (`.mcp.json`), Claude Desktop (`claude_desktop_config.json`) and Cowork.

## A small tool list on purpose

Harp shows Claude a short list of daily workflow tools, plus three folder tools (`browse_tools`, `describe_tool`, `run_tool`) that reach everything else. Results come back as compact JSON. This keeps tool definitions and read results small, so Claude can work through a full account list without filling its context window.

## The daily tools

| Tool | What it does |
| - | - |
| `briefing` | Start of session: due manual steps, drafts held or awaiting review, research gaps, campaign progress |
| `find_accounts` | Filter accounts by qualification status, research need, touch recency or campaign |
| `upsert_accounts` | Create or update accounts in bulk, matched on domain |
| `account_brief` | One account: basics, answers with evidence and age, contacts, campaigns, recent touches |
| `research_gaps` | Per account, the questions that are missing or stale |
| `save_answers` | Save qualification answers with verdict, evidence and source; history is kept |
| `upsert_contacts` | Create or update contacts in bulk, matched on email or LinkedIn URL |
| `playbooks` | List playbooks, or start a campaign from one |
| `enroll` | Enroll contacts into a campaign; skipped contacts come back with a reason |
| `copy_review_queue` | Rendered drafts due soon that need review, in send order |
| `save_copy_reviews` | Approve drafts or save light edits |
| `add_copy_note` | Save a lasting copy rule for the workspace or one playbook |
| `work_queue` | Next manual steps due across active enrollments |
| `step_done` | Mark a manual step done and move the enrollment on |
| `pending_replies` | Claim new email and LinkedIn replies with their context |
| `reply_email` | Reply in the prospect's thread from the mailbox that received it |
| `resolve_reply` | Close a reply: outcome, note, and whether the sequence stops, resumes or stays paused |
| `book_meeting` | For an email reply: list free slots on the receiving mailbox's calendar, or book one with the prospect (Meet link and invite sent) |
| `draft_linkedin_reply` | Save a LinkedIn reply draft; it waits for your go-ahead in Slack |
| `ask_linkedin_go` | Ask in Slack for a go-ahead on LinkedIn reply drafts |
| `linkedin_reply_sent` | Report whether an approved LinkedIn reply went out |

## Everything else: catalog folders

Less frequent tools live in folders, so they cost nothing until Claude needs them. Claude finds them with three folder tools:

* `browse_tools`: with no folder, one line per folder; with a folder, each tool and what it does
* `describe_tool`: a tool's arguments
* `run_tool`: runs a tool by name with its arguments

The folders include `accounts`, `contacts`, `sequences`, `inbox`, `suppression`, `research`, `analytics`, `deliverability`, `linkedin-safety`, `manual-execution`, `email-accounts`, `slack` and `setup`. The `setup` folder holds rarely used configuration such as the qualification question library and playbook authoring.

## What a session looks like

**1. Briefing**

Claude calls `briefing` and sees what is due today.

**2. Research**

`research_gaps` lists the questions each account still needs answered. Claude researches them and saves each answer with `save_answers`, including the evidence and where it came from.

**3. Enroll**

Qualified contacts go into a campaign with `enroll`. If a campaign requires copy review, Claude reviews the rendered drafts with `copy_review_queue` before they send.

**4. Manual steps**

`work_queue` lists LinkedIn and manual steps that are due. Claude completes them and records each with `step_done`.

## Example prompts

* "Start with a briefing, then fill the research gaps for my top 20 accounts."
* "Find accounts we haven't touched in 60 days that passed qualification, and enroll their VPs of Sales in the re-engagement playbook."
* "Review the drafts going out tomorrow and tighten the first lines."

## How sending works

Each mailbox waits a random 2 to 6 minutes between sends, so a large campaign spreads out over time. Emails land in the recipient's local working hours when their timezone is known. A campaign with copy review holds each email until Claude approves the draft.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.