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

---

# Connect AI agents to 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 37 tools.

**Authentication:** OAuth 2.0
**Categories:** CRM & Sales, Communication, Automation
**Tools:** 37: 24 read, 12 write, 1 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_email_template_get`

Get Email Template · Read-only

Get one Nooks email template by its ID, including a template attached to a sequence step.
Returns the template's name, subject, HTML body, owner, privacy, and archived flag.
Use nooks_email_template_get to read a template's content. Use nooks_email_templates_list to browse templates; a step's template ID is on the step from nooks_sequence_step_get.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the email template. Get it from nooks_email_templates_list or a sequence step's template reference. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.

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

### `nooks_email_templates_list`

List Email Templates · Read-only

List email templates from the Nooks Templates page, optionally filtered by owner, archived state, or last-updated time. There is no name search.
Returns up to 100 templates per page with id, name, full subject and HTML body, owner, and privacy, plus a links.next cursor.
Use nooks_email_templates_list to browse saved templates. Use nooks_email_template_get for one template, including the copy attached to a sequence step.

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

Inputs:

- `archived` (`string`, optional): Set to true to return only archived templates, or false for only active ones. Defaults to false. One of: `true`, `false`.
- `owner_id` (`string`, optional): Only return templates owned 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 templates to return per page (1 to 100). Defaults to 50.
- `updated_after` (`string`, optional): Only return templates 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 templates updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.

Example input: `{}`

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

Get Mailbox · Read-only

Get one connected Nooks mailbox (sending email alias) by its ID.
Returns the mailbox's email address, default flag, and user, and optionally the full user record.
Use nooks_mailbox_get to check a known mailbox. Use nooks_mailboxes_list to find mailbox IDs.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the mailbox. Get it from nooks_mailboxes_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: user. Example: user.

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

### `nooks_mailboxes_list`

List Mailboxes · Read-only

List connected mailboxes (sending email aliases) in Nooks, optionally filtered to one user or by last-updated time.
Returns up to 100 mailboxes per page with id, email address, default flag, and user, plus a links.next cursor.
Use nooks_mailboxes_list to find a user's sending address or a mailbox ID for nooks_sequence_state_create. Use nooks_mailbox_get for one mailbox.

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

Inputs:

- `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: user. Example: user.
- `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 mailboxes to return per page (1 to 100). Defaults to 50.
- `updated_after` (`string`, optional): Only return mailboxes 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 mailboxes updated before this time. Use an ISO 8601 date-time, for example 2024-12-31T23:59:59Z.
- `user_id` (`string`, optional): Only return mailboxes that belong to this user. Use the user's Nooks ID from nooks_users_list or nooks_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.

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_sequence_step_get`

Get Sequence Step · Read-only

Get one Nooks sequence step by its ID.
Returns the step's order, action, interval in minutes, name, note, A/B-variant flag, and template reference, and optionally the full sequence and email template.
Use nooks_sequence_step_get to inspect a step before editing it. Use nooks_sequence_steps_list to find step IDs.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the sequence step. Get it from nooks_sequence_steps_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, template. Example: template.

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

### `nooks_sequence_steps_list`

List Sequence Steps · Read-only

List steps of Nooks sequences, optionally filtered to one sequence, specific step IDs, or last-updated time.
Returns up to 100 steps per page with id, order, action, interval in minutes, name, note, and template reference, plus a links.next cursor; steps come back in sequence order.
Use nooks_sequence_steps_list to see a sequence's steps or collect step IDs for nooks_sequence_steps_reorder. Use nooks_sequence_step_get for one step.

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

Inputs:

- `filter_ids` (`string`, optional): Only return steps with these Nooks IDs, comma-separated UUIDs. 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, template. Example: template.
- `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 steps to return per page (1 to 100). Defaults to 50.
- `sequence_id` (`string`, optional): Only return steps 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 steps 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 steps 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_tag_get`

Get Tag · Read-only

Get one Nooks tag by its ID.
Returns the tag's id, name, and timestamps.
Use nooks_tag_get to look up a tag ID you already have. Use nooks_tags_list to find a tag by name.

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

Inputs:

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

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

### `nooks_tags_list`

List Tags · Read-only

List every tag in the Nooks workspace, or look one up by exact name (case-insensitive).
Returns up to 100 tags per page with id, name, and timestamps, plus a links.next cursor; a name filter returns at most one tag.
Use nooks_tags_list to resolve a tag name to its ID for nooks_sequence_create or nooks_sequence_update. Use nooks_tag_create to make a tag.

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

