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

# MCP tool catalog

> Browse all 37 typed tools exposed by the Airschool MCP server.

Airschool MCP exposes 37 typed tools for workspace checks, search, enrichment, research, managed batches, and asynchronous exports.

<Warning>
  Review each tool's credit behavior before approval. Paid export starts require `confirm_credit_spend: true`.
</Warning>

<Note>
  Authenticate through the MCP connection. OAuth clients complete authentication in the browser; API keys never belong in tool arguments.
</Note>

## Workspace

| Tool | Purpose | Credit behavior | Execution |
| - | - | - | - |
| [`airscale_check_credits`](#airscale-check-credits) | Check how many credits remain in the workspace. | Free; checking the balance does not debit credits | Sync |

<a id="airscale-check-credits" />

### `airscale_check_credits`

**MCP tool**

Check how many credits remain in the workspace.

* **Category:** Workspace

* **Spend classification:** Free

* **Credit behavior:** Free; checking the balance does not debit credits

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; checking the balance does not debit credits.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| *No input fields* | — | — | Pass an empty JSON object. | additional properties are not allowed |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_check_credits",
    "arguments": {}
  }
}
```

#### Expected result

Returns the workspace's current Airschool credit balance without spending credits.

**Related API reference:** [getCredits](/api-reference/credit-count)

## Search and research

| Tool | Purpose | Credit behavior | Execution |
| - | - | - | - |
| [`airscale_find_people`](#airscale-find-people) | Search people with public Find People filters for profile, current company, experience, and company growth. Costs 0.1 credits per returned lead. Paginate with cursor. | 0.1 credits per returned lead | Sync |
| [`airscale_count_find_people`](#airscale-count-find-people) | Count people matching find-people query filters. Free, no credits charged. | Free; no credits charged | Sync |
| [`airscale_find_companies`](#airscale-find-companies) | Search companies by firmographic, location, event, intent, technology, and website keyword filters. Costs 0.1 credits per returned company. Use airscale\_find\_companies\_filter\_values to discover accepted values. | 0.1 credits per returned company | Sync |
| [`airscale_find_companies_filter_values`](#airscale-find-companies-filter-values) | Discover accepted values for find-companies filters (city, region, industry, topics, techStack). Free, no credits charged. | Free; no credits charged | Sync |
| [`airscale_company_lookalikes`](#airscale-company-lookalikes) | Find companies similar to 1–10 reference company websites, with optional location, employee-size and founding-year filters. Returns company data and warnings synchronously. Costs 0.5 credits per unique returned company; unused reserved credits are refunded. Limit defaults to 2000; use an explicit smaller limit for a small search. Maximum 15 searches per rolling minute and 5 concurrent searches per workspace, shared with the API. Allow at least 100 seconds. Do not automatically retry: repeating a search can cause another charge. | 0.5 credits per unique returned company; reserves limit × 0.5 credits and refunds unused credits | Sync |
| [`airscale_airsearch`](#airscale-airsearch) | AI web research agent: ask a natural-language question and optionally specify structured fields to extract. Costs 1 credit per successful call. | 1 credit per successful call | Sync |
| [`airscale_leads_finder`](#airscale-leads-finder) | Search people with Leads Finder filters (job, company, location, seniority, skills, company size, funding, and more). Zero-based page pagination. Costs 0.1 credits per returned lead. | 0.1 credits per returned lead | Sync |
| [`airscale_post_search`](#airscale-post-search) | Search LinkedIn posts by keywords, author, author's employer or industry, mentions, or group, newest first by default. Returns raw post rows (text, author, engagement counts, URL) one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free. | 1 credit per successful page, including empty pages; invalid input and failures are free | Sync |

<a id="airscale-find-people" />

### `airscale_find_people`

**MCP tool**

Search people with public Find People filters for profile, current company, experience, and company growth. Costs 0.1 credits per returned lead. Paginate with cursor.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.1 credits per returned lead

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.1 credits per returned lead.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `query` | `object` | Yes | At least one filter required | allowed properties: `firstname`, `lastname`, `jobTitle`, `companyDomain`, `companyLinkedinUrl`, `school`, `languages`, `skills`, `location`, `keyword`, `currentCompanyName`, `currentCompany.type`, `currentCompany.industry`, `currentCompany.location`, `currentCompany.keyword`, `totalYearsOfExperience`, `timeInCurrentCompany`, `currentCompany.headcount`, `currentCompany.revenue`, `currentCompany.headcountGrowth`, `pastJobTitle`, `pastCompanyName`, `pastCompanyId`, `pastCompanyWebsite`, `pastCompanyUrn`, `pastCompany.type`, `pastCompany.industry`, `pastCompany.location`, `pastCompany.keyword`, `pastCompany.headcount`, `pastCompany.revenue`, `pastCompany.headcountGrowth`; nested required fields: `currentCompany.headcountGrowth.timespan`, `pastCompany.headcountGrowth.timespan`; additional properties are not allowed |
| `size` | `integer` | No | Results per page, 1..100. Defaults to 100 | minimum: 1; maximum: 100 |
| `cursor` | `string` | No | next\_cursor from the previous response | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_people",
    "arguments": {
      "query": {
        "companyDomain": {
          "include": [
            "example.com"
          ]
        }
      },
      "size": 1
    }
  }
}
```

#### Expected result

Returns one page of matching people and a cursor when another page is available.

**Related API reference:** [findPeople](/api-reference/find-people)

<a id="airscale-count-find-people" />

### `airscale_count_find_people`

**MCP tool**

Count people matching find-people query filters. Free, no credits charged.

* **Category:** Search and research

* **Spend classification:** Free

