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

---

# Connect AI agents to Nooks (API Key)

The Nooks (API Key) connector lets your AI agent act in each user's Nooks (API Key) account. Each user connects their own Nooks (API Key) access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 20 tools.

**Authentication:** Bearer Token
**Categories:** CRM & Sales, Communication, Automation
**Tools:** 20: 16 read, 4 write, 0 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=NOOKSAPIKEY)

## Setup

1. ### Install the SDK

   **Node.js**

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

   **Python**

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

2. ### Set your credentials

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

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

3. ### Create the Nooks (API Key) connection

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

   **Console steps with screenshots:**

   Each user connects with a Nooks API key. Scalekit stores the key on the user's connected account and sends it as a Bearer token with every tool call.

   > caution: API keys have full workspace access
   >
   > A Nooks API key has full read and write access to its workspace and is not limited by scopes. Use the [Nooks OAuth connector](/agentkit/connectors/nooks/) instead when each user should act only with their own consented permissions.

   1. ### Create a Nooks API key

      - Sign in to Nooks and open **Developer Settings** → **API Keys**.
      - Create a key and copy it. Nooks API keys start with `nooks-api-`.

   2. ### Create a connection in Scalekit

      - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**. Find **Nooks (API Key)** and click **Create**.
      - Note the **Connection name** — you will use this as `connection_name` in your code (e.g., `nooksapikey`).
      - Click **Save**.

   3. ### Add a connected account

      Connected accounts link a specific user identifier in your system to a Nooks API key. Add one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.

      **In the dashboard, to test**

      - 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 Nooks API key from step 1
      - Click **Create Account**.

      **From your backend, if your app already has the credentials**

      For example, when users enter them on a settings page in your app:

        **Node.js**

        ```typescript
        import { Scalekit, ConnectorStatus } from '@scalekit-sdk/node';

        const scalekit = new Scalekit(
          process.env.SCALEKIT_ENVIRONMENT_URL,
          process.env.SCALEKIT_CLIENT_ID,
          process.env.SCALEKIT_CLIENT_SECRET,
        );

        // Never hard-code credentials — read from secure storage or user input
        const nooksApiKey = getUserNooksApiKey(); // retrieve from your secure store

        const authorizationDetails = {
          details: {
            case: 'staticAuth',
            value: { details: { token: nooksApiKey } },
          },
        };

        let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({
          connectionName: 'nooksapikey',
          identifier: 'user_123',
          authorizationDetails,
        });

        // Make sure the account is ACTIVE before the first tool call.
        if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {
          ({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({
            connectionName: 'nooksapikey',
            identifier: 'user_123',
            authorizationDetails,
          }));
        }
        ```

        **Python**

        ```python
        import os
        from scalekit import ScalekitClient

        scalekit_client = ScalekitClient(
            env_url=os.environ["SCALEKIT_ENVIRONMENT_URL"],
            client_id=os.environ["SCALEKIT_CLIENT_ID"],
            client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],
        )

        # Never hard-code credentials — read from secure storage or user input
        nooks_api_key = get_user_nooks_api_key()  # retrieve from your secure store

        authorization_details = {"static_auth": {"token": nooks_api_key}}

        response = scalekit_client.actions.upsert_connected_account(
            connection_name="nooksapikey",
            identifier="user_123",
            authorization_details=authorization_details,
        )

        # Make sure the account is ACTIVE before the first tool call.
        if response.connected_account.status != "ACTIVE":
            response = scalekit_client.actions.upsert_connected_account(
                connection_name="nooksapikey",
                identifier="user_123",
                authorization_details=authorization_details,
            )
        ```

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

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

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

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

   const connector = 'nooksapikey'
   const identifier = 'user_123'

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

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

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

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

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

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

   connection_name = "nooksapikey"
   identifier = "user_123"

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

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

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Nooks (API Key) credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

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

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'nooksapikey_account_get',
  toolInput: {
    id: '<id>',
  },
  connector: 'nooksapikey',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="nooksapikey_account_get",
    tool_input={
        "id": "<id>",
    },
    connection_name="nooksapikey",
    identifier="user_123",
)
```

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

### `nooksapikey_account_get`

Get Account · Read-only

Get one Nooks account (company) by its ID.
Returns the account's name, domain, CRM IDs, owner, and optionally its CRM custom fields.
Use nooksapikey_account_get when you have the ID. Use nooksapikey_accounts_list to search by name, domain, or CRM ID.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the account. Get it from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include_crm_custom_fields` (`boolean`, optional): Set to true to add each record's CRM custom fields as crmCustomFields, keyed by CRM field name (for example {"hs_lead_status": "OPEN"}).

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

