> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to RocketReach

The RocketReach connector lets your AI agent act in each user's RocketReach account. Each user connects their own RocketReach API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 16 tools.

**Authentication:** API Key
**Categories:** CRM & Sales
**Tools:** 16: 13 read, 3 write, 0 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=ROCKETREACH)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the RocketReach connection

   In **AgentKit > Connections**, create a RocketReach connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'rocketreach'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize RocketReach:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'rocketreach_get_account',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "rocketreach"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize RocketReach:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="rocketreach_get_account",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their RocketReach credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'rocketreach_check_person_lookup_status',
  toolInput: {
    ids: [],
  },
  connector: 'rocketreach',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="rocketreach_check_person_lookup_status",
    tool_input={
        "ids": [],
    },
    connection_name="rocketreach",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `rocketreach_check_person_lookup_status`

Check Person Lookup Status · Read-only

Poll the status of person lookups started with lookup_person or bulk_lookup_people.
Returns one profile object per ID with status (complete, failed, waiting, searching or progress) and the contact details found so far.
Use after a lookup whose status was not complete; webhooks avoid polling.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ids` (`array`, required): Profile IDs whose lookup status to check.

Example input: `{"ids":[]}`

### `rocketreach_get_account`

Get Account · Read-only

Retrieve the RocketReach account tied to the API key.
Returns the user profile, credit usage per credit type, rate limits and API call counts.
Use to check remaining lookup credits before running lookups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `rocketreach_get_universal_account`

Get Universal Account · Read-only

Retrieve the RocketReach account in Universal Credits mode.
Returns the user profile, plan, API key details, daily API usage and the Universal Credits balance.
Use instead of get_account when the account runs on Universal Credits.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `rocketreach_lookup_company`

Lookup Company · Read-only

Look up one company in RocketReach by domain, name, ID, LinkedIn URL or ticker.
Returns the company profile with domain, industry, size, revenue, location, links and tech stack where available.
Use to enrich a known company; use search_companies to discover companies by criteria.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domain` (`string`, optional): Web domain of the company; the preferred identifier.
- `id` (`integer`, optional): RocketReach company ID.
- `linkedin_url` (`string`, optional): LinkedIn company page URL.
- `name` (`string`, optional): Company name to look up.
- `ticker` (`string`, optional): Stock ticker symbol of a public company.

Example input: `{}`

### `rocketreach_lookup_person`

Lookup Person · Read-only

Enrich one person from RocketReach by profile ID, name and employer, LinkedIn URL, email, phone or NPI number.
Returns the profile with title, employer, location, links and emails and phones. The status field is complete, progress, searching or not queued.
Use to get contact details for one known person. Use check_person_lookup_status when the status is not complete, and search_people to discover people.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `current_employer` (`string`, optional): Current employer of the person. Must be sent together with name.
- `email` (`string`, optional): Email address known for the person; used to find the matching profile.
- `id` (`integer`, optional): RocketReach profile ID of the person to look up. Use this when a search result already gave you the ID.
- `linkedin_url` (`string`, optional): LinkedIn profile URL of the person, for example www.linkedin.com/in/jamesgullbrand.
- `lookup_type` (`string`, optional): Type of lookup to run. Defaults to the account default when omitted. One of: `standard`, `premium`, `premium (feeds disabled)`, `bulk`, `phone`, `enrich`.
- `name` (`string`, optional): Full name of the person. Must be sent together with current_employer.
- `npi_number` (`integer`, optional): National Provider Identifier of a US healthcare professional.
- `phone` (`string`, optional): Phone number known for the person, in E.164 or international format.
- `return_cached_emails` (`boolean`, optional): When false, email fields stay null until the lookup finishes and all emails are verified. When true or omitted, cached emails are returned immediately even while the status is progress.
- `title` (`string`, optional): Job title of the person; improves match accuracy when searching by name and employer.
- `webhook_id` (`integer`, optional): ID of a webhook configured in your RocketReach API settings; the finished lookup result is posted to it.

Example input: `{}`

### `rocketreach_lookup_person_and_company`

Lookup Person and Company · Read-only

Enrich one person and compile the full profile of their current employer in one call.
Returns the person profile plus a compiled company object with firmographic details.
Use when you need both person and company data; use lookup_person when only the person is needed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `current_employer` (`string`, optional): Current employer of the person. Must be sent together with name.
- `email` (`string`, optional): Email address known for the person; used to find the matching profile.
- `id` (`integer`, optional): RocketReach profile ID of the person to look up. Use this when a search result already gave you the ID.
- `linkedin_url` (`string`, optional): LinkedIn profile URL of the person, for example www.linkedin.com/in/jamesgullbrand.
- `lookup_type` (`string`, optional): Type of lookup to run. Defaults to the account default when omitted. One of: `standard`, `premium`, `premium (feeds disabled)`, `bulk`, `phone`, `enrich`.
- `name` (`string`, optional): Full name of the person. Must be sent together with current_employer.
- `npi_number` (`integer`, optional): National Provider Identifier of a US healthcare professional.
- `phone` (`string`, optional): Phone number known for the person, in E.164 or international format.
- `return_cached_emails` (`boolean`, optional): When false, email fields stay null until the lookup finishes and all emails are verified. When true or omitted, cached emails are returned immediately even while the status is progress.
- `title` (`string`, optional): Job title of the person; improves match accuracy when searching by name and employer.
- `webhook_id` (`integer`, optional): ID of a webhook configured in your RocketReach API settings; the finished lookup result is posted to it.