Inputs:

- `filter_name` (`string`, optional): Only return the tag with exactly this name, compared case-insensitively. Example: cold.
- `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 tags to return per page (1 to 100). Defaults to 50.

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_email_create`

Create Email · Write

Create a one-off email to a Nooks prospect on behalf of a user, as a draft or sent immediately through the user's connected mailbox when send is true.
Returns the email with its id, status (draft, in_progress, or sent), sender, recipients, and the manual_email task Nooks created for it.
Use nooks_email_create for an ad-hoc email outside a sequence. Use nooks_sequence_state_create to send a sequence's emails.
Get the prospect ID from nooks_prospects_list and the owner's user ID from nooks_users_list or nooks_me_get.

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

Inputs:

- `body_html` (`string`, required): Email body as HTML. Example: Hi Jane, ...
.
- `owner_id` (`string`, required): Nooks ID of the user the email is created for and, when send is true, sent from. Users with the user role can only act for themselves. 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.
- `subject` (`string`, required): Email subject, 1 to 998 characters. Example: Quick question.
- `bcc` (`array`, optional): BCC addresses, up to 10. Example: ["crm-bcc@company.com"].
- `cc` (`array`, optional): CC addresses, up to 10. Example: ["manager@acme.com"].
- `from_email` (`string`, optional): Sending address. Must be one of the owner's mailbox aliases; defaults to the owner's default alias. Get aliases from nooks_mailboxes_list. Example: rep@company.com.
- `recipients` (`array`, optional): To addresses, up to 10. Defaults to the prospect's primary email; required when the prospect has no primary email. Example: ["jane@acme.com"].
- `send` (`boolean`, optional): Set to true to send the email right away through the owner's mailbox, or false to leave it as a draft the owner can review in Nooks. Defaults to false. The draft is created before sending, so if a send is rejected the draft and its task already exist; fix and send it from Nooks instead of calling this again, which would create a second draft.

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

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

Sync Prospects from CRM · Write

Sync up to 100 Salesforce or HubSpot records into Nooks prospects by CRM record ID, creating prospects that do not exist yet.
Returns per-record results (externalId, Nooks prospectId, and whether it was created) and per-record errors.
Use nooks_prospects_sync to pull CRM contacts or leads into Nooks or refresh them from the CRM. Use nooks_prospects_list to find prospects already in Nooks.

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

Inputs:

- `integration_type` (`string`, required): CRM to sync from. The workspace must have this CRM connected. One of: `salesforce`, `hubspot`.
- `records` (`array`, required): CRM record IDs to sync, 1 to 100: Salesforce Contact or Lead IDs, or HubSpot contact IDs. Example: ["003ABC123DEF456", "003XYZ789GHI012"].

Example input: `{"integration_type":"salesforce","records":["003ABC123DEF456","003XYZ789GHI012"]}`

### `nooks_sequence_create`

Create Sequence · Write

Create a new, empty Nooks sequence owned by a user, with optional type, privacy, archived state, and tags.
Returns the created sequence with its id, name, type, privacy, owner, and tags.
Use nooks_sequence_create to start a new sequence, then add steps with nooks_sequence_step_create and enroll prospects with nooks_sequence_state_create.
Get the owner's user ID from nooks_users_list or nooks_me_get.

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

Inputs:

- `name` (`string`, required): Name of the sequence. Example: Q3 Outbound Campaign.
- `owner_id` (`string`, required): Nooks ID of the user who will own the sequence. Users with the user role can only create sequences they own; admins and managers can pick any workspace user. Get it from nooks_users_list or nooks_me_get. Example: Xk3pQ9rT2vLmN8sA1bC4dE5fG6h7.
- `enabled` (`boolean`, optional): Whether the sequence is active. false creates it archived. Defaults to true.
- `privacy` (`string`, optional): Who can see and edit the sequence. Defaults to team_editable. Example: team_editable. One of: `private`, `team_visible`, `team_editable`.
- `tag_ids` (`array`, optional): Tag IDs (UUIDs) to attach to the new sequence, up to 200. Get or create tag IDs with nooks_tags_list or nooks_tag_create; an unknown ID is rejected. Example: ["770e8400-e29b-41d4-a716-446655440010"].
- `type` (`string`, optional): Scheduling model. interval spaces each step relative to the previous one; date runs steps on fixed dates. Defaults to interval. Example: interval. One of: `interval`, `date`.