### `nooksapikey_accounts_list`

List Accounts · Read-only

List CRM-sourced accounts (companies) in Nooks, filtered by IDs, exact name, domain, CRM ID, or update time.
Returns up to 100 accounts per page with name, domain, CRM IDs, and owner, plus a links.next cursor.
Use nooksapikey_accounts_list to find an account. Use nooksapikey_account_get when you already have the account ID.

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

Inputs:

- `filter_crm_id` (`string`, optional): Only return the account with this ID in your CRM. Example: 0015g00000XyZabAAB.
- `filter_domain` (`string`, optional): Only return the account with this exact domain. Example: acme.com.
- `filter_ids` (`string`, optional): Only return accounts with these Nooks IDs, comma-separated. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `filter_name` (`string`, optional): Only return the account with this exact name. Example: Acme Inc.
- `include_crm_custom_fields` (`boolean`, optional): Set to true to add each record's CRM custom fields as crmCustomFields, keyed by CRM field name (for example {"hs_lead_status": "OPEN"}).
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of accounts to return per page (1 to 100). Defaults to 50.
- `updated_after` (`string`, optional): Only return accounts updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return accounts updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_call_dispositions_list`

List Call Dispositions · Read-only

List the call dispositions (call outcomes) configured in the Nooks workspace.
Returns up to 100 dispositions per page with id and name, plus a links.next cursor.
Use nooksapikey_call_dispositions_list to get disposition IDs for filtering nooksapikey_calls_list.

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

Inputs:

- `filter_name` (`string`, optional): Only return the disposition with this exact name. Example: Meeting Booked.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of dispositions to return per page (1 to 100). Defaults to 50.

Example input: `{}`

### `nooksapikey_call_get`

Get Call · Read-only

Get one Nooks call by its ID.
Returns the call's time, duration, direction, disposition, notes, prospect, and owner, optionally with those related records embedded.
Use nooksapikey_call_get when you have the call ID. Use nooksapikey_calls_list to find calls.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the call. Get it from nooksapikey_calls_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: prospect, sequence, sequenceStep, callDisposition, owner. Example: prospect,sequence.

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

### `nooksapikey_calls_list`

List Calls · Read-only

List calls made in Nooks, filtered by call time, ingestion time, prospect, account, disposition, or caller.
Returns up to 100 calls per page with time, duration, direction, disposition, prospect, and owner, plus a links.next cursor.
Use nooksapikey_calls_list to find calls. Use nooksapikey_call_get for one call by ID.

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

Inputs:

- `account_id` (`string`, optional): Only return calls linked to this account. Use the account's Nooks ID (UUID) from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `created_after` (`string`, optional): Only return calls ingested into Nooks at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `created_before` (`string`, optional): Only return calls ingested into Nooks at or before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.
- `disposition_id` (`string`, optional): Only return calls logged with this disposition. Use the disposition's Nooks ID (UUID) from nooksapikey_call_dispositions_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `filter_ids` (`string`, optional): Only return calls with these Nooks IDs, comma-separated. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: prospect, sequence, sequenceStep, callDisposition, owner. Example: prospect,sequence.
- `owner_id` (`string`, optional): Only return calls placed by this user. Use the user's Nooks ID from nooksapikey_users_list or nooksapikey_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of calls to return per page (1 to 100). Defaults to 50.
- `prospect_id` (`string`, optional): Only return calls with this prospect. Use the prospect's Nooks ID (UUID) from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `time_after` (`string`, optional): Only return calls that happened at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `time_before` (`string`, optional): Only return calls that happened at or before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.
- `updated_after` (`string`, optional): Only return calls updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return calls updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_email_get`

Get Email · Read-only

Get one Nooks email by its ID, including unsent drafts and queued sends.
Returns the email's subject, body, status, recipients, and related prospect, task, and sequence.
Use nooksapikey_email_get when you have the email ID. Use nooksapikey_emails_list to find sent emails.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the email. Get it from nooksapikey_emails_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: prospect, task, sequence, sequenceStep. Example: prospect,task.

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

