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

The Nooks connector lets your AI agent act in each user's Nooks account. Each user signs in to Nooks once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 20 tools.

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

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

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

4. ### Register an OAuth app

   Nooks connections use your own OAuth app. Register one with Nooks and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Nooks connection.

   **Console steps with screenshots:**

   Each user signs in with their own Nooks account through OAuth 2.0. You set up one OAuth client from Nooks on your Scalekit connection. Scalekit then refreshes each user's one-hour Nooks access token for you.

   > tip: Prefer an API key?
   >
   > If you only need workspace-wide server-to-server access, the [Nooks (API Key) connector](/agentkit/connectors/nooksapikey/) skips the OAuth app setup entirely.

   1. ### Create a connection in Scalekit

       - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** > **Create Connection**. Find **Nooks** and click **Create**.

       - Copy the **Redirect URI**. It looks like:
         `https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback`

       Keep this tab open — you'll return to it in step 3.

   2. ### Get OAuth client credentials from Nooks

       Ask your Nooks account team or Nooks support for an OAuth client for the Nooks API, and send them:
         - the **Redirect URI** you copied from Scalekit
         - the scopes your agent needs, from the table below

         | Scope | Required for |
         | --- | --- |
         | `users:read` | Current user and user lookups (required) |
         | `sequences:read` | Listing and reading sequences |
         | `sequence-states:read` | Listing sequence enrollments |
         | `sequence-states:write` | Enrolling prospects in sequences |
         | `prospects:read` | Listing and reading prospects |
         | `notes:write` | Creating CRM notes on prospects |
         | `accounts:read` | Listing and reading accounts |
         | `calls:read` | Listing and reading calls |
         | `call-dispositions:read` | Listing call dispositions |
         | `emails:read` | Listing and reading emails |
         | `tasks:read` | Listing and reading tasks |
         | `tasks:write` | Creating and completing tasks |

       Nooks returns a **Client ID** and **Client Secret**. Store the secret securely.

   3. ### Add credentials in Scalekit

       - Return to [Scalekit dashboard](https://app.scalekit.com) → **AgentKit** > **Connections** and open the connection you created in step 1.

       - Enter the following:
         - **Client ID** — from Nooks
         - **Client Secret** — from Nooks
         - **Permissions** — the same scopes Nooks enabled for your client

       - Click **Save**.

5. ### 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 = 'nooks'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Nooks:', 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: 'nooks_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 = "nooks"
   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:", link_response.link)
   input("Press Enter after authorizing...")

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

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

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

**Node.js**

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

**Python**

```python
result = actions.execute_tool(
    tool_name="nooks_account_get",
    tool_input={
        "id": "<id>",
    },
    connection_name="nooks",
    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.

### `nooks_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 nooks_account_get when you have the ID. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_accounts_list to find an account. Use nooks_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: `{}`

### `nooks_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 nooks_call_dispositions_list to get disposition IDs for filtering nooks_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: `{}`

### `nooks_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 nooks_call_get when you have the call ID. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_calls_list to find calls. Use nooks_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 nooks_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 nooks_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 nooks_users_list or nooks_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 nooks_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: `{}`

### `nooks_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 nooks_email_get when you have the email ID. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_emails_list to review outreach. Use nooks_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 nooks_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 nooks_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 nooks_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: `{}`

### `nooks_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 nooks_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: `{}`

### `nooks_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 nooks_prospect_get when you have the ID. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_prospects_list to find prospects. Use nooks_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 nooks_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 nooks_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: `{}`

### `nooks_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 nooks_sequence_get to inspect a sequence before enrolling prospects. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_sequence_states_list to see who is enrolled where. Use nooks_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 nooks_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 nooks_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 nooks_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: `{}`

### `nooks_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 nooks_sequences_list to find a sequence ID. Use nooks_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: `{}`

### `nooks_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 nooks_task_get when you have the task ID. Use nooks_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 nooks_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>"}`

### `nooks_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 nooks_tasks_list to build a rep's to-do list. Use nooks_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 nooks_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 nooks_users_list or nooks_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 nooks_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 nooks_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: `{}`

### `nooks_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 nooks_users_list to find user IDs for owner fields. Use nooks_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: `{}`

### `nooks_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 nooks_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 nooks_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>"}`

### `nooks_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 nooks_sequence_state_create to start outreach. Enroll into a private sequence only on behalf of its owner.
Get the prospect ID from nooks_prospects_list and the sequence ID from nooks_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 nooks_users_list or nooks_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `prospect_id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooks_prospects_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `sequence_id` (`string`, required): Nooks ID (UUID) of the sequence. Get it from nooks_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>"}`

### `nooks_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 nooks_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 nooks_tasks_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.

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

### `nooks_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 nooks_task_create for ad-hoc follow-ups. Use nooks_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 nooks_users_list or nooks_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `prospect_id` (`string`, required): Nooks ID (UUID) of the prospect. Get it from nooks_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: 'nooks',
    identifier: 'user_123',
    toolName: 'nooks_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='nooks',
      identifier='user_123',
      tool_name='nooks_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 `nooks_prospects_list` (for example by `filter_emails`), the sequence with `nooks_sequences_list`, and your user ID with `nooks_me_get`.

  **Node.js**

  ```typescript
  const enrollment = await actions.executeTool({
    connector: 'nooks',
    identifier: 'user_123',
    toolName: 'nooks_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='nooks',
      identifier='user_123',
      tool_name='nooks_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: 'nooks',
    identifier: 'user_123',
    toolName: 'nooks_calls_list',
    toolInput: { page_size: 100, page_after: 'eyJpZCI6IjNmMmI4YzFlIn0' },
  });
  ```

  **Python**

  ```python
  next_page = actions.execute_tool(
      connection_name='nooks',
      identifier='user_123',
      tool_name='nooks_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 |