Example input: `{}`

### `rocketreach_search_companies`

Search Companies · Read-only

Search RocketReach for companies matching criteria such as industry, size, revenue, location and tech stack.
Returns a page of matching companies plus pagination details.
Use to discover companies; use lookup_company for one known company.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`object`, required): Search criteria as a JSON object. Each key is a filter and each value is an array of strings, for example {"industry": ["Computer Software"], "employees": ["51-200"], "geo": ["United States"], "techstack": ["Salesforce"]}. Commonly used filters are name, domain, industry, employees, revenue, total_funding, geo, location, keyword, techstack and publicly_traded. Different filters are combined.
- `order_by` (`string`, optional): Result ordering. relevance is the default; popularity matches the RocketReach web app ordering.
- `page_size` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Default: `10`.
- `start` (`integer`, optional): 1-based index of the first result to return; use it to page through results. Default: `1`.

Example input: `{"query":{}}`

### `rocketreach_search_people`

Search People · Read-only

Search RocketReach for people matching criteria such as title, employer, location, department and skills.
Returns a page of matching profiles (id, name, title, employer, location) plus pagination details; contact details are not unlocked.
Use to discover people; use lookup_person with a returned profile ID to get emails and phones.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`object`, required): Search criteria as a JSON object. Each key is a filter and each value is an array of strings, for example {"current_title": ["VP of Sales"], "company_name": ["RocketReach"], "geo": ["United States"]}. Commonly used filters are name, current_title, current_employer or employer, company_name, company_domain, company_size, company_industry, department, management_levels, geo, skills, school, email_grade and contact_method. Multiple values within one filter match any of them, and different filters are combined. Wrap a value in double quotes for an exact match and prefix it with - to exclude it.
- `order_by` (`string`, optional): Result ordering. relevance is the default; popularity matches the RocketReach web app ordering.
- `page_size` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Default: `10`.
- `start` (`integer`, optional): 1-based index of the first result to return; use it to page through results. Default: `1`.

Example input: `{"query":{}}`

### `rocketreach_universal_check_person_lookup_status`

Universal Check Person Lookup Status · Read-only

Poll the status of Universal Credits person lookups.
Returns one profile object per ID with status and the data revealed so far.
Use after universal_lookup_person or universal_bulk_lookup_people returns a status other than complete.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ids` (`array`, required): Profile IDs whose lookup status to check.

Example input: `{"ids":[]}`

### `rocketreach_universal_lookup_company`

Universal Lookup Company · Read-only

Look up one company in RocketReach using Universal Credits, by domain, name, ID, LinkedIn URL or ticker.
Returns the company profile with domain, industry, size, revenue, location and links.
Use on Universal Credits accounts; use lookup_company on standard credit accounts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domain` (`string`, optional): Web domain of the company; the preferred identifier.
- `id` (`integer`, optional): RocketReach company ID.
- `linkedin_url` (`string`, optional): LinkedIn company page URL.
- `name` (`string`, optional): Company name to look up.
- `ticker` (`string`, optional): Stock ticker symbol of a public company.

Example input: `{}`

### `rocketreach_universal_lookup_person`

Universal Lookup Person · Read-only

Enrich one person using Universal Credits, choosing which data to reveal.
Returns the profile with only the revealed contact data (phones, professional emails, personal emails, detailed or healthcare enrichment). The status field is complete, progress, searching or not queued.
Use on Universal Credits accounts; use lookup_person on standard credit accounts. Poll universal_check_person_lookup_status when not complete.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `current_employer` (`string`, optional): Current employer of the person. Must be sent together with name.
- `email` (`string`, optional): Email address known for the person; used to find the matching profile.
- `id` (`integer`, optional): RocketReach profile ID of the person to look up. Use this when a search result already gave you the ID.
- `linkedin_url` (`string`, optional): LinkedIn profile URL of the person, for example www.linkedin.com/in/jamesgullbrand.
- `name` (`string`, optional): Full name of the person. Must be sent together with current_employer.
- `npi_number` (`integer`, optional): National Provider Identifier of a US healthcare professional.
- `phone` (`string`, optional): Phone number known for the person, in E.164 or international format.
- `return_cached_emails` (`boolean`, optional): When false, email fields stay null until the lookup finishes and all emails are verified. When true or omitted, cached emails are returned immediately even while the status is progress.
- `reveal_detailed_person_enrichment` (`boolean`, optional): Set to true to reveal detailed person enrichment data for this profile, which spends Universal Credits.
- `reveal_healthcare_enrichment` (`boolean`, optional): Set to true to reveal healthcare enrichment data for this profile, which spends Universal Credits.
- `reveal_personal_email` (`boolean`, optional): Set to true to reveal personal emails for this profile, which spends Universal Credits.
- `reveal_phone` (`boolean`, optional): Set to true to reveal phone numbers for this profile, which spends Universal Credits.
- `reveal_professional_email` (`boolean`, optional): Set to true to reveal professional emails for this profile, which spends Universal Credits.
- `title` (`string`, optional): Job title of the person; improves match accuracy when searching by name and employer.
- `webhook_id` (`integer`, optional): ID of a webhook configured in your RocketReach API settings; the finished lookup result is posted to it.