### `nooksapikey_emails_list`

List Emails · Read-only

List sent and in-flight emails in Nooks, filtered by IDs, prospect, task, account, status, or update time.
Returns up to 100 emails per page with subject, status, recipients, and related prospect and sequence, plus a links.next cursor. Unsent drafts are not listed.
Use nooksapikey_emails_list to review outreach. Use nooksapikey_email_get for one email, including drafts.

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

Inputs:

- `account_id` (`string`, optional): Only return emails to prospects at this account. Use the account's Nooks ID (UUID) from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `filter_ids` (`string`, optional): Only return emails with these Nooks IDs, comma-separated. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: prospect, task, sequence, sequenceStep. Example: prospect,task.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of emails to return per page (1 to 100). Defaults to 50.
- `prospect_id` (`string`, optional): Only return emails to this prospect. Use the prospect's Nooks ID (UUID) from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `status` (`string`, optional): Only return emails with these delivery statuses. Pass one or more of these values, comma-separated: draft, in_progress, sent, failed. Example: sent.
- `task_id` (`string`, optional): Only return emails sent for this sequence task. Use the task's Nooks ID (UUID) from nooksapikey_tasks_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `updated_after` (`string`, optional): Only return emails updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return emails updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_me_get`

Get Current User · Read-only

Get the Nooks workspace and user behind the current credential.
Returns workspaceId, userId, email, name, and, for OAuth tokens, the client ID and granted scopes.
Use nooksapikey_me_get to check the connection and to get your own user ID for owner fields.

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

Inputs: none.

Example input: `{}`

### `nooksapikey_prospect_get`

Get Prospect · Read-only

Get one Nooks prospect by its ID.
Returns the prospect's name, title, emails, phones, account reference, owner, and optionally its enrollments and CRM custom fields.
Use nooksapikey_prospect_get when you have the ID. Use nooksapikey_prospects_list to search by email, name, or CRM ID.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: sequenceStates. Example: sequenceStates.
- `include_crm_custom_fields` (`boolean`, optional): Set to true to add each record's CRM custom fields as crmCustomFields, keyed by CRM field name (for example {"hs_lead_status": "OPEN"}).

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

### `nooksapikey_prospects_list`

List Prospects · Read-only

List prospects in Nooks, filtered by IDs, exact name or title, email, CRM ID, sequence, account, or update time.
Returns up to 100 prospects per page with contact details, account reference, and owner, plus a links.next cursor.
Use nooksapikey_prospects_list to find prospects. Use nooksapikey_prospect_get when you already have the prospect ID.

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

Inputs:

- `account_id` (`string`, optional): Only return prospects at this account. Use the account's Nooks ID (UUID) from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `filter_crm_id` (`string`, optional): Only return the prospect with this ID in your CRM. Example: 0035g00000XyZabAAB.
- `filter_emails` (`string`, optional): Only return prospects whose primary email is one of these addresses, comma-separated (up to 10). Example: jane@acme.com,john@acme.com.
- `filter_ids` (`string`, optional): Only return prospects with these Nooks IDs, comma-separated. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `filter_name` (`string`, optional): Only return prospects with this exact full name. Example: Jane Doe.
- `filter_title` (`string`, optional): Only return prospects with this exact job title. Example: VP of Sales.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: sequenceStates. Example: sequenceStates.
- `include_crm_custom_fields` (`boolean`, optional): Set to true to add each record's CRM custom fields as crmCustomFields, keyed by CRM field name (for example {"hs_lead_status": "OPEN"}).
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of prospects to return per page (1 to 100). Defaults to 50.
- `sequence_id` (`string`, optional): Only return prospects enrolled in this sequence. Use the sequence's Nooks ID (UUID) from nooksapikey_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `updated_after` (`string`, optional): Only return prospects updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return prospects updated at or before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_sequence_get`

Get Sequence · Read-only

Get one Nooks sequence by its ID.
Returns the sequence's name, type, privacy, and owner, and optionally its owner record and steps.
Use nooksapikey_sequence_get to inspect a sequence before enrolling prospects. Use nooksapikey_sequences_list to find one.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the sequence. Get it from nooksapikey_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: owner, sequenceSteps. Example: owner,sequenceSteps.

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

