---
title: "Call the addSearchToLeadList MCP tool"
method: POST
path: "/api/v1/actions/addSearchToLeadList"
tags: ["Actions"]
---

# Call the addSearchToLeadList MCP tool

`POST /api/v1/actions/addSearchToLeadList`

## Request

- Base URL: `https://app.reachium.io`
- URL: `https://app.reachium.io/api/v1/actions/addSearchToLeadList`
- Auth: HTTP bearer

Export people matching a Reachium database search into a lead list. CHARGES CREDITS per lead actually added. Two-step: the FIRST call (no confirm_token) returns a preview (match count, cost, balance) and a confirm_token, charging nothing; call again with confirm_token to execute. Filters match searchDatabase (refine there first, free); pass the filters_used echoed by your last searchDatabase verbatim, so the exported set is EXACTLY the one previewed. Target exactly one of target_list_id or new_list_name. Leads already in the workspace are merged, not duplicated.

Called through the Actions bridge: the response is that tool's own result, wrapped as `{ data: <tool result> }` under HTTP 200. Billing, daily-cap, and confirm-step outcomes are embedded INSIDE `data`, never remapped to an HTTP status (see the templated `/api/v1/actions/{toolName}` operation above for the full protocol, and `x-mcp-actions` for this tool's machine-readable scope/cap/confirm_behavior fields). Authentication, request-shape, and optional idempotency-protocol failures still use their documented non-200 statuses.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `keywords` string: Free-text keyword matched across profiles.
  - `title_keywords` string[]: Job-title words.
  - `seniority` string[]
  - `department` string[]
  - `industries` string[]: Industry NAMES of the company.
  - `verticals` string[]: Finer industry verticals.
  - `company_keyword` string: Word in the company name or description.
  - `company_size` string[]: Headcount buckets, e.g. ["11-50", "51-200"].
  - `company_type` 'company' | 'investor': "investor" = investment firms; sector words go in target_sectors.
  - `company_country` string
  - `company_state` string
  - `company_city` string
  - `person_country` string: Where the PERSON is (company_* = company HQ).
  - `person_state` string
  - `person_city` string
  - `investor_types` string[]: Investor category NAMES, e.g. ["Venture Capital", "Family Office"].
  - `target_sectors` string[]: Sectors an INVESTOR targets.
  - `has_email` boolean
  - `email_verified` boolean
  - `count` integer, required: How many to add (max 10,000); charged per lead actually added.
  - `target_list_id` string, uuid: Existing lead list (getLeadLists). Pass this OR new_list_name.
  - `new_list_name` string: Name for a new lead list.
  - `confirm_token` string: From the preview response; resend with the same arguments to execute.

## Response `200`

The result of calling this tool.

- object
  - `data` unknown, required
  - `error` unknown, required

## Other responses

- `400`: The request body was not a JSON object (code invalid_request), or Idempotency-Key is malformed (code invalid_idempotency_key).
- `401`: Missing or invalid API key. Send `Authorization: Bearer rmcp_...` (code unauthorized).
- `403`: This tool is out of the key’s granted scope (code insufficient_scope).
- `409`: This Idempotency-Key has an unresolved in-flight or ambiguous result (code request_in_flight). Reconcile before using a new key.
- `422`: This Idempotency-Key was already used with a different request body (code idempotency_key_reuse).
- `429`: Rate limited: shared `mcp:ip:{ip}` (600/60s) or `mcp:key:{keyId}` (120/60s) bucket, the SAME buckets the MCP endpoint uses (code rate_limited).
- `500`: Unhandled server error (code internal_error).

---

[API](https://skmtc.dev/reachium/apis/reachium-api.md) · [All operations](https://skmtc.dev/reachium/apis/reachium-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reachium/apis/reachium-api/revisions/30c16b30b499?raw)