Example input: `{}`

### `rocketreach_universal_search_companies`

Universal Search Companies · Read-only

Search RocketReach companies using Universal Credits.
Returns a page of matching companies plus pagination details.
Use on Universal Credits accounts; use search_companies on standard credit accounts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`object`, required): Search criteria as a JSON object. Each key is a filter and each value is an array of strings, for example {"industry": ["Computer Software"], "employees": ["51-200"], "geo": ["United States"], "techstack": ["Salesforce"]}. Commonly used filters are name, domain, industry, employees, revenue, total_funding, geo, location, keyword, techstack and publicly_traded. Different filters are combined.
- `order_by` (`string`, optional): Result ordering. relevance is the default; popularity matches the RocketReach web app ordering.
- `page_size` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Default: `100`.
- `start` (`integer`, optional): 1-based index of the first result to return; use it to page through results. Default: `1`.

Example input: `{"query":{}}`

### `rocketreach_universal_search_people`

Universal Search People · Read-only

Search RocketReach people using Universal Credits.
Returns a page of matching profiles plus pagination details.
Use on Universal Credits accounts; use search_people on standard credit accounts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`object`, required): Search criteria as a JSON object. Each key is a filter and each value is an array of strings, for example {"current_title": ["VP of Sales"], "company_name": ["RocketReach"], "geo": ["United States"]}. Commonly used filters are name, current_title, current_employer or employer, company_name, company_domain, company_size, company_industry, department, management_levels, geo, skills, school, email_grade and contact_method. Multiple values within one filter match any of them, and different filters are combined. Wrap a value in double quotes for an exact match and prefix it with - to exclude it.
- `order_by` (`string`, optional): Result ordering. relevance is the default; popularity matches the RocketReach web app ordering.
- `page_size` (`integer`, optional): Maximum number of results to return per page, from 1 to 100. Default: `100`.
- `start` (`integer`, optional): 1-based index of the first result to return; use it to page through results. Default: `1`.

Example input: `{"query":{}}`

### `rocketreach_bulk_lookup_people`

Bulk Lookup People · Write

Start asynchronous lookups for up to 100 people in one request.
Returns acknowledgement with the profile IDs queued; results arrive by webhook or by polling check_person_lookup_status.
Use for batches; use lookup_person for a single person. Spends lookup credits.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `queries` (`array`, required): List of lookup criteria objects, at most 100. Each object identifies one person with id, name together with current_employer, linkedin_url, email, phone or npi_number, and optionally title.
- `profile_list` (`string`, optional): Name of the profile list that looked-up profiles are added to when the lookup completes. Default: `API Bulk Lookup`.
- `webhook_id` (`integer`, optional): ID of a webhook from your RocketReach API settings that receives the results when the lookups complete.

Example input: `{"queries":[]}`

### `rocketreach_universal_bulk_lookup_people`

Universal Bulk Lookup People · Write

Start asynchronous Universal Credits lookups for up to 100 people.
Returns acknowledgement with the profile IDs queued; results arrive by webhook or by polling universal_check_person_lookup_status.
Use for batches on Universal Credits accounts. Spends Universal Credits for every revealed field.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `queries` (`array`, required): List of lookup criteria objects, at most 100. Each object identifies one person with id, name together with current_employer, linkedin_url, email, phone or npi_number, and may set reveal_phone, reveal_professional_email, reveal_personal_email, reveal_detailed_person_enrichment and reveal_healthcare_enrichment to true to unlock that data.
- `profile_list` (`string`, optional): Name of the profile list that looked-up profiles are added to when the lookup completes. Default: `API Bulk Lookup`.
- `webhook_id` (`integer`, optional): ID of a webhook from your RocketReach API settings that receives the results when the lookups complete.

Example input: `{"queries":[]}`

### `rocketreach_verify_email`

Verify Email · Write

Verify whether an email address can receive mail.
Returns the canonical email, a status (valid, invalid, catchall or unknown), credits charged, the MX host and the individual check results.
Use before sending outreach to a found address. Spends one email verification credit, refunded when the status is unknown or the format is invalid.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address to verify, at most 254 characters.

Example input: `{"email":"<email>"}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