* **Credit behavior:** Free; no credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `query` | `object` | Yes | At least one filter required | allowed properties: `firstname`, `lastname`, `jobTitle`, `companyDomain`, `companyLinkedinUrl`, `school`, `languages`, `skills`, `location`, `keyword`, `currentCompanyName`, `currentCompany.type`, `currentCompany.industry`, `currentCompany.location`, `currentCompany.keyword`, `totalYearsOfExperience`, `timeInCurrentCompany`, `currentCompany.headcount`, `currentCompany.revenue`, `currentCompany.headcountGrowth`, `pastJobTitle`, `pastCompanyName`, `pastCompanyId`, `pastCompanyWebsite`, `pastCompanyUrn`, `pastCompany.type`, `pastCompany.industry`, `pastCompany.location`, `pastCompany.keyword`, `pastCompany.headcount`, `pastCompany.revenue`, `pastCompany.headcountGrowth`; nested required fields: `currentCompany.headcountGrowth.timespan`, `pastCompany.headcountGrowth.timespan`; additional properties are not allowed |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_count_find_people",
    "arguments": {
      "query": {
        "firstname": {
          "include": [
            "example"
          ]
        }
      }
    }
  }
}
```

#### Expected result

Returns the number of people matching the supplied query filters.

**Related API reference:** [countPeople](/api-reference/find-people/count)

<a id="airscale-find-companies" />

### `airscale_find_companies`

**MCP tool**

Search companies by firmographic, location, event, intent, technology, and website keyword filters. Costs 0.1 credits per returned company. Use airscale\_find\_companies\_filter\_values to discover accepted values.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.1 credits per returned company

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.1 credits per returned company.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `filters` | `object` | No | At least one real filter is required by the API | allowed properties: `country`, `region`, `city`, `industry`, `size`, `revenue`, `age`, `techStack`, `keywords`, `topics`, `events`, `locations`, `companyName`, `eventWindow`, `locationMatch`, `hasWebsite`, `isPublicCompany`; additional properties are not allowed |
| `page` | `integer` | No | Page number, >= 0. Defaults to 0 | minimum: 0 |
| `size` | `integer` | No | Companies per page, 1..100. Defaults to 50 | minimum: 1; maximum: 100 |
| `cursor` | `string` | No | next\_cursor from the previous response; used instead of page | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_companies",
    "arguments": {
      "filters": {
        "companyName": "Example Company"
      },
      "size": 1
    }
  }
}
```

#### Expected result

Returns one page of matching companies and pagination metadata for any remaining results.

**Related API reference:** [findCompanies](/api-reference/find-companies)

<a id="airscale-find-companies-filter-values" />

### `airscale_find_companies_filter_values`

**MCP tool**

Discover accepted values for find-companies filters (city, region, industry, topics, techStack). Free, no credits charged.

* **Category:** Search and research

* **Spend classification:** Free

* **Credit behavior:** Free; no credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `filter` | `string` | Yes | Filter to discover values for | allowed values: `"city"`, `"region"`, `"industry"`, `"topics"`, `"techStack"` |
| `q` | `string` | Yes | Search text, at least 2 characters | minimum length: 2 |
| `limit` | `integer` | No | 1..100. Defaults to 20 | minimum: 1; maximum: 100 |
| `country` | `string` | No | Country name or ISO code to narrow location results | — |
| `region` | `string` | No | Region code or value to narrow city results, e.g. "us-ca" | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_companies_filter_values",
    "arguments": {
      "filter": "city",
      "q": "ex"
    }
  }
}
```

#### Expected result

Returns accepted values for the selected company filter and search text.

**Related API reference:** [listFindCompanyFilterValues](/api-reference/find-companies/filter-values)

<a id="airscale-company-lookalikes" />

### `airscale_company_lookalikes`

**MCP tool**

Find companies similar to 1–10 reference company websites, with optional location, employee-size and founding-year filters. Returns company data and warnings synchronously. Costs 0.5 credits per unique returned company; unused reserved credits are refunded. Limit defaults to 2000; use an explicit smaller limit for a small search. Maximum 15 searches per rolling minute and 5 concurrent searches per workspace, shared with the API. Allow at least 100 seconds. Do not automatically retry: repeating a search can cause another charge.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.5 credits per unique returned company; reserves limit × 0.5 credits and refunds unused credits

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.5 credits per unique returned company; reserves limit × 0.5 credits and refunds unused credits.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `domains` | `array<string>` | Yes | Reference company domains or website URLs. The API normalizes and deduplicates them; LinkedIn URLs and IP addresses are not accepted. | minimum items: 1; maximum items: 10; item type: `string` |
| `limit` | `integer` | No | Maximum companies in the entire response. Defaults to 2000. Maximum 2000 for one distinct reference, 4000 for two, 5000 for three or more. Reserves limit × 0.5 credits; use a small explicit limit for a small search. | minimum: 1; maximum: 5000 |
| `include` | `object` | No | No runtime description supplied. | allowed properties: `country`, `city`, `size`; additional properties are not allowed |
| `exclude` | `object` | No | No runtime description supplied. | allowed properties: `country`, `city`, `size`, `domains`; additional properties are not allowed |
| `founded` | `object` | No | Inclusive founding-year bounds | allowed properties: `min`, `max`; additional properties are not allowed |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_company_lookalikes",
    "arguments": {
      "domains": [
        "example.com"
      ],
      "limit": 1
    }
  }
}
```

#### Expected result

Returns all unique matching companies synchronously with total\_results, credits\_used, and warnings. Costs 0.5 credits per unique returned company; reserves limit × 0.5 credits and refunds the unused amount. The total limit defaults to 2,000, with a maximum of 2,000 for one distinct reference, 4,000 for two, and 5,000 for three through ten. Shares 15 starts per rolling minute and 5 active searches per workspace with the API. Do not automatically retry: a completed search can still be charged when its response is lost, and repeating it can cause another charge.

**Related API reference:** [findCompanyLookalikes](/api-reference/company-lookalikes)

<a id="airscale-airsearch" />

### `airscale_airsearch`

**MCP tool**

