> **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 the CompanyEnrich MCP server

The CompanyEnrich MCP connector routes your AI agent's tool calls to CompanyEnrich's own MCP server through Scalekit. Each user signs in to CompanyEnrich once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 11 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** CRM & Sales, Marketing, Search
**Tools:** 11: 8 read, 3 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=COMPANYENRICHMCP)

## 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 CompanyEnrich MCP connection

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

   Scalekit credentials are available for CompanyEnrich MCP server, so you don't need to register an OAuth app.

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 = 'companyenrichmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize CompanyEnrich MCP:', 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: 'companyenrichmcp_get_current_user',
     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 = "companyenrichmcp"
   identifier = "user_123"

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

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

   ```bash
   python quickstart.py
   ```

   Each user signs in once. 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: 'companyenrichmcp_find_similar_companies',
  toolInput: {
    domains: [],
  },
  connector: 'companyenrichmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="companyenrichmcp_find_similar_companies",
    tool_input={
        "domains": [],
    },
    connection_name="companyenrichmcp",
    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.

### `companyenrichmcp_find_similar_companies`

Find Similar Companies · Read-only

Finds companies similar to one or more seed domains, with optional filters. Costs 5 credits per company returned, with a 5-credit minimum.

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

Inputs:

- `domains` (`array`, required): Company domain names to find similar companies for. Up to 10 domains.
- `categories` (`array`, optional): Company categories to filter by.
- `categoryOperator` (`string`, optional): Operator for category filters. Defaults to And in the API. One of: `And`, `Or`.
- `cities` (`array`, optional): City IDs to filter by.
- `countries` (`array`, optional): 2-letter country codes to filter by.
- `country` (`string`, optional): Deprecated single-country alias. Prefer countries.
- `employees` (`array`, optional): Employee count ranges.
- `exclude` (`object`, optional): Exclude companies matching any of these filters.
- `foundedYear` (`object`, optional): Founded year range.
- `fundingAmount` (`object`, optional): Funding amount range.
- `fundingRounds` (`array`, optional): Funding rounds to filter by.
- `fundingYear` (`object`, optional): Funding year range.
- `includeWorkforce` (`boolean`, optional): When true, requests expanded workforce insights. Costs 5 additional credits per company. Default: `false`.
- `keywords` (`array`, optional): Keywords to filter by.
- `keywordsOperator` (`string`, optional): Operator for keyword filters. Defaults to And in the API. One of: `And`, `Or`.
- `minScore` (`number`, optional): Minimum similarity score required for returned companies.
- `naicsCode` (`array`, optional): NAICS codes to filter by.
- `page` (`integer`, optional): Page number, 1-indexed. Default: `1`.
- `pageSize` (`integer`, optional): Number of results per page, from 1 to 100. Default: `20`.
- `query` (`string`, optional): Search query applied to company name and domain.
- `regions` (`array`, optional): Region IDs to filter by.
- `require` (`array`, optional): Company features that must exist.
- `revenue` (`array`, optional): Revenue ranges in USD.
- `similarityWeight` (`number`, optional): Similarity weight from -1 to 1. Higher favors similarity, lower favors established companies.
- `states` (`array`, optional): State IDs to filter by.
- `technologies` (`array`, optional): Technologies to filter by.
- `technologiesOperator` (`string`, optional): Operator for technology filters. Defaults to And in the API. One of: `And`, `Or`.
- `type` (`array`, optional): Company types to filter by.
- `workforceGrowth` (`object`, optional): Filter by workforce growth percentage.
- `workforceSize` (`array`, optional): Filter by absolute workforce headcount.

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

### `companyenrichmcp_get_company_by_id`

Get Company By ID · Read-only

Retrieves a company by CompanyEnrich company ID. Costs 1 credit per call, plus 5 additional credits when includeWorkforce is true.

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

Inputs:

- `id` (`string`, required): CompanyEnrich company ID.
- `includeWorkforce` (`boolean`, optional): When true, requests expanded workforce insights. Costs 5 additional credits per company. Default: `false`.

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

### `companyenrichmcp_get_company_workforce`

Get Company Workforce Insights · Read-only

Returns workforce insights for a single company by CompanyEnrich company ID or domain. Costs 5 credits per successful call.

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

Inputs:

- `domain` (`string`, optional): Company domain. Provide either id or domain.
- `id` (`string`, optional): CompanyEnrich company ID. Provide either id or domain.

Example input: `{}`

### `companyenrichmcp_get_current_user`

Get Current User · Read-only

Returns authenticated user credit balance and account capabilities. Free; no credits deducted.

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

Inputs: none.

Example input: `{}`

### `companyenrichmcp_get_person_by_id`

Get Person By ID · Read-only

Retrieves a person by CompanyEnrich person ID. Costs 2 credits per call.

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

Inputs:

- `id` (`string`, required): CompanyEnrich person ID.

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

### `companyenrichmcp_lookup_person_by_email`

Lookup Person By Email · Read-only

Looks up a person by email address. The API resolves the company from the email domain and matches the local part. Costs 5 credits per successful call.

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

Inputs:

- `email` (`string`, required): The email address of the person to look up.

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

### `companyenrichmcp_search_companies`

Search Companies · Read-only

Searches companies with page-based pagination. semanticQuery is optional; use it for natural-language profile search, and use query for name/domain focused searches. Costs 1 credit per company returned, with a 1-credit minimum.

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

Inputs:

- `categories` (`array`, optional): Company categories to filter by.
- `categoryOperator` (`string`, optional): Operator for category filters. Defaults to And in the API. One of: `And`, `Or`.
- `cities` (`array`, optional): City IDs to filter by.
- `countries` (`array`, optional): 2-letter country codes to filter by.
- `country` (`string`, optional): Deprecated single-country alias. Prefer countries.
- `employees` (`array`, optional): Employee count ranges.
- `exclude` (`object`, optional): Exclude companies matching any of these filters.
- `foundedYear` (`object`, optional): Founded year range.
- `fundingAmount` (`object`, optional): Funding amount range.
- `fundingRounds` (`array`, optional): Funding rounds to filter by.
- `fundingYear` (`object`, optional): Funding year range.
- `includeWorkforce` (`boolean`, optional): When true, requests expanded workforce insights. Costs 5 additional credits per company. Default: `false`.
- `keywords` (`array`, optional): Keywords to filter by.
- `keywordsOperator` (`string`, optional): Operator for keyword filters. Defaults to And in the API. One of: `And`, `Or`.
- `naicsCode` (`array`, optional): NAICS codes to filter by.
- `page` (`integer`, optional): Page number, 1-indexed. Default: `1`.
- `pageSize` (`integer`, optional): Number of results per page, from 1 to 100. Default: `20`.
- `query` (`string`, optional): Search query applied to company name and domain.
- `regions` (`array`, optional): Region IDs to filter by.
- `require` (`array`, optional): Company features that must exist.
- `revenue` (`array`, optional): Revenue ranges in USD.
- `semanticQuery` (`string`, optional): Natural-language query describing the kinds of companies to find.
- `semanticWeight` (`number`, optional): Semantic weight from 0 to 1. Defaults to 0.7 in the API.
- `states` (`array`, optional): State IDs to filter by.
- `technologies` (`array`, optional): Technologies to filter by.
- `technologiesOperator` (`string`, optional): Operator for technology filters. Defaults to And in the API. One of: `And`, `Or`.
- `type` (`array`, optional): Company types to filter by.
- `workforceGrowth` (`object`, optional): Filter by workforce growth percentage.
- `workforceSize` (`array`, optional): Filter by absolute workforce headcount.

Example input: `{}`

### `companyenrichmcp_search_people`

Search People · Read-only

Searches people with page-based pagination. positionQuery accepts either one string or an array of strings. Costs 2 credits per person returned, with a 2-credit minimum.

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

Inputs:

- `atCurrentCompanyAfter` (`string`, optional): Only include people who joined their current company after this UTC datetime.
- `atCurrentCompanyBefore` (`string`, optional): Only include people who joined their current company before this UTC datetime.
- `atCurrentPositionAfter` (`string`, optional): Only include people who started their current position after this UTC datetime.
- `atCurrentPositionBefore` (`string`, optional): Only include people who started their current position before this UTC datetime.
- `companyFilter` (`object`, optional): Company filters to scope people results.
- `countries` (`array`, optional): 2-letter country codes to filter by.
- `department` (`array`, optional): Departments to filter by.
- `domains` (`array`, optional): Company domains to filter by.
- `exclude` (`object`, optional): People exclusion filters.
- `page` (`integer`, optional): Page number, 1-indexed. Default: `1`.
- `pageSize` (`integer`, optional): Number of results per page, from 1 to 100. Default: `20`.
- `positionQuery` (`string`, optional): Current job title query or queries. A string is accepted for backward compatibility.
- `query` (`string`, optional): Name search query. This is not semantic search.
- `seniority` (`array`, optional): Seniority levels to filter by.

Example input: `{}`

### `companyenrichmcp_enrich_company`

Enrich Company Information · Write

Enriches a company by domain. Costs 1 credit per call, plus 5 additional credits when includeWorkforce is true.

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

Inputs:

- `domain` (`string`, required): The domain name of the company to enrich, for example example.com.
- `includeWorkforce` (`boolean`, optional): When true, requests expanded workforce insights. Costs 5 additional credits per company. Default: `false`.

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

### `companyenrichmcp_enrich_company_by_properties`

Enrich Company By Properties · Write

Enriches a company by known properties such as name or social profile URL. Costs 1 credit per call, plus 5 additional credits when includeWorkforce is true.

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

Inputs:

- `facebookUrl` (`string`, optional): Company Facebook URL.
- `includeWorkforce` (`boolean`, optional): When true, requests expanded workforce insights. Costs 5 additional credits per company. Default: `false`.
- `instagramUrl` (`string`, optional): Company Instagram URL.
- `linkedinId` (`string`, optional): Company LinkedIn ID.
- `linkedinUrl` (`string`, optional): Company LinkedIn URL.
- `name` (`string`, optional): Company name to enrich.
- `twitterUrl` (`string`, optional): Company Twitter/X URL.
- `youtubeUrl` (`string`, optional): Company YouTube URL.

Example input: `{}`

### `companyenrichmcp_enrich_person_email`

Enrich Person Email · Write

BETA: Resolves a work email address for a single person ID and optional company domain. Costs 10 credits per newly accessed found email.

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

Inputs:

- `id` (`string`, required): CompanyEnrich person ID.
- `domain` (`string`, optional): Optional company domain. If omitted, current experience domains are tried.

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

## Related

Other CRM & Sales connectors ([all 104](/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 |
