- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Bring Nooks into ChatGPT so your revenue team can act on real execution data without pulling exports or switching tools. Query tasks, prospects, sequences, email activity, call transcripts, and rep metadata. Nooks is a revenue agent platform where AI agents and reps work in the same system, giving teams a direct line from agent activity to meetings booked, pipeline generated, and revenue closed.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-10-22
- Tool count
- 47
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Nooks
Get updates when Nooks’s Discoverability Score or category rank changes.
Competitive lineup
47 tools agents can invoke
Complete a task Marks a task as completed. This triggers CRM sync and, for sequence tasks, automatically advances the prospect to the next step in the sequence.
completeTask
Creates people in the signed-in user's CRM (Salesforce Leads or Contacts / HubSpot contacts) and in Nooks, as the user, on their own CRM connection, attached to one account: `accountId` (Nooks account id), `externalAccountId` (CRM account id), or `accountToCreate` for a company with no CRM account, whose existing account is reused when one is found and otherwise created first. People already in the CRM are matched, never duplicated. At most 25 people per call, each listed once. With `dryRun` true (the default) nothing is written: each person comes back `will_create`, `will_update` (already in the CRM, with the `changes` the write makes to the record), `matched_existing` (with `prospectId`), `refused` or `failed` (with `reason`), plus the `account` outcome for a company, and a `previewId` when there is something to write. The preview is what the user reviews before anything is written. With `dryRun: false`, the same people and account, and a `previewId` from the last 15 minutes, the people the preview marked `will_create` or `will_update` are written; each `previewId` works once, and a person added or changed since the preview is refused. Each person then comes back `created`, `updated` (its record changed as previewed) or `matched_existing` (with `prospectId` and `crmId`), `refused` or `failed` (with `reason`). Returned prospect ids are ready for sequence enrollment.
createCrmProspects
Create an email Creates a one-off email to a prospect on behalf of a workspace user (`ownerId`), and optionally sends it immediately. Nooks creates a `manual_email` task for the prospect with a draft email attached, writes the given content to the draft, and, when `send: true`, submits it through the owner's connected mailbox, applying the workspace's deliverability safeguards (unsubscribe checks, pre-bounce validation, tracking, send spacing). With `send: false` (the default) the email is left as a draft the owner can review and send from Nooks. Recipients default to the prospect's primary email; pass `recipients` to override them (required when the prospect has no primary email). The sender defaults to the owner's default mailbox alias; pass `from` to use another of the owner's aliases. Not transactional: the draft is created before the send. If a `send: true` request returns 422 for a send-time rejection, the draft email and its `manual_email` task already exist in the owner's Nooks task list. Fix and resend from Nooks rather than retrying this endpoint, which would create a second draft.
createEmail
Create a sequence Creates a new, empty sequence owned by the given user. Steps are added and edited in the Nooks app. This endpoint creates the sequence container (name, type, owner, privacy, tags). OAuth callers with the `user` role can only create sequences owned by themselves; `admin` and `manager` roles can create sequences for any user in the workspace. When that check fails (or `owner.id` is not a workspace member), OAuth callers receive `403 INSUFFICIENT_PERMISSION`; API-key callers receive `422` for an unknown owner. To enroll prospects into the new sequence, use `POST /v1/sequenceStates`.
createSequence
Enroll a prospect in a sequence Enrolls a prospect into a sequence, creating a new sequence state. When enrolling on behalf of a user, respect the sequence's `privacy` (returned by `GET /v1/sequences/{id}`): enroll into `private` sequences only on behalf of their owner.
createSequenceState
Create a task Creates a one-off task (not associated with a sequence). The task is validated and synced to CRM automatically.
createTask
Remove prospect from sequence Removes a prospect from a sequence by deleting the sequence state. This unenrolls the prospect and cancels any pending tasks.
deleteSequenceState
Delete a task Permanently deletes a task. If the task belongs to an active sequence enrollment, the sequence is automatically advanced to the next step (or finished if it was the last step) before deletion.
deleteTask
Finish a sequence state Marks a sequence state as finished (complete). This stops the prospect's progression through the sequence and performs cleanup of pending tasks. This endpoint is idempotent: returns 204 even if the sequence state is already finished.
finishSequenceState
Returns a single account by its unique identifier, regardless of source platform. Use this when you already have an account ID (e.g. from a call record) and need the full account record.
getAccount
Returns a single call by its unique identifier.
getCall
Returns a single call disposition by its unique identifier.
getCallDisposition
Returns the full transcript of a single call as speaker-labeled, timestamped turns, preceded by structured call metadata (rep, contact, duration, disposition, talk ratio). Use `listCalls` to discover call IDs. Only available for calls made by reps with an AI Coaching seat — calls made by unlicensed reps return an access-denied error. Very long transcripts are truncated, with a notice appended when that happens (`truncated: true`). Not every call has a transcript: when the recording was never transcribed, the response is `hasTranscript: false` with `transcript: null` (use `listCalls` with `filter[hasTranscript]=true` to list only calls that have one).
getCallTranscript
Returns a single Nooks Desktop meeting note by its unique identifier. Only resolves notes belonging to the calling rep's own account. Also called "Nooks notes", "desktop notes", or plain "meeting notes" — these all refer to the same Nooks Desktop meeting notes.
getDesktopNote
Get email by ID Returns a single email by its unique identifier. Unlike `GET /v1/emails`, this endpoint also returns unsent drafts and queued sends (e.g. created via `POST /v1/emails`). Those come back with `status: draft` and `type: null` until the email actually sends.
getEmail
Get email template by ID Returns the full content of a single email template by its unique identifier. Template IDs come from `GET /v1/emailTemplates` or the `template` reference on a sequence step (use `GET /v1/sequenceSteps/{id}?include=template` to inline the template DTO directly).
getEmailTemplate
Get mailbox by ID Returns a single mailbox by its unique identifier.
getMailbox
Get the authenticated principal Returns the workspace and user for the current credential. A `200` confirms the credential is valid; `401` means it's expired, revoked, or malformed. - For OAuth callers, `userId` is the end user who authorized the token (JWT `sub`). - For API-key callers, `userId` is the Nooks user who generated the key on the API Keys page in Developer Settings. - `userId` is always populated. `email` and `name` are `null` if that user no longer has a seat in the workspace. - `clientId` and `scopes` are `null` for API-key callers (API keys have full workspace access). Response is intentionally flat as an introspection endpoint and doesn't follow the nested ReferenceObject shape the resource endpoints use. Available to any authenticated caller regardless of granted scopes.
getMe
Returns a single prospect by its unique identifier
getProspect
List Nooks egress IP addresses Returns the public IPv4 addresses Nooks connects from when it calls your systems: webhook deliveries, CRM syncs, and other outbound integrations. Allowlist these if your firewall or webhook receiver restricts inbound traffic by source IP. No authentication is required. The list is refreshed daily and new addresses may be added over time, so poll this endpoint daily to keep your allowlist current. Responses are cacheable for one hour.
getPublicIpList
Get sequence by ID Returns a single sequence by its unique identifier.
getSequence
Get sequence state by ID Returns a single sequence state by its unique identifier.
getSequenceState
Get sequence step by ID Returns a single sequence step by its unique identifier.
getSequenceStep
Get task by ID Returns a single task by its unique identifier.
getTask
Returns a single Nooks native team with its full member list (userId, name, email per member). Use this to inspect team composition — e.g. which reps roll up into a team — before filtering other tools by team.
getTeam
Get user by ID Returns a single user by their unique identifier. Returns 404 if the user does not exist or does not have a seat assignment in the workspace.
getUser
Returns a paginated list of accounts (companies) in the workspace, across every source platform. Supports filtering by id, exact name (no substring match), exact domain, CRM ID, source platform, and updatedAt range. Account IDs also appear on call records (`filter[account][id]` on listCalls); use getAccount to resolve an account ID to its full record. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listAccounts
Returns a paginated list of call dispositions for the workspace. Supports filtering by id, exact name, and source. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listCallDispositions
Data-export tool: returns a paginated list of every call in the workspace. Supports filtering by id, call time, prospect, account, disposition, owner, team, and transcript availability. This is not the right tool for searching through calls or any coaching/insight related use cases. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listCalls
Returns the calling rep's own Nooks Desktop meeting notes, most recent first. With no filter, returns recent notes across all meetings. Filter by account or prospect to scope to a specific CRM record, and/or by filter[startedAt][gte]/[lte] to scope to a date range. Never returns another rep’s notes. Also called "Nooks notes", "desktop notes", or plain "meeting notes" — these all refer to the same Nooks Desktop meeting notes.
listDesktopNotes
List email templates Returns the templates on the workspace's Templates page, ordered by `id` and paginated with cursors. Each item includes the full subject and body. To fetch a single template, call `GET /v1/emailTemplate/{id}`, which uses the singular `emailTemplate`. By default the list returns only active templates. `filter[archived]=true` returns only archived ones. The list does not include the copies of a template that sequence steps make. To read one of those, call `GET /v1/sequenceSteps/{id}?include=template`. There is no name search. Narrow the list with the owner or `updatedAt` filters, or page through it. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listEmailTemplates
List emails Returns a paginated list of emails. Supports filtering by ID, prospect, task, status, and updatedAt range. Unsent drafts (e.g. created via `POST /v1/emails` with `send: false`) do not appear in this list until they are sent, including when filtering by id (`filter[id]` silently omits draft ids) or by `filter[status]=draft`. Fetch drafts by id via `GET /v1/emails/{id}`. `filter[task][id]` matches the sequence task that triggered the email. `filter[account][id]` joins through the email's prospect. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listEmails
List mailboxes Returns a paginated list of mailboxes (email aliases). Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listMailboxes
Returns a paginated list of prospects. Supports filtering by id, name, title, primary email, CRM ID, source platform (`type`), sequence enrollment, account, and updatedAt range. `crmId` is null for non-CRM prospects. When the same person exists as both a CRM-typed (`salesforce`/`hubspot`) record and an external-sequencing-platform record (outreach/salesloft/gong/apollo/groove), the CRM record is the canonical one — enrolling the other into a Nooks sequence resolves to the CRM record when it exists and is rejected when it does not. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listProspects
List sequence states Returns a paginated list of sequence states (enrollments). Supports filtering by sequence, prospect, account, and state. `filter[account][id]` joins through the prospect. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listSequenceStates
List sequence steps Returns a paginated list of sequence steps. Supports filtering by step IDs or by sequence. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listSequenceSteps
List sequences Returns a paginated list of sequences. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listSequences
List tasks Returns a paginated list of tasks. Tasks represent individual outreach activities (calls, emails, etc.) assigned to users. `filter[account][id]` joins through the task's prospect. The `updatedAt` range is half-open: `gte` is inclusive, `lt` is exclusive. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listTasks
Returns all active Nooks native teams in the workspace with their member counts. Use this to discover valid team IDs and names before filtering other tools by team — e.g. a team ID returned here can be passed to `listCalls` as filter[team][id].
listTeams
List users Returns a paginated list of users in the workspace. Only users with active seat assignments are returned. Filter by CRM id. Looks up the Nooks user mapped to the given external id in the connected CRM (e.g. a Salesforce `User.Id` / `OwnerId`). `filter[crmId]` returns an empty list if no Nooks user is mapped to that id. Pagination: start with `page[size]=25`. Only request larger pages if you actually need more — responses above that threshold can be truncated or spilled to an attached file by MCP clients. Use the `links.next` cursor (`page[after]`) to page through results instead of increasing `page[size]`.
listUsers
PREFERRED tool for finding and analyzing calls for coaching, QA, and review. Searches what was actually said: pass `transcriptQuery` to find calls containing a keyword or phrase anywhere in the transcript, and/or `speakerQuery` (optionally scoped to the `rep` or `prospect`) to find a phrase in a single speaking turn. Returns the matching calls (most recent first) with the matching transcript snippets, so you can pull up the right calls to analyze or coach on — e.g. how a rep handled an objection, talked about pricing, or ran discovery. The transcript and speaker keyword search is what sets this apart from `listCalls`, which cannot search transcript text. Transcript/speaker queries are optional, so this also serves as a fast, relevance-ranked call search even when you only filter by time, prospect, account, disposition, outcome, minimum duration, owner, or team. SCOPE: only covers calls placed by reps with an AI Coaching seat — for a complete export of every call in the workspace (including unlicensed reps), use `listCalls` instead. Results are cursor-paginated and capped at 10,000 (`totalCount` is a lower bound, shown as "N+", once that cap is reached).
searchCalls
Fuzzy-searches the calling rep's own Nooks Desktop meeting notes by title and participant/company name (not note bodies, AI summaries, or transcripts). Also returns matching People and Companies derived from the notes' attendees — each carries `noteIds` (their own notes, most recent first) and a `noteCount` total, so fetch those with getDesktopNote rather than searching again, plus a `prospectId`/`accountId` when the attendee resolved to a CRM record (usable as listDesktopNotes filter[prospect][id]/filter[account][id]). Optionally scoped to a filter[startedAt][gte]/[lte] date range — omit `q` to just list notes in that range. Never returns another rep's notes. Also called "Nooks notes", "desktop notes", or plain "meeting notes" — these all refer to the same Nooks Desktop meeting notes.
searchDesktopNotes
Skip a task Skips a task without completing the associated action. For sequence tasks, skipping advances the prospect to the next step in the sequence. The task status will be updated to `skipped`.
skipTask
Sync prospects from CRM Syncs up to 100 CRM records (Salesforce or HubSpot) into Nooks prospects by `externalId`, creating them if they don't already exist. Per-record outcomes are returned in `results` and `errors`.
syncProspects
Update a sequence Updates a sequence's name and/or `enabled` flag. Setting `enabled` to `false` archives the sequence; `true` reactivates it. At least one field must be provided. OAuth callers with the `user` role can only update sequences they own (`403 INSUFFICIENT_PERMISSION` otherwise); `admin` and `manager` roles can update any sequence in the workspace.
updateSequence
Replace an enrollment's email overrides Replaces the per-step email content overrides of a prospect that is already enrolled, using the same `emailOverrides` shape as `POST /sequenceStates`. Use this to refresh personalized content on an in-flight enrollment instead of removing and re-enrolling the prospect. **The request body is the complete set of overrides for the enrollment**, not a merge: - A step in `emailOverrides` that already has an unsent email (the current step, or a step overridden earlier) has its subject and body rewritten in place. A field you omit (`subject` or `body`) reverts to the step's template, not to the previous override; on a step with no template it keeps its current value. - A step in `emailOverrides` with no email yet gets a pending email that is used when the enrollment reaches it. - **An email step you leave out of `emailOverrides` loses any override it had**: a not-yet-reached step goes back to sending the step's template, and the current step's unsent draft is reverted to the template's content. This includes edits a user made to that draft in the Nooks Outbox. Only email steps can be overridden, and only the current step or later ones. Already-sent emails and AI-generated Play emails are never touched. The request is all-or-nothing: if any step is rejected, nothing is changed. Listing the enrollment's tasks (`GET /tasks?filter[prospect][id]=…&filter[sequence][id]=…`) shows which not-yet-reached email steps already have a `pending` task, but not why: a pending task can come from an override or from an AI-generated Play email (which this request never touches), and unsent draft content is not returned by `GET /emails` (see that endpoint). Treat this request as declaring the full desired set of overrides rather than reading the current one back first. Returns 409 if the enrollment is finished, or if the email for a step in `emailOverrides` has already been sent.
updateSequenceState
Update a task Updates one or more fields on an existing task. Only the following fields can be changed: - `dueAt` reschedules the task to a new due date and time - `ownerId` reassigns the task to a different user - `priority` changes the task priority (`low`, `normal`, `high`, `urgent`) - `note` updates the task note (set to `null` to clear) At least one field must be provided. All other task fields (action, prospect, sequence, etc.) are immutable through this endpoint.
updateTask
Nooks ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Nooks's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.