AI web research agent: ask a natural-language question and optionally specify structured fields to extract. Costs 1 credit per successful call.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful call

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful call.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `prompt` | `string` | Yes | Natural-language research question or instruction | minimum length: 1 |
| `schema` | `object` | No | Fields to extract: keys are output names, values are types (string, url, email, number, int, float, boolean, date, phone) or free-text descriptions. If omitted, the agent infers fields | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_airsearch",
    "arguments": {
      "prompt": "Research Example Company using public sources."
    }
  }
}
```

#### Expected result

Returns the research answer and any structured fields requested in the prompt schema.

**Related API reference:** [airsearch](/api-reference/airsearch)

<a id="airscale-leads-finder" />

### `airscale_leads_finder`

**MCP tool**

Search people with Leads Finder filters (job, company, location, seniority, skills, company size, funding, and more). Zero-based page pagination. Costs 0.1 credits per returned lead.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.1 credits per returned lead

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.1 credits per returned lead.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `filters` | `object` | Yes | At least one filter other than searchMode | allowed properties: `job`, `jobExclude`, `company`, `companyUrl`, `peopleLocation`, `peopleLocationExclude`, `jobFunction`, `jobFunctionExclude`, `seniority`, `seniorityExclude`, `yearsCurrentRole`, `yearsCurrentCompany`, `yearsWorkExperience`, `skills`, `skillsExclude`, `language`, `languageExclude`, `certification`, `certificationExclude`, `profileKeywords`, `profileKeywordsExclude`, `profileBadge`, `industry`, `industryExclude`, `size`, `hq`, `hqExclude`, `type`, `typeExclude`, `revenue`, `companyKeywords`, `companyKeywordsExclude`, `founded`, `funding`, `fundingAmount`, `fundingDateMonths`, `department`, `growth`, `duration`, `searchMode`; additional properties are not allowed |
| `page` | `integer` | No | Zero-based page. Defaults to 0 | minimum: 0 |
| `size` | `integer` | No | Leads per page, 1..100. Defaults to 50 | minimum: 1; maximum: 100 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_leads_finder",
    "arguments": {
      "filters": {
        "job": [
          "Founder"
        ],
        "company": "example.com"
      },
      "page": 0,
      "size": 1
    }
  }
}
```

#### Expected result

Returns one zero-based page of nested Leads Finder person records with total, page, and size.

**Related API reference:** [searchLeadsFinder](/api-reference/leads-finder)

<a id="airscale-post-search" />

### `airscale_post_search`

**MCP tool**

Search LinkedIn posts by keywords, author, author's employer or industry, mentions, or group, newest first by default. Returns raw post rows (text, author, engagement counts, URL) one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free.

* **Category:** Search and research

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful page, including empty pages; invalid input and failures are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful page, including empty pages; invalid input and failures are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `keywords` | `string` | No | Keywords to search post text for | maximum length: 200 |
| `author_keywords` | `string` | No | Keywords matched against the post author | maximum length: 200 |
| `author_profile_urls` | `string or array<string>` | No | Posts by these LinkedIn profile URLs (linkedin.com/in/...); at most 10 values | — |
| `author_company_urls` | `string or array<string>` | No | Posts by these LinkedIn company pages (URLs or numeric company IDs); at most 10 values | — |
| `author_employer_company_urls` | `string or array<string>` | No | Posts by people who work at these companies (URLs or numeric company IDs); at most 10 values | — |
| `author_industry_ids` | `string or array<string>` | No | Posts by authors in these numeric LinkedIn industry IDs; at most 10 values | — |
| `mentioning_profile_urls` | `string or array<string>` | No | Posts mentioning these LinkedIn profile URLs; at most 10 values | — |
| `mentioning_company_urls` | `string or array<string>` | No | Posts mentioning these companies (URLs or numeric company IDs); at most 10 values | — |
| `group_url` | `string` | No | LinkedIn group URL (linkedin.com/groups/...) or numeric group ID | minimum length: 1; maximum length: 2048 |
| `sort_by` | `string` | No | Defaults to date | allowed values: `"date"`, `"relevance"` |
| `posted_within` | `string` | No | Only posts from this window. 1h, 3months, 6months and year require sort\_by "date" and can return short or empty pages | allowed values: `"1h"`, `"24h"`, `"week"`, `"month"`, `"3months"`, `"6months"`, `"year"` |
| `content_type` | `string` | No | No runtime description supplied. | allowed values: `"videos"`, `"images"`, `"live_videos"`, `"documents"`, `"collaborative_articles"`, `"jobs"` |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page; send the same other inputs | minimum length: 1; maximum length: 2048 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_post_search",
    "arguments": {
      "keywords": "Example Company"
    }
  }
}
```

#### Expected result

Returns one page of LinkedIn posts matching the filters and a next cursor when more results are available.

**Related API reference:** [searchLinkedinPosts](/api-reference/post-search)

## Contact and profile enrichment

| Tool | Purpose | Credit behavior | Execution |
| - | - | - | - |
| [`airscale_find_email`](#airscale-find-email) | Find a contact's professional email. Provide either a LinkedIn profile URL, or first/last name plus a company domain or name. | 2 credits per successful result | Sync |
| [`airscale_find_email_bulk`](#airscale-find-email-bulk) | Find professional emails for multiple contacts. Returns immediately; results are delivered to webhook\_url, one payload per input. | 2 credits per successful input | Async |
| [`airscale_find_mobile_phone`](#airscale-find-mobile-phone) | Find a contact's mobile phone number from their LinkedIn profile URL. | 40 credits per successful result | Sync |
| [`airscale_find_personal_email`](#airscale-find-personal-email) | Find a contact's personal email from their LinkedIn profile URL. | 3-12 credits per successful result | Sync |
| [`airscale_find_people_by_url`](#airscale-find-people-by-url) | Find a person's LinkedIn profile URL from their name and company. | 0.5 credits per successful result | Sync |
| [`airscale_extract_people_profile`](#airscale-extract-people-profile) | Extract a full LinkedIn person profile from its URL. | URL-selected pricing; person-profile successes cost 1 credit by default and workspace-specific pricing may differ | Sync |
| [`airscale_extract_company_profile`](#airscale-extract-company-profile) | Extract a full LinkedIn company profile from its URL. | URL-selected pricing; company or school-profile successes cost 0.5 credits and workspace-specific pricing may differ | Sync |
| [`airscale_reverse_email`](#airscale-reverse-email) | Resolve an email address to a LinkedIn profile. Returns the entire enriched profile, not only the URL. | 2 credits per returned profile | Sync |
| [`airscale_reverse_phone`](#airscale-reverse-phone) | Resolve a phone number to a LinkedIn profile. Returns the entire enriched profile, not only the URL. | 10 credits per returned profile | Sync |
| [`airscale_domain_to_linkedin`](#airscale-domain-to-linkedin) | Find a company's LinkedIn company URL from its domain. Costs 0.5 credits on success; no-result lookups are free. Allow up to 130 seconds. | 0.5 credits on success; no-result lookups are free | Sync |
| [`airscale_post_likers`](#airscale-post-likers) | List and enrich people who liked a LinkedIn post, one page (up to 25) at a time. Reserves 0.2 credits per requested slot and refunds unused, not-found, and failed slots. | 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded | Sync |
| [`airscale_post_commenters`](#airscale-post-commenters) | List and enrich people who commented on a LinkedIn post, one page (up to 25) at a time. Reserves 0.2 credits per requested slot and refunds unused, not-found, and failed slots. | 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded | Sync |
| [`airscale_profile_posts`](#airscale-profile-posts) | List the recent LinkedIn posts published by one person (profile URL), one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free. | 1 credit per successful page, including empty pages; invalid input and failures are free | Sync |
| [`airscale_company_posts`](#airscale-company-posts) | List the recent LinkedIn posts published by one company page (company URL or numeric ID), one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free. | 1 credit per successful page, including empty pages; invalid input and failures are free | Sync |
| [`airscale_profile_comments`](#airscale-profile-comments) | List the recent comments one person (profile URL) wrote on LinkedIn posts, with the comment and post URLs, one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free. | 1 credit per successful page, including empty pages; invalid input and failures are free | Sync |
| [`airscale_comment_likers`](#airscale-comment-likers) | List the people who reacted to one LinkedIn comment (comment URL, e.g. from airscale\_profile\_comments), one page at a time with pagination.next\_cursor. Returns raw rows, not enriched contacts. Costs 1 credit per successful page, empty pages included; invalid input and failures are free. | 1 credit per successful page, including empty pages; invalid input and failures are free | Sync |

<a id="airscale-find-email" />

### `airscale_find_email`

**MCP tool**

Find a contact's professional email. Provide either a LinkedIn profile URL, or first/last name plus a company domain or name.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 2 credits per successful result

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 2 credits per successful result.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `linkedin_profile_url` | `string` | No | LinkedIn profile URL of the contact | minimum length: 1 |
| `first_name` | `string` | No | No runtime description supplied. | minimum length: 1 |
| `last_name` | `string` | No | No runtime description supplied. | minimum length: 1 |
| `domain` | `string` | No | Company domain, e.g. airscale.io | minimum length: 1 |
| `company_name` | `string` | No | No runtime description supplied. | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_email",
    "arguments": {
      "first_name": "Example",
      "last_name": "Person",
      "domain": "example.com"
    }
  }
}
```

#### Expected result

Returns a professional email result when found, or a documented not-found result.

**Related API reference:** [findProfessionalEmail](/api-reference/email-finder)

<a id="airscale-find-email-bulk" />

### `airscale_find_email_bulk`

**MCP tool**

Find professional emails for multiple contacts. Returns immediately; results are delivered to webhook\_url, one payload per input.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 2 credits per successful input

* **Execution:** Asynchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 2 credits per successful input.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `webhook_url` | `string` | Yes | Results are POSTed here, one payload per input | format: `uri` |
| `inputs` | `array<object>` | Yes | Contacts to enrich, 1..100 | minimum items: 1; maximum items: 100; item type: `object` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_email_bulk",
    "arguments": {
      "webhook_url": "https://hooks.example.com/airscale",
      "inputs": [
        {
          "custom_id": "example-contact-1",
          "first_name": "Example",
          "last_name": "Person",
          "domain": "example.com"
        }
      ]
    }
  }
}
```

#### Expected result

Returns an acceptance result immediately; one result per input is delivered to the webhook URL.

**Related API reference:** [findProfessionalEmailsBulk](/api-reference/email-finder-\(bulk\))

<a id="airscale-find-mobile-phone" />

### `airscale_find_mobile_phone`

**MCP tool**

Find a contact's mobile phone number from their LinkedIn profile URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 40 credits per successful result

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 40 credits per successful result.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `linkedin_profile_url` | `string` | Yes | LinkedIn profile URL of the contact | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_mobile_phone",
    "arguments": {
      "linkedin_profile_url": "https://www.linkedin.com/in/example-person-000000"
    }
  }
}
```

#### Expected result

Returns the discovered mobile phone result, or a documented not-found result.

**Related API reference:** [findMobilePhone](/api-reference/mobile-finder)

<a id="airscale-find-personal-email" />

### `airscale_find_personal_email`

**MCP tool**

Find a contact's personal email from their LinkedIn profile URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 3-12 credits per successful result

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 3-12 credits per successful result.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `linkedin_profile_url` | `string` | Yes | LinkedIn profile URL of the contact | minimum length: 1 |
| `verification` | `boolean or string` | No | Verify the email's deliverability before returning it | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_personal_email",
    "arguments": {
      "linkedin_profile_url": "https://www.linkedin.com/in/example-person-000000"
    }
  }
}
```

#### Expected result

Returns the discovered personal email result, or a documented not-found result.

**Related API reference:** [findPersonalEmail](/api-reference/personal-email)

<a id="airscale-find-people-by-url" />

### `airscale_find_people_by_url`

**MCP tool**

Find a person's LinkedIn profile URL from their name and company.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.5 credits per successful result

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.5 credits per successful result.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `first_name` | `string` | Yes | No runtime description supplied. | minimum length: 1 |
| `last_name` | `string` | Yes | No runtime description supplied. | minimum length: 1 |
| `company_name` | `string` | Yes | No runtime description supplied. | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_find_people_by_url",
    "arguments": {
      "first_name": "Example",
      "last_name": "Person",
      "company_name": "Example Company"
    }
  }
}
```

#### Expected result

Returns a matching LinkedIn person-profile URL, or a documented not-found result.

**Related API reference:** [findPeopleProfileUrl](/api-reference/people-url-finder)

<a id="airscale-extract-people-profile" />

### `airscale_extract_people_profile`

**MCP tool**