### `nooksapikey_sequence_states_list`

List Sequence Enrollments · Read-only

List sequence enrollments (sequence states) in Nooks, filtered by sequence, prospect, account, or state.
Returns up to 100 enrollments per page with state, current step, sequence, and prospect, plus a links.next cursor.
Use nooksapikey_sequence_states_list to see who is enrolled where. Use nooksapikey_sequence_state_create to enroll a prospect.

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

Inputs:

- `account_id` (`string`, optional): Only return enrollments of prospects at this account. Use the account's Nooks ID (UUID) from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: sequence, prospect, creator, sequenceStep. Example: sequence,prospect.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of enrollments to return per page (1 to 100). Defaults to 50.
- `prospect_id` (`string`, optional): Only return enrollments of this prospect. Use the prospect's Nooks ID (UUID) from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `sequence_id` (`string`, optional): Only return enrollments in this sequence. Use the sequence's Nooks ID (UUID) from nooksapikey_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `state` (`string`, optional): Only return enrollments in these states. Pass one or more of these values, comma-separated: active, paused, finished, pending_start. Example: active,paused.
- `updated_after` (`string`, optional): Only return enrollments updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return enrollments updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_sequences_list`

List Sequences · Read-only

List outreach sequences in Nooks, optionally filtered by exact name, type, or last-updated time.
Returns up to 100 sequences per page with id, name, type, privacy, and owner, plus a links.next cursor.
Use nooksapikey_sequences_list to find a sequence ID. Use nooksapikey_sequence_get for one sequence and its steps.

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

Inputs:

- `filter_name` (`string`, optional): Only return the sequence with this exact name. Example: Q3 Outbound.
- `filter_type` (`string`, optional): Only return sequences of this type: date (steps run on fixed dates) or interval (steps run a set number of days apart). One of: `date`, `interval`.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: owner, sequenceSteps. Example: owner,sequenceSteps.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of sequences to return per page (1 to 100). Defaults to 50.
- `updated_after` (`string`, optional): Only return sequences updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return sequences updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_task_get`

Get Task · Read-only

Get one Nooks task by its ID.
Returns the task's action, status, priority, due date, note, prospect, owner, and sequence context.
Use nooksapikey_task_get when you have the task ID. Use nooksapikey_tasks_list to find tasks.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the task. Get it from nooksapikey_tasks_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: owner, prospect, sequence, sequenceState, sequenceStep. Example: owner,prospect.

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

### `nooksapikey_tasks_list`

List Tasks · Read-only

List outreach tasks in Nooks, filtered by sequence, step, prospect, account, owner, action, status, priority, due date, or completion.
Returns up to 100 tasks per page with action, status, priority, due date, prospect, and owner, plus a links.next cursor.
Use nooksapikey_tasks_list to build a rep's to-do list. Use nooksapikey_task_get for one task by ID.

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

Inputs:

- `account_id` (`string`, optional): Only return tasks for prospects at this account. Use the account's Nooks ID (UUID) from nooksapikey_accounts_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `action` (`string`, optional): Only return tasks of these action types. Pass one or more of these values, comma-separated: call, manual_email, auto_email, manual_email_reply, auto_email_reply, basic_task, linkedin_connection_request, manual_linkedin_connection_request, manual_linkedin_message, automatic_linkedin_message, manual_sms, auto_sms. Example: call,manual_email.
- `completed` (`boolean`, optional): Set to true for completed tasks only, or false for open tasks only.
- `due_after` (`string`, optional): Only return tasks due at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `due_before` (`string`, optional): Only return tasks due at or before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.
- `enrollment_state` (`string`, optional): Only return tasks whose sequence enrollment is in these states. Use null for one-off tasks that are not part of a sequence. Pass one or more of these values, comma-separated: active, paused, finished, null. Example: active.
- `filter_ids` (`string`, optional): Only return tasks with these Nooks IDs, comma-separated. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `include` (`string`, optional): Related records to embed in the response instead of returning only their IDs (max 3). Pass one or more of these values, comma-separated: owner, prospect, sequence, sequenceState, sequenceStep. Example: owner,prospect.
- `owner_id` (`string`, optional): Only return tasks assigned to this user. Use the user's Nooks ID from nooksapikey_users_list or nooksapikey_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of tasks to return per page (1 to 100). Defaults to 50.
- `priority` (`string`, optional): Only return tasks with these priorities. Pass one or more of these values, comma-separated: low, normal, high, urgent. Example: high,urgent.
- `prospect_id` (`string`, optional): Only return tasks for this prospect. Use the prospect's Nooks ID (UUID) from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `sequence_id` (`string`, optional): Only return tasks in this sequence. Use the sequence's Nooks ID (UUID) from nooksapikey_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `sequence_step_id` (`string`, optional): Only return tasks for this sequence step. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `status` (`string`, optional): Only return tasks in these statuses. Pass one or more of these values, comma-separated: pending, ready, finished, skipped, failed. Example: ready.
- `updated_after` (`string`, optional): Only return tasks updated at or after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
- `updated_before` (`string`, optional): Only return tasks updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

