> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agent-auth`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# evertrace.ai

<div class="grid grid-cols-5 gap-4 items-center">
 <div class="col-span-4">
  Connect to evertrace.ai to search and manage talent signals, saved searches, and lists. Access rich professional profiles with scoring, experiences, and education data to power your recruiting and sourcing workflows.
 </div>
 <div class="flex justify-center">
  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/evertrace.png" width="64" height="64" alt="evertrace.ai logo" />
 </div>
</div>

Supports authentication: API Key

## Set up the agent connector

Register your evertrace.ai API key with Scalekit so it can authenticate and proxy requests on behalf of your users.

1. ### Generate an evertrace.ai API key

   - Sign in to evertrace.ai. Go to **Settings** → **API Keys**.

   - Create a new API key and copy it. Store it somewhere safe — you will not be able to view it again.

2. ### Create a connection in Scalekit

   - In [Scalekit dashboard](https://app.scalekit.com), go to **Agent Auth** → **Create Connection**. Find **evertrace.ai** and click **Create**.

   - Note the **Connection name** — you will use this as `connection_name` in your code (e.g., `evertrace`).

3. ### Add a connected account

   Connected accounts link a specific user identifier in your system to an evertrace.ai API key. Add accounts via the dashboard for testing, or via the Scalekit API in production.

   **Via dashboard (for testing)**

   - Open the connection you created and click the **Connected Accounts** tab → **Add account**.

   - Fill in:
     - **Your User's ID** — a unique identifier for this user in your system (e.g., `user_123`)
     - **API Key** — the evertrace.ai API key you copied in step 1

   - Click **Save**.

   **Via API (for production)**

   ```typescript
       await scalekit.actions.upsertConnectedAccount({
         connectionName: 'evertrace',
         identifier: 'user_123',
         credentials: { api_key: 'your-evertrace-api-key' },
       });
       ```
     ```python
       scalekit_client.actions.upsert_connected_account(
           connection_name="evertrace",
           identifier="user_123",
           credentials={"api_key": "your-evertrace-api-key"}
       )
       ```
     ## Usage

Once a connected account is set up, make API calls through the Scalekit proxy. Scalekit injects the evertrace.ai API key automatically.

```typescript
    import { ScalekitClient } from '@scalekit-sdk/node';
    import 'dotenv/config';

    const connectionName = 'evertrace';
    const identifier = 'user_123';

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

    const result = await actions.request({
      connectionName,
      identifier,
      path: '/signals',
      method: 'GET',
    });
    console.log(result.data);
    ```
  ```python
    import scalekit.client, os
    from dotenv import load_dotenv
    load_dotenv()

    connection_name = "evertrace"
    identifier = "user_123"

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

    result = actions.request(
        connection_name=connection_name,
        identifier=identifier,
        path="/signals",
        method="GET",
    )
    print(result)
    ```
  ## Tool list

## `evertrace_cities_list`

Search available cities by name. Returns city name strings sorted by signal count. Use these values in signal filters for the city field.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `search` | string | No | Case-insensitive partial match on city name (e.g. "san fran") |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |

## `evertrace_companies_list`

Search companies by name or look up by specific IDs. Returns company entity IDs (exe_* format) needed for signal filtering by past_companies.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `search` | string | No | Case-insensitive partial match on company name (e.g. "google") |
| `ids` | array | No | Look up specific companies by entity ID (exe_* format) |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |

## `evertrace_educations_list`

Search education institutions by name or look up by specific IDs. Returns institution entity IDs (ede_* format) needed for signal filtering by past_education.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `search` | string | No | Case-insensitive partial match on institution name (e.g. "stanford") |
| `ids` | array | No | Look up specific institutions by entity ID (ede_* format) |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |

## `evertrace_list_entries_create`

Add a signal to a list.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID to add the signal to |
| `signal_id` | string | Yes | The signal ID to add |

## `evertrace_list_entries_delete`

Remove an entry from a list.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID |
| `entry_id` | string | Yes | The entry ID to remove |

## `evertrace_list_entries_download`

Export list entries as a CSV file. Maximum 250 entries per export.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID to export entries from |

## `evertrace_list_entries_get`

Get a single list entry with its full signal profile.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID |
| `entry_id` | string | Yes | The entry ID |

## `evertrace_list_entries_list`

List entries in a list with pagination, sorting, and filtering by screening/viewed status.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |
| `sort_by` | string | No | Sort field: "entry_created_at" (when added to list) or "signal_discovered_at" (when signal was discovered) |
| `sort_order` | string | No | Sort direction: "asc" (oldest first) or "desc" (newest first) |
| `screened_by` | array | No | Filter by screening status. Prefix with "-" to exclude (e.g. ["-me", "-others"]) |
| `viewed_by` | array | No | Filter by viewed status. Prefix with "-" to exclude (e.g. ["-me"]) |

## `evertrace_list_entries_list_by_linkedin_id`

Get all signals representing the same person as a list entry, matched by LinkedIn ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `list_id` | string | Yes | The list ID |
| `entry_id` | string | Yes | The entry ID |

## `evertrace_lists_create`

Create a new list. Provide user IDs in accesses to share the list with teammates. The creator is automatically granted access.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | Name of the new list |
| `accesses` | array | No | Array of user IDs to share this list with. Pass an empty array for private list |

## `evertrace_lists_delete`

Permanently delete a list and all its entries.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The list ID to delete |

## `evertrace_lists_get`

Get a list by ID with its entries, accesses, and creator information.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The list ID |

## `evertrace_lists_list`

List all lists the current user has access to in evertrace.ai.

## `evertrace_lists_update`

Rename a list.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The list ID to update |
| `name` | string | Yes | New name for the list |

## `evertrace_screenings_count`

Count how many signals the current user has screened.

## `evertrace_searches_create`

Create a new saved search with filters. Each filter requires a key, operator, and value. Provide sharee user IDs to share the search with teammates.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | Yes | Title of the saved search (max 50 characters) |
| `visited_at` | number | Yes | Epoch timestamp in milliseconds for when the search was last visited |
| `filters` | array | Yes | Array of filter objects. Each filter has: key (e.g. "country", "industry", "score"), operator (e.g. "in"), and value |
| `sharees` | array | Yes | Array of user IDs to share this search with |
| `emoji` | string | No | Optional emoji for the saved search |

## `evertrace_searches_delete`

Permanently delete a saved search.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID to delete |

## `evertrace_searches_duplicate`

Duplicate a saved search, creating a copy with the same filters and settings.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID to duplicate |

## `evertrace_searches_get`

Get a saved search by ID with its filters and sharees.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID |

## `evertrace_searches_list`

List all saved searches accessible to the current user in evertrace.ai.

## `evertrace_searches_notifications_get`

Count new signals matching a saved search since it was last visited. Use the optional max parameter to cap the count for performance.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID |
| `max` | string | No | Optional cap on the count for performance (e.g. "99") |

## `evertrace_searches_signals_list`

List signals matching a saved search's filters with pagination.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |

## `evertrace_searches_update`

Update a saved search. All fields are optional — only provided fields are changed. If filters are provided, they replace all existing filters. If sharees are provided, they replace the full access list.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The saved search ID to update |
| `title` | string | No | New title for the saved search (max 50 characters) |
| `emoji` | string | No | New emoji for the saved search |
| `visited_at` | number | No | Epoch timestamp in milliseconds for when the search was last visited |
| `filters` | array | No | Replaces all existing filters. Each filter has: key, operator, value |
| `sharees` | array | No | Replaces the full sharee list with these user IDs |

## `evertrace_signal_mark_viewed`

Mark a signal as viewed by the current user.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `signal_id` | string | Yes | The ID of the signal to mark as viewed |

## `evertrace_signal_screen`

Screen a signal, marking it as reviewed by the current user. Screened signals are hidden from default views.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `signal_id` | string | Yes | The ID of the signal to screen |

## `evertrace_signal_unscreen`

Unscreen a signal, making it visible again in default views.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `signal_id` | string | Yes | The ID of the signal to unscreen |

## `evertrace_signals_count`

Count signals matching the given filters without returning the data. Accepts the same filters as the list endpoint.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `time_range` | array | No | Absolute date range as [from, to] in YYYY-MM-DD format. Mutually exclusive with time_relative |
| `time_relative` | string | No | Relative time window in days from today (e.g. "30"). Mutually exclusive with time_range |
| `created_after` | string | No | Epoch timestamp in milliseconds. Only counts signals discovered after this point |
| `score` | string | No | Minimum score threshold (1-10) |
| `fullname` | string | No | Free-text search on person name |
| `type` | array | No | Filter by signal type. Valid values: "New Company", "Stealth Position", "Left Position", "New Position", "Promoted", etc. |
| `country` | array | No | Filter by country. Prefix with "!" to exclude |
| `industry` | array | No | Filter by industry vertical. Prefix with "!" to exclude |
| `origin` | array | No | Filter by nationality/origin country |
| `region` | array | No | Filter by geographic region or US state |
| `past_companies` | array | No | Filter by past employer using company entity IDs (exe_* format) |
| `past_education` | array | No | Filter by past education institution using IDs (ede_* format) |
| `screened_by` | array | No | Filter by screening status. Use "me", "others", or user IDs. Prefix with "-" to exclude |

## `evertrace_signals_download`

Export signals matching the given filters as a CSV file. Maximum 250 signals per export.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `time_range` | array | No | Absolute date range as [from, to] in YYYY-MM-DD format. Mutually exclusive with time_relative |
| `time_relative` | string | No | Relative time window in days from today (e.g. "30"). Mutually exclusive with time_range |
| `score` | string | No | Minimum score threshold (1-10) |
| `type` | array | No | Filter by signal type |
| `country` | array | No | Filter by country. Prefix with "!" to exclude |
| `industry` | array | No | Filter by industry vertical |
| `origin` | array | No | Filter by nationality/origin country |
| `past_education` | array | No | Filter by past education institution using IDs (ede_* format) |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page (max 250) |

## `evertrace_signals_entries`

Get all list entries for a signal. Shows which lists this signal has been added to.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The signal ID |

## `evertrace_signals_get`

Get a single talent signal by ID with full profile details including experiences, educations, taggings, views, and screenings.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The signal ID to retrieve |

## `evertrace_signals_list`

Search and filter talent signals with pagination. Returns full signal profiles including experiences, educations, taggings, views, and screenings.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `time_range` | array | No | Absolute date range as [from, to] in YYYY-MM-DD format (e.g. ["2026-01-01", "2026-03-01"]). Mutually exclusive with time_relative |
| `time_relative` | string | No | Relative time window in days from today (e.g. "30", "60", "90"). Mutually exclusive with time_range |
| `created_after` | string | No | Epoch timestamp in milliseconds. Only returns signals discovered after this point |
| `score` | string | No | Minimum score threshold (1-10). Acts as a >= filter |
| `fullname` | string | No | Free-text search on person name (case-insensitive partial match) |
| `profile_tags` | array | No | Filter by profile background tags. Valid values: "Serial Founder", "VC Backed Founder", "VC Backed Operator", "VC Investor", "YC Alumni", "Big Tech experience", "Big 4 experience", "Banking experience", "Consulting experience" |
| `type` | array | No | Filter by signal type. Valid values: "New Company", "Stealth Position", "Left Position", "Investor Position", "Board Position", "New Position", "Promoted", "New Patent", "New Grant" |
| `country` | array | No | Filter by country name (e.g. ["United States"]). Prefix with "!" to exclude |
| `gender` | array | No | Filter by gender. Valid values: "man", "woman" |
| `age` | array | No | Filter by age range buckets. Valid values: "Below 25", "25 to 29", "30 to 34", "35 to 39", "40 to 44", "45 to 49", "Above 49" |
| `past_companies` | array | No | Filter by past employer using company entity IDs in exe_* format. Use evertrace_companies_list to look up IDs |
| `past_education` | array | No | Filter by past education institution using IDs in ede_* format. Use evertrace_educations_list to look up IDs |
| `education_level` | array | No | Filter by highest education level. Valid values: "Bachelor", "Master", "PhD or Above", "MBA", "No university degree" |
| `customer_focus` | array | No | Filter by target market. Valid values: "B2B", "B2C" |
| `industry` | array | No | Filter by industry vertical (e.g. ["Technology", "Healthcare"]). Prefix with "!" to exclude |
| `origin` | array | No | Filter by nationality/origin country (e.g. ["India"]). Prefix with "!" to exclude |
| `region` | array | No | Filter by geographic region or US state (e.g. ["Europe", "California"]). Prefix with "!" to exclude |
| `city` | array | No | Filter by city name (e.g. ["San Francisco"]). Use evertrace_cities_list to search available cities. Prefix with "!" to exclude |
| `source` | array | No | Filter by data source name. Values are dynamic per workspace |
| `screened_by` | array | No | Filter by screening status. Use "me", "others", or user IDs. Prefix with "-" to exclude |
| `page` | string | No | Page number for pagination |
| `limit` | string | No | Number of results per page |

## `evertrace_signals_list_by_linkedin_id`

Get all signals representing the same person, matched by LinkedIn ID. Useful for finding duplicate or historical signals for the same individual.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The signal ID to match LinkedIn ID from |

## `evertrace_views_count`

Count how many signals the current user has viewed.

---

## 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 |