Example input: `{"name":"<name>","owner_id":"<owner_id>"}`

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

Create Sequence Step · Write

Add an interval-based step (call, email, task, LinkedIn, SMS, or WhatsApp) to a Nooks sequence, with optional email content or AI email settings.
Returns the created step with its id, order, action, interval, and template reference.
Use nooks_sequence_step_create to build out a sequence. Use nooks_sequence_step_update to change an existing step.
Get the sequence ID from nooks_sequences_list or nooks_sequence_create.

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

Inputs:

- `action` (`string`, required): What the step does. automatic_linkedin_message and manual_linkedin_connection_request cannot be created here; use manual_linkedin_message instead. Only one linkedin_connection_request step is allowed per sequence. Example: call. One of: `call`, `manual_email`, `auto_email`, `manual_email_reply`, `auto_email_reply`, `basic_task`, `linkedin_connection_request`, `manual_linkedin_message`, `manual_sms`, `auto_sms`, `manual_whatsapp`.
- `interval` (`integer`, required): Minutes to wait after the previous step before this step runs. The unit is minutes, so 1440 is one day. Example: 1440.
- `sequence_id` (`string`, required): Nooks ID (UUID) of the sequence. Get it from nooks_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `ai_email_agent_id` (`string`, optional): ID (UUID) of an existing Nooks AI Studio email agent that drafts this step's emails. Only valid on manual_email and manual_email_reply steps. Set this or ai_email_prompt_override, not both, and not together with email_subject or email_body. Agent IDs are not available through the API; copy one from the Nooks app. Example: cc0e8400-e29b-41d4-a716-446655440090.
- `ai_email_prompt_override` (`string`, optional): Freeform prompt that creates a one-off AI email agent to draft this step's emails. Only valid on manual_email and manual_email_reply steps. Set this or ai_email_agent_id, not both, and not together with email_subject or email_body. Example: Reference their recent funding round and keep it under 80 words.
- `email_body` (`string`, optional): Email body as HTML. Only valid on email actions (manual_email, auto_email, manual_email_reply, auto_email_reply). Do not combine with the AI email fields. Example: Hi {{firstName}},
.
- `email_subject` (`string`, optional): Email subject for the step. Only valid on email actions (manual_email, auto_email, manual_email_reply, auto_email_reply); any other action is rejected. Reply steps always get an empty subject. An auto_email step that starts a new thread needs a subject. Do not combine with the AI email fields. Example: Quick question about {{company}}.
- `name` (`string`, optional): Display name for the step, up to 100 characters. Example: Follow-up call.
- `note` (`string`, optional): Note or instructions shown to the rep for this step. Example: Mention the pricing page.
- `order` (`integer`, optional): Zero-based position of the step in the sequence. Leave empty to add the step at the end. Example: 2.

Example input: `{"action":"call","interval":1440,"sequence_id":"<sequence_id>"}`

### `nooks_sequence_step_update`

Update Sequence Step · Write

Update a Nooks sequence step's action, interval, name, note, email content, or AI email settings; provide at least one field.
Returns the updated step. Attaching an AI email agent to a live step regenerates unedited drafts for its open tasks right away.
Use nooks_sequence_step_update to edit a step. Use nooks_sequence_steps_reorder to move it.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the sequence step. Get it from nooks_sequence_steps_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `action` (`string`, optional): New step type. Must stay in the same channel as the current action (for example call cannot become manual_email); to switch channels, delete the step and create a new one. automatic_linkedin_message is rejected. Leave empty to keep the current action. Example: auto_email. One of: `call`, `manual_email`, `auto_email`, `manual_email_reply`, `auto_email_reply`, `basic_task`, `linkedin_connection_request`, `manual_linkedin_connection_request`, `manual_linkedin_message`, `manual_sms`, `auto_sms`, `manual_whatsapp`.
- `ai_email_agent_id` (`string`, optional): ID (UUID) of an existing Nooks AI Studio email agent that drafts this step's emails. Only valid on manual_email and manual_email_reply steps. Set this or ai_email_prompt_override, not both, and not together with email_subject or email_body. Agent IDs are not available through the API; copy one from the Nooks app. Example: cc0e8400-e29b-41d4-a716-446655440090.
- `ai_email_prompt_override` (`string`, optional): Freeform prompt that creates a one-off AI email agent to draft this step's emails. Only valid on manual_email and manual_email_reply steps. Set this or ai_email_agent_id, not both, and not together with email_subject or email_body. Example: Reference their recent funding round and keep it under 80 words.
- `email_body` (`string`, optional): Email body as HTML. Only valid on email actions (manual_email, auto_email, manual_email_reply, auto_email_reply). Do not combine with the AI email fields. Example: Hi {{firstName}},
.
- `email_subject` (`string`, optional): Email subject for the step. Only valid on email actions (manual_email, auto_email, manual_email_reply, auto_email_reply); any other action is rejected. Reply steps always get an empty subject. An auto_email step that starts a new thread needs a subject. Do not combine with the AI email fields. Example: Quick question about {{company}}.
- `interval` (`integer`, optional): New number of minutes to wait after the previous step before this step runs. The unit is minutes, so 1440 is one day. Example: 1440. Leave empty to keep the current value.
- `name` (`string`, optional): Display name for the step, up to 100 characters. Example: Follow-up call. Leave empty to keep the current value.
- `note` (`string`, optional): Note or instructions shown to the rep for this step. Example: Mention the pricing page. Leave empty to keep the current value.

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

### `nooks_sequence_steps_reorder`

Reorder Sequence Steps · Write

Reorder all steps of a Nooks sequence to match a complete, ordered list of its step IDs.
Returns the reordered steps in the new order.
Use nooks_sequence_steps_reorder to move steps. Use nooks_sequence_step_update to edit a step's content.
Get the current step IDs in order from nooks_sequence_steps_list filtered by sequence_id first.

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

Inputs:

- `id` (`string`, required): Nooks ID (UUID) of the sequence. Get it from nooks_sequences_list. Example: 3f2b8c1e-4d5a-4b6c-9e7f-1a2b3c4d5e6f.
- `step_ids` (`array`, required): Every step ID (UUID) in the sequence, in the new order. The list must contain each current step exactly once; a partial list, a duplicate, or a step from another sequence is rejected. Example: ["aa0e8400-e29b-41d4-a716-446655440031", "aa0e8400-e29b-41d4-a716-446655440030"].

Example input: `{"id":"<id>","step_ids":["aa0e8400-e29b-41d4-a716-446655440031","aa0e8400-e29b-41d4-a716-446655440030"]}`

### `nooks_sequence_update`

Update Sequence · Write

Rename a Nooks sequence, archive or reactivate it, or replace its tags; provide at least one field.
Returns the updated sequence with its id, name, enabled flag, privacy, owner, and tags.
Use nooks_sequence_update to change sequence settings. Use nooks_sequence_step_update to change its steps.

Read only: no. 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.
- `enabled` (`boolean`, optional): Set to false to archive the sequence or true to reactivate it. Leave empty to keep the current state.
- `name` (`string`, optional): New name for the sequence. Leave empty to keep the current name. Example: Q3 Outbound Campaign (paused).
- `tag_ids` (`array`, optional): Replaces the sequence's tags with exactly this list of tag IDs (UUIDs). Send the complete list: any tag left out is removed, and an empty list [] removes every tag. Leave empty to keep the current tags. Read the current tags with nooks_sequence_get first. Get or create tag IDs with nooks_tags_list or nooks_tag_create. Example: ["770e8400-e29b-41d4-a716-446655440010"].

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

### `nooks_tag_create`

Create Tag · Write

Create a tag in the Nooks workspace. If a tag with the same name already exists (any casing), Nooks returns that tag instead of creating a duplicate.
Returns the new or existing tag with its id and name.
Use nooks_tag_create to get a tag ID to apply with nooks_sequence_create or nooks_sequence_update. Use nooks_tags_list to look up existing tags.

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

Inputs:

- `name` (`string`, required): Tag name, 1 to 255 characters. Leading and trailing spaces are trimmed. Example: cold.

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

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

### `nooks_sequence_step_delete`

Delete Sequence Step · Destructive

Permanently delete a step from a Nooks sequence. Nooks handles in-flight tasks on the step and moves affected enrollments forward.
Returns no content on success.
Use nooks_sequence_step_delete to remove a step or to change a step's channel (delete, then nooks_sequence_step_create). Use nooks_sequence_step_update to edit a step in place.

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

Inputs:

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

Example input: `{"id":"<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 103](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

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