### `nooksapikey_users_list`

List Users · Read-only

List users with an active seat in the Nooks workspace, optionally filtered by name, email, or CRM user ID.
Returns up to 100 users per page with id, name, email, and timestamps, plus a links.next cursor.
Use nooksapikey_users_list to find user IDs for owner fields. Use nooksapikey_me_get for the connected user.

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

Inputs:

- `filter_crm_id` (`string`, optional): Only return the Nooks user mapped to this user ID in your connected CRM, such as a Salesforce User.Id or OwnerId. Returns an empty list if no user is mapped. Example: 0055g00000AbCdEAAZ.
- `filter_email` (`string`, optional): Only return the user with this exact email address. Example: jane@company.com.
- `filter_name` (`string`, optional): Only return the user with this exact full name. Example: Jane Doe.
- `page_after` (`string`, optional): Cursor for the next page. Pass the page[after] value from the links.next URL of the previous response, unchanged. Leave empty for the first page.
- `page_size` (`integer`, optional): Number of users to return per page (1 to 100). Defaults to 50.

Example input: `{}`

### `nooksapikey_prospect_note_create`

Create Prospect Note · Write

Create a note on a CRM-backed Nooks prospect; Nooks writes it to the prospect's record in Salesforce or HubSpot.
Returns the created note.
Use nooksapikey_prospect_note_create only for prospects sourced from Salesforce or HubSpot.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `integration_type` (`string`, required): CRM the prospect comes from and where the note is created. Must match the prospect's CRM source. One of: `salesforce`, `hubspot`.
- `text` (`string`, required): Body text of the note (1 to 65535 characters). Example: Spoke with Jane, follow up next week about pricing.

Example input: `{"id":"<id>","integration_type":"salesforce","text":"<text>"}`

### `nooksapikey_sequence_state_create`

Enroll Prospect in Sequence · Write

Enroll a prospect in a Nooks sequence on behalf of a user, starting now or at a scheduled time.
Returns the new enrollment (sequence state) with its id, state, and current step.
Use nooksapikey_sequence_state_create to start outreach. Enroll into a private sequence only on behalf of its owner.
Get the prospect ID from nooksapikey_prospects_list and the sequence ID from nooksapikey_sequences_list.

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

Inputs:

- `owner_id` (`string`, required): Nooks ID of the user who owns the enrollment and sends its outreach. Get it from nooksapikey_users_list or nooksapikey_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `prospect_id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `sequence_id` (`string`, required): Nooks ID (UUID) of the sequence. Get it from nooksapikey_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `mailbox_id` (`string`, optional): ID of the mailbox to send sequence emails from. If omitted, the owner's primary mailbox is used. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `scheduled_at` (`string`, optional): When to start the sequence, with a timezone offset. If omitted, it starts immediately. Use an ISO 8601 date-time, for example 2024-06-01T09:00:00-07:00.
- `sequence_step_id` (`string`, optional): ID of the sequence step to start on. If omitted, the prospect starts on the first step. Must belong to the chosen sequence. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `state` (`string`, optional): State to create the enrollment in: active to start outreach, or paused to hold it. Defaults to active. One of: `active`, `paused`.

Example input: `{"owner_id":"<owner_id>","prospect_id":"<prospect_id>","sequence_id":"<sequence_id>"}`

### `nooksapikey_task_complete`

Complete Task · Write

Mark a Nooks task as completed. For a sequence task, this also advances the prospect to the next step.
Returns the updated task.
Use nooksapikey_task_complete after the task's call, email, or other action has been done.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the task. Get it from nooksapikey_tasks_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.

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

### `nooksapikey_task_create`

Create Task · Write

Create a one-off Nooks task (not part of a sequence) for a prospect, such as a call or manual email.
Returns the created task with its id, status, and due date. Nooks syncs it to the CRM automatically.
Use nooksapikey_task_create for ad-hoc follow-ups. Use nooksapikey_sequence_state_create to start a full sequence.

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

Inputs:

- `action` (`string`, required): Type of task to create. Example: call. One of: `call`, `manual_email`, `manual_email_reply`, `basic_task`, `linkedin_connection_request`, `manual_linkedin_connection_request`, `manual_linkedin_message`, `manual_sms`.
- `due_at` (`string`, required): When the task is due, as an ISO 8601 date-time with a timezone offset. Example: 2024-06-01T09:00:00-07:00.
- `owner_id` (`string`, required): Nooks ID of the user the task is assigned to. Get it from nooksapikey_users_list or nooksapikey_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `prospect_id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooksapikey_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `note` (`string`, optional): Instructions or context for the task. Example: Ask about Q3 budget.
- `priority` (`string`, optional): Task priority. Defaults to normal. One of: `low`, `normal`, `high`, `urgent`.

Example input: `{"action":"call","due_at":"<due_at>","owner_id":"<owner_id>","prospect_id":"<prospect_id>"}`

## Workflows

**List today's open call tasks**

  **Node.js**

  ```typescript
  const tasks = await actions.executeTool({
    connector: 'nooksapikey',
    identifier: 'user_123',
    toolName: 'nooksapikey_tasks_list',
    toolInput: {
      action: 'call',
      status: 'ready',
      due_before: '2024-06-01T23:59:59Z',
      include: 'prospect',
    },
  });
  console.log(tasks);
  ```

  **Python**

  ```python
  tasks = actions.execute_tool(
      connection_name='nooksapikey',
      identifier='user_123',
      tool_name='nooksapikey_tasks_list',
      tool_input={
          'action': 'call',
          'status': 'ready',
          'due_before': '2024-06-01T23:59:59Z',
          'include': 'prospect',
      },
  )
  print(tasks)
  ```

**Enroll a prospect in a sequence**

Find the prospect with `nooksapikey_prospects_list` (for example by `filter_emails`), the sequence with `nooksapikey_sequences_list`, and your user ID with `nooksapikey_me_get`.

  **Node.js**

  ```typescript
  const enrollment = await actions.executeTool({
    connector: 'nooksapikey',
    identifier: 'user_123',
    toolName: 'nooksapikey_sequence_state_create',
    toolInput: {
      prospect_id: '3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f',
      sequence_id: '9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d',
      owner_id: 'Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7',
    },
  });
  console.log(enrollment);
  ```

  **Python**

  ```python
  enrollment = actions.execute_tool(
      connection_name='nooksapikey',
      identifier='user_123',
      tool_name='nooksapikey_sequence_state_create',
      tool_input={
          'prospect_id': '3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f',
          'sequence_id': '9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d',
          'owner_id': 'Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7',
      },
  )
  print(enrollment)
  ```

**Page through results**

List tools return up to 100 records per page. When `links.next` is present in the response, pass its `page[after]` value as `page_after` to get the next page.

  **Node.js**

  ```typescript
  const nextPage = await actions.executeTool({
    connector: 'nooksapikey',
    identifier: 'user_123',
    toolName: 'nooksapikey_calls_list',
    toolInput: { page_size: 100, page_after: 'eyJpZCI6IjNmMmI4YzFlIn0' },
  });
  ```

  **Python**

  ```python
  next_page = actions.execute_tool(
      connection_name='nooksapikey',
      identifier='user_123',
      tool_name='nooksapikey_calls_list',
      tool_input={'page_size': 100, 'page_after': 'eyJpZCI6IjNmMmI4YzFlIn0'},
  )
  ```

## Related

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

- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools
- [Close](/agentkit/connectors/close/): Scalekit connector, OAuth, 103 tools


---

## More Scalekit documentation

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