Extract a full LinkedIn person profile from its URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** URL-selected pricing; person-profile successes cost 1 credit by default and workspace-specific pricing may differ

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: URL-selected pricing; person-profile successes cost 1 credit by default and workspace-specific pricing may differ.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `linkedin_profile_url` | `string` | Yes | LinkedIn person profile URL | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_extract_people_profile",
    "arguments": {
      "linkedin_profile_url": "https://www.linkedin.com/in/example-person-000000"
    }
  }
}
```

#### Expected result

Returns the extracted person profile for the supplied LinkedIn URL.

**Related API reference:** [extractPersonProfile](/api-reference/extract-people-profile)

<a id="airscale-extract-company-profile" />

### `airscale_extract_company_profile`

**MCP tool**

Extract a full LinkedIn company profile from its URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** URL-selected pricing; company or school-profile successes cost 0.5 credits and workspace-specific pricing may differ

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: URL-selected pricing; company or school-profile successes cost 0.5 credits and workspace-specific pricing may differ.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `linkedin_profile_url` | `string` | Yes | LinkedIn company page URL | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_extract_company_profile",
    "arguments": {
      "linkedin_profile_url": "https://www.linkedin.com/company/example-company"
    }
  }
}
```

#### Expected result

Returns the extracted company or school profile for the supplied LinkedIn URL.

**Related API reference:** [extractCompanyProfile](/api-reference/extract-company-profile)

<a id="airscale-reverse-email" />

### `airscale_reverse_email`

**MCP tool**

Resolve an email address to a LinkedIn profile. Returns the entire enriched profile, not only the URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 2 credits per returned profile

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 2 credits per returned profile.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `email` | `string` | Yes | Email address to resolve to a LinkedIn profile | format: `email` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_reverse_email",
    "arguments": {
      "email": "person@example.com"
    }
  }
}
```

#### Expected result

Returns the enriched person profile resolved from the email address, not only a profile URL.

**Related API reference:** [reverseEmailLookup](/api-reference/reverse-email)

<a id="airscale-reverse-phone" />

### `airscale_reverse_phone`

**MCP tool**

Resolve a phone number to a LinkedIn profile. Returns the entire enriched profile, not only the URL.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 10 credits per returned profile

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 10 credits per returned profile.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `mobile_phone` | `string` | Yes | Phone number with country code, e.g. +33610607076 | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_reverse_phone",
    "arguments": {
      "mobile_phone": "+12025550147"
    }
  }
}
```

#### Expected result

Returns the enriched person profile resolved from the phone number, not only a profile URL.

**Related API reference:** [reversePhoneLookup](/api-reference/reverse-phone)

<a id="airscale-domain-to-linkedin" />

### `airscale_domain_to_linkedin`

**MCP tool**

Find a company's LinkedIn company URL from its domain. Costs 0.5 credits on success; no-result lookups are free. Allow up to 130 seconds.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.5 credits on success; no-result lookups are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.5 credits on success; no-result lookups are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `domain` | `string` | Yes | Company domain, e.g. airscale.io | minimum length: 1 |
| `idempotency_key` | `string` | No | Reuse the same key when retrying the same request so it is not charged twice | minimum length: 1; maximum length: 200; pattern: `^[!-~]+$` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_domain_to_linkedin",
    "arguments": {
      "domain": "example.com"
    }
  }
}
```

#### Expected result

Returns the LinkedIn company URL for the domain, or a not-found error when none matches.

**Related API reference:** [findCompanyLinkedinUrl](/api-reference/domain-to-linkedin)

<a id="airscale-post-likers" />

### `airscale_post_likers`

**MCP tool**

List and enrich people who liked a LinkedIn post, one page (up to 25) at a time. Reserves 0.2 credits per requested slot and refunds unused, not-found, and failed slots.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `post_url` | `string` | Yes | LinkedIn post URL | format: `uri`; maximum length: 2048 |
| `limit` | `integer` | No | People per page, 1..25. Defaults to 25 | minimum: 1; maximum: 25 |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page | minimum length: 1; maximum length: 8192 |
| `idempotency_key` | `string` | No | A UUID. Reuse it when retrying the same request so it is not charged twice | format: `uuid` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_post_likers",
    "arguments": {
      "post_url": "https://www.linkedin.com/posts/example-company_activity-7376356221991178240",
      "limit": 1
    }
  }
}
```

#### Expected result

Returns one page of enriched post likers, pagination with a next cursor, and the page's credit outcome.

**Related API reference:** [listPostLikers](/api-reference/post-likers)

<a id="airscale-post-commenters" />

### `airscale_post_commenters`

**MCP tool**

List and enrich people who commented on a LinkedIn post, one page (up to 25) at a time. Reserves 0.2 credits per requested slot and refunds unused, not-found, and failed slots.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.2 credits per enriched profile; unused, not-found, and failed slots are refunded.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `post_url` | `string` | Yes | LinkedIn post URL | format: `uri`; maximum length: 2048 |
| `limit` | `integer` | No | People per page, 1..25. Defaults to 25 | minimum: 1; maximum: 25 |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page | minimum length: 1; maximum length: 8192 |
| `idempotency_key` | `string` | No | A UUID. Reuse it when retrying the same request so it is not charged twice | format: `uuid` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_post_commenters",
    "arguments": {
      "post_url": "https://www.linkedin.com/posts/example-company_activity-7376356221991178240",
      "limit": 1
    }
  }
}
```

#### Expected result

Returns one page of enriched post commenters, pagination with a next cursor, and the page's credit outcome.

**Related API reference:** [listPostCommenters](/api-reference/post-commenters)

<a id="airscale-profile-posts" />

### `airscale_profile_posts`

**MCP tool**

List the recent LinkedIn posts published by one person (profile URL), one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful page, including empty pages; invalid input and failures are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful page, including empty pages; invalid input and failures are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `profile_url` | `string` | Yes | LinkedIn profile URL (linkedin.com/in/...) | minimum length: 1; maximum length: 2048 |
| `posted_within` | `string` | No | Only posts from this window; pages can come back short or empty | allowed values: `"1h"`, `"24h"`, `"week"`, `"month"`, `"3months"`, `"6months"`, `"year"` |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page; send the same other inputs | minimum length: 1; maximum length: 2048 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_profile_posts",
    "arguments": {
      "profile_url": "https://www.linkedin.com/in/example-person"
    }
  }
}
```

#### Expected result

Returns one page of recent LinkedIn posts from a person and a next cursor when more results are available.

**Related API reference:** [listLinkedinProfilePosts](/api-reference/profile-posts)

<a id="airscale-company-posts" />

### `airscale_company_posts`

**MCP tool**

List the recent LinkedIn posts published by one company page (company URL or numeric ID), one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful page, including empty pages; invalid input and failures are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful page, including empty pages; invalid input and failures are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `company_url` | `string` | Yes | LinkedIn company URL (linkedin.com/company/...) or numeric company ID | minimum length: 1; maximum length: 2048 |
| `posted_within` | `string` | No | Only posts from this window; pages can come back short or empty | allowed values: `"1h"`, `"24h"`, `"week"`, `"month"`, `"3months"`, `"6months"`, `"year"` |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page; send the same other inputs | minimum length: 1; maximum length: 2048 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_company_posts",
    "arguments": {
      "company_url": "https://www.linkedin.com/company/example-company"
    }
  }
}
```

#### Expected result

Returns one page of recent LinkedIn posts from a company and a next cursor when more results are available.

**Related API reference:** [listLinkedinCompanyPosts](/api-reference/company-posts)

<a id="airscale-profile-comments" />

### `airscale_profile_comments`

**MCP tool**

List the recent comments one person (profile URL) wrote on LinkedIn posts, with the comment and post URLs, one page at a time with pagination.next\_cursor. Costs 1 credit per successful page, empty pages included; invalid input and failures are free.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful page, including empty pages; invalid input and failures are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful page, including empty pages; invalid input and failures are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `profile_url` | `string` | Yes | LinkedIn profile URL (linkedin.com/in/...) | minimum length: 1; maximum length: 2048 |
| `posted_within` | `string` | No | Only comments from this window | allowed values: `"24h"`, `"week"`, `"month"` |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page; send the same other inputs | minimum length: 1; maximum length: 2048 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_profile_comments",
    "arguments": {
      "profile_url": "https://www.linkedin.com/in/example-person"
    }
  }
}
```

#### Expected result

Returns one page of recent comments from a person, including comment and post URLs, with a next cursor when available.

**Related API reference:** [listLinkedinProfileComments](/api-reference/profile-comments)

<a id="airscale-comment-likers" />

### `airscale_comment_likers`

**MCP tool**

List the people who reacted to one LinkedIn comment (comment URL, e.g. from airscale\_profile\_comments), one page at a time with pagination.next\_cursor. Returns raw rows, not enriched contacts. Costs 1 credit per successful page, empty pages included; invalid input and failures are free.

* **Category:** Contact and profile enrichment

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per successful page, including empty pages; invalid input and failures are free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per successful page, including empty pages; invalid input and failures are free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `comment_url` | `string` | Yes | LinkedIn comment URL (or urn:li:comment URN), as returned in profile-comments or post comment links | minimum length: 1; maximum length: 4096 |
| `cursor` | `string` | No | pagination.next\_cursor from the previous page; send the same other inputs | minimum length: 1; maximum length: 2048 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_comment_likers",
    "arguments": {
      "comment_url": "urn:li:comment:(activity:7376356221991178240,7376356221991178241)"
    }
  }
}
```

#### Expected result

Returns one page of raw people rows for reactions to a comment, with a next cursor when available. These are not enriched contacts.

**Related API reference:** [listLinkedinCommentLikers](/api-reference/comment-likers)

## Checks and signals

| Tool | Purpose | Credit behavior | Execution |
| - | - | - | - |
| [`airscale_verify_email`](#airscale-verify-email) | Verify whether an email address is deliverable. Costs 0.5 credits. Allow up to 135 seconds. | 0.5 credits per verification | Sync |
| [`airscale_check_whatsapp`](#airscale-check-whatsapp) | Check whether a phone number is on WhatsApp. Costs 1 credit for a definitive yes or no. A pending or unknown result returns an operation\_id to look up with airscale\_get\_whatsapp\_check. | 1 credit for a definitive yes or no | Sync |
| [`airscale_get_whatsapp_check`](#airscale-get-whatsapp-check) | Look up a previous WhatsApp check by its operation\_id. Free; does not start a new check. | Free; no credits charged | Sync |
| [`airscale_check_dnc`](#airscale-check-dnc) | Check whether a US phone number is on the Do Not Call list. Costs 1 credit per completed check. | 1 credit per completed check | Sync |
| [`airscale_meta_ads`](#airscale-meta-ads) | Look up a company's Meta (Facebook and Instagram) ads from its domain. Costs 1 credit when ads are found; otherwise free. | 1 credit when ads are found; otherwise free | Sync |

<a id="airscale-verify-email" />

### `airscale_verify_email`

**MCP tool**

Verify whether an email address is deliverable. Costs 0.5 credits. Allow up to 135 seconds.

* **Category:** Checks and signals

* **Spend classification:** Variable credit cost

* **Credit behavior:** 0.5 credits per verification

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 0.5 credits per verification.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `email` | `string` | Yes | Email address to verify | format: `email`; maximum length: 320 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_verify_email",
    "arguments": {
      "email": "person@example.com"
    }
  }
}
```

#### Expected result

Returns the deliverability result, score, and address checks for the email.

**Related API reference:** [verifyEmail](/api-reference/miscellaneous/email-verifier)

<a id="airscale-check-whatsapp" />

### `airscale_check_whatsapp`

**MCP tool**

Check whether a phone number is on WhatsApp. Costs 1 credit for a definitive yes or no. A pending or unknown result returns an operation\_id to look up with airscale\_get\_whatsapp\_check.

* **Category:** Checks and signals

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit for a definitive yes or no

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit for a definitive yes or no.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `phone` | `string` | Yes | E.164 phone number, e.g. +12025550147 | pattern: `^\+[1-9]\d{6,14}$` |
| `idempotency_key` | `string` | No | A UUID. Reuse it when retrying the same request so it is not charged twice | format: `uuid` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_check_whatsapp",
    "arguments": {
      "phone": "+12025550147"
    }
  }
}
```

#### Expected result

Returns yes or no with an operation\_id, or a pending or unknown status to look up later.

**Related API reference:** [checkWhatsapp](/api-reference/miscellaneous/whatsapp-check)

<a id="airscale-get-whatsapp-check" />

### `airscale_get_whatsapp_check`

**MCP tool**

Look up a previous WhatsApp check by its operation\_id. Free; does not start a new check.

* **Category:** Checks and signals

* **Spend classification:** Free

* **Credit behavior:** Free; no credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `operation_id` | `string` | Yes | operation\_id returned by airscale\_check\_whatsapp | format: `uuid` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_get_whatsapp_check",
    "arguments": {
      "operation_id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

#### Expected result

Returns the stored state of a previous WhatsApp check without starting a new one.

**Related API reference:** [getWhatsappCheckOperation](/api-reference/miscellaneous/whatsapp-check/status)

<a id="airscale-check-dnc" />

### `airscale_check_dnc`

**MCP tool**

Check whether a US phone number is on the Do Not Call list. Costs 1 credit per completed check.

* **Category:** Checks and signals

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit per completed check

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit per completed check.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `phone` | `string` | Yes | US phone number, e.g. +12025550147 | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_check_dnc",
    "arguments": {
      "phone": "+12025550147"
    }
  }
}
```

#### Expected result

Returns whether the US number is listed on the Do Not Call list.

**Related API reference:** [checkDnc](/api-reference/dnc-checker)

<a id="airscale-meta-ads" />

### `airscale_meta_ads`

**MCP tool**

Look up a company's Meta (Facebook and Instagram) ads from its domain. Costs 1 credit when ads are found; otherwise free.

* **Category:** Checks and signals

* **Spend classification:** Variable credit cost

* **Credit behavior:** 1 credit when ads are found; otherwise free

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: 1 credit when ads are found; otherwise free.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `domain` | `string` | Yes | Company domain or website URL, e.g. airscale.io | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_meta_ads",
    "arguments": {
      "domain": "example.com"
    }
  }
}
```

#### Expected result

Returns the company's Meta ad count and, when ads are found, the ads themselves.

**Related API reference:** [lookupMetaAds](/api-reference/miscellaneous/meta-ads)

## Async exports and managed batches

| Tool | Purpose | Credit behavior | Execution |
| - | - | - | - |
| [`airscale_start_companies_export`](#airscale-start-companies-export) | Start an async paid export of Find Companies results to CSV or JSONL. Returns an export\_id; poll airscale\_get\_export\_status. | Up to 0.1 credits per exported company | Async |
| [`airscale_start_people_export`](#airscale-start-people-export) | Start an async paid export of Find People results to CSV or JSONL. Returns an export\_id; poll airscale\_get\_export\_status. | Up to 0.1 credits per exported lead | Async |
| [`airscale_create_contact_enrichment_batch`](#airscale-create-contact-enrichment-batch) | Create a server-side batch for CSV/file/table contact inputs with more than 20 rows before starting a managed bulk work-email enrichment export. | Free; no enrichment credits charged | Sync |
| [`airscale_add_contacts_to_enrichment_batch`](#airscale-add-contacts-to-enrichment-batch) | Add CSV/file/table contacts to a managed enrichment batch in chunks of up to 250. Use this for more than 20 rows instead of repeated single-contact lookup tools. | Free; no enrichment credits charged | Sync |
| [`airscale_start_contact_enrichment_export`](#airscale-start-contact-enrichment-export) | Start an async paid work-email enrichment export for a CSV/file/table contact batch with more than 20 rows after checking available credits. Returns an export\_id; poll airscale\_get\_export\_status, then use airscale\_get\_export\_file. | Up to 2 credits per contact | Async |
| [`airscale_get_export_status`](#airscale-get-export-status) | Check an async companies, people, or contact-enrichment export job without returning exported rows. | Free; no credits charged | Sync |
| [`airscale_get_export_file`](#airscale-get-export-file) | Get the download URL and MCP resource link for a completed companies, people, or contact-enrichment export file. | Free; no credits charged | Sync |

<a id="airscale-start-companies-export" />

### `airscale_start_companies_export`

**MCP tool**

Start an async paid export of Find Companies results to CSV or JSONL. Returns an export\_id; poll airscale\_get\_export\_status.

* **Category:** Async exports and managed batches

* **Spend classification:** Paid export

* **Credit behavior:** Up to 0.1 credits per exported company

* **Execution:** Asynchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Up to 0.1 credits per exported company.
</Note>

<Warning>
  This starts paid export work only after confirmation. The example deliberately omits `confirm_credit_spend` so it fails closed at the approval boundary. Review the maximum possible credit spend, then set `confirm_credit_spend: true` only after approval.
</Warning>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `filters` | `object` | No | Same filters as airscale\_find\_companies. | allowed properties: `country`, `region`, `city`, `industry`, `size`, `revenue`, `age`, `techStack`, `keywords`, `topics`, `events`, `locations`, `companyName`, `eventWindow`, `locationMatch`, `hasWebsite`, `isPublicCompany`; additional properties are not allowed |
| `max_rows` | `integer` | No | Maximum rows to export, 1..10000. Defaults to 1000. | minimum: 1; maximum: 10000 |
| `format` | `string` | No | Export file format. Defaults to csv. | allowed values: `"csv"`, `"jsonl"` |
| `fields` | `array<string>` | No | Optional top-level fields to include. | maximum items: 100; item type: `string` |
| `confirm_credit_spend` | `boolean` | No | Must be true to start a paid fresh-row export. | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_start_companies_export",
    "arguments": {
      "filters": {
        "companyName": "Example Company"
      },
      "max_rows": 1,
      "format": "csv"
    }
  }
}
```

#### Expected result

Returns `credit_confirmation_required` without creating an export. After explicit approval, rerun the same request with `confirm_credit_spend: true`.

<a id="airscale-start-people-export" />

### `airscale_start_people_export`

**MCP tool**

Start an async paid export of Find People results to CSV or JSONL. Returns an export\_id; poll airscale\_get\_export\_status.

* **Category:** Async exports and managed batches

* **Spend classification:** Paid export

* **Credit behavior:** Up to 0.1 credits per exported lead

* **Execution:** Asynchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Up to 0.1 credits per exported lead.
</Note>

<Warning>
  This starts paid export work only after confirmation. The example deliberately omits `confirm_credit_spend` so it fails closed at the approval boundary. Review the maximum possible credit spend, then set `confirm_credit_spend: true` only after approval.
</Warning>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `query` | `object` | Yes | Same query as airscale\_find\_people. | allowed properties: `firstname`, `lastname`, `jobTitle`, `companyDomain`, `companyLinkedinUrl`, `school`, `languages`, `skills`, `location`, `keyword`, `currentCompanyName`, `currentCompany.type`, `currentCompany.industry`, `currentCompany.location`, `currentCompany.keyword`, `totalYearsOfExperience`, `timeInCurrentCompany`, `currentCompany.headcount`, `currentCompany.revenue`, `currentCompany.headcountGrowth`, `pastJobTitle`, `pastCompanyName`, `pastCompanyId`, `pastCompanyWebsite`, `pastCompanyUrn`, `pastCompany.type`, `pastCompany.industry`, `pastCompany.location`, `pastCompany.keyword`, `pastCompany.headcount`, `pastCompany.revenue`, `pastCompany.headcountGrowth`; nested required fields: `currentCompany.headcountGrowth.timespan`, `pastCompany.headcountGrowth.timespan`; additional properties are not allowed |
| `max_rows` | `integer` | No | Maximum rows to export, 1..10000. Defaults to 1000. | minimum: 1; maximum: 10000 |
| `format` | `string` | No | Export file format. Defaults to csv. | allowed values: `"csv"`, `"jsonl"` |
| `fields` | `array<string>` | No | Optional top-level fields to include. | maximum items: 100; item type: `string` |
| `confirm_credit_spend` | `boolean` | No | Must be true to start a paid fresh-row export. | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_start_people_export",
    "arguments": {
      "query": {
        "companyDomain": {
          "include": [
            "example.com"
          ]
        }
      },
      "max_rows": 1,
      "format": "csv"
    }
  }
}
```

#### Expected result

Returns `credit_confirmation_required` without creating an export. After explicit approval, rerun the same request with `confirm_credit_spend: true`.

<a id="airscale-create-contact-enrichment-batch" />

### `airscale_create_contact_enrichment_batch`

**MCP tool**

Create a server-side batch for CSV/file/table contact inputs with more than 20 rows before starting a managed bulk work-email enrichment export.

* **Category:** Async exports and managed batches

* **Spend classification:** Free

* **Credit behavior:** Free; no enrichment credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no enrichment credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `name` | `string` | No | Optional user-facing batch name. | minimum length: 1; maximum length: 200 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_create_contact_enrichment_batch",
    "arguments": {
      "name": "Example contact enrichment batch"
    }
  }
}
```

#### Expected result

Returns a managed `batch_id` that can receive contact chunks before enrichment starts.

<a id="airscale-add-contacts-to-enrichment-batch" />

### `airscale_add_contacts_to_enrichment_batch`

**MCP tool**

Add CSV/file/table contacts to a managed enrichment batch in chunks of up to 250. Use this for more than 20 rows instead of repeated single-contact lookup tools.

* **Category:** Async exports and managed batches

* **Spend classification:** Free

* **Credit behavior:** Free; no enrichment credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no enrichment credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `batch_id` | `string` | Yes | Batch id returned by airscale\_create\_contact\_enrichment\_batch. | minimum length: 1 |
| `contacts` | `array<object>` | Yes | Contacts to add. Send uploaded CSV rows in chunks of up to 250. | minimum items: 1; maximum items: 250; item type: `object` |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_add_contacts_to_enrichment_batch",
    "arguments": {
      "batch_id": "example-batch-id",
      "contacts": [
        {
          "custom_id": "example-contact-1",
          "first_name": "Example",
          "last_name": "Person",
          "domain": "example.com"
        }
      ]
    }
  }
}
```

#### Expected result

Returns the updated managed-batch state after accepting the contact chunk.

<a id="airscale-start-contact-enrichment-export" />

### `airscale_start_contact_enrichment_export`

**MCP tool**

Start an async paid work-email enrichment export for a CSV/file/table contact batch with more than 20 rows after checking available credits. Returns an export\_id; poll airscale\_get\_export\_status, then use airscale\_get\_export\_file.

* **Category:** Async exports and managed batches

* **Spend classification:** Paid export

* **Credit behavior:** Up to 2 credits per contact

* **Execution:** Asynchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Up to 2 credits per contact.
</Note>

<Warning>
  This starts paid export work only after confirmation. The example deliberately omits `confirm_credit_spend` so it fails closed at the approval boundary. Review the maximum possible credit spend, then set `confirm_credit_spend: true` only after approval.
</Warning>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `batch_id` | `string` | Yes | Batch id to enrich. | minimum length: 1 |
| `enrichments` | `array<string>` | No | Phase 1 supports only work\_email. | minimum items: 1; maximum items: 1; item type: `string` |
| `format` | `string` | No | Export file format. Defaults to csv. | allowed values: `"csv"`, `"jsonl"` |
| `fields` | `array<string>` | No | Optional top-level fields to include. | maximum items: 100; item type: `string` |
| `confirm_credit_spend` | `boolean` | No | Must be true to start paid contact enrichment. | — |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_start_contact_enrichment_export",
    "arguments": {
      "batch_id": "example-batch-id",
      "enrichments": [
        "work_email"
      ],
      "format": "csv"
    }
  }
}
```

#### Expected result

Returns `credit_confirmation_required` without creating an export. After explicit approval, rerun the same request with `confirm_credit_spend: true`.

<a id="airscale-get-export-status" />

### `airscale_get_export_status`

**MCP tool**

Check an async companies, people, or contact-enrichment export job without returning exported rows.

* **Category:** Async exports and managed batches

* **Spend classification:** Free

* **Credit behavior:** Free; no credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `export_id` | `string` | Yes | Export id returned by a start export tool. | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_get_export_status",
    "arguments": {
      "export_id": "example-export-id"
    }
  }
}
```

#### Expected result

Returns the export state and progress metadata, including the server-provided polling interval when present.

<a id="airscale-get-export-file" />

### `airscale_get_export_file`

**MCP tool**

Get the download URL and MCP resource link for a completed companies, people, or contact-enrichment export file.

* **Category:** Async exports and managed batches

* **Spend classification:** Free

* **Credit behavior:** Free; no credits charged

* **Execution:** Synchronous

* **Authentication:** Uses the credentials configured on the MCP connection; never include an API key in tool arguments.

<Note>
  Credit behavior: Free; no credits charged.
</Note>

#### Inputs

| Field | Type | Required | Description | Constraints |
| - | - | - | - | - |
| `export_id` | `string` | Yes | Completed export id. | minimum length: 1 |

#### Minimal `tools/call` example

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "airscale_get_export_file",
    "arguments": {
      "export_id": "example-export-id"
    }
  }
}
```

#### Expected result

Returns a download URL and MCP resource link after the export has completed.


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