- Brand
- Clearskies
- Category
- Sales & CRM
- Primary Subcategory
- B2B Sales CRM Platforms
Integration details
Description
Clearskies is the context layer for revenue AI. One connection turns your CRM, calls, email, calendar, Slack, and support tickets into a single, always-current picture of every account, so ChatGPT works across complete records instead of rebuilding context and guessing what matters. Get deep analysis like win/loss and rep performance, and run workflows like pre-call prep, CRM hygiene, and deal risk. Context assembled once is context every team, tool, and agent can reuse, and it improves as your data grows.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- B2B Sales CRM Platforms
- Secondary Subcategories
- None listed
- Brand
- Clearskies
- Access
- Account required
- First tracked
- 2026-07-29
- Tool count
- 72
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Agent DiscoverabilityChatGPT Discoverability ScoreUpdated dailyThe first to track the ChatGPT, Claude, Muse, Grok & Google ecosystems, with the largest database on the core platforms. Tracked daily since .
0/100
Invisible#23of 73
in B2B Sales CRM Platforms- Picked
- 0.0/100
- Found
- 0.0/100
- Positioned
- –/100
Category leaderboard
B2B Sales CRM Platforms
- 1H
HubSpot71
- 2A
Attio39
- 3C
Close32
- 4Z
Zoho CRM11
- 23C
Clearskies0
Get alerts for Clearskies
Get updates when Clearskies’s Discoverability Score or category rank changes.
Competing in ChatGPT B2B Sales CRM Platforms
View Category72 tools agents can invoke
Count, sum, average, min and max over deals, opportunities, pipeline, accounts, customers, contacts, calls or any custom object. Answers how many, how much, total, average, biggest and smallest, broken down by stage, owner, rep, month or quarter, or by which industries customers come from. Use this instead of listing records and counting the rows yourself.
records_aggregate
Build a new agent — one that writes a call recap, drafts a follow-up email, or answers in your own voice. Creates it as a draft (name, optional folderId/template/model/tools/command). Does not publish — publishing is a separate, explicit step. Returns the agent with status:'draft' and published:false.
agents_create
Make a new folder to organize agents in. Pass parentId to create it under another folder; omit parentId for a root folder.
agent_folders_create
Build a filtered list the user can open up in the app — my deals closing this quarter, accounts with no recent activity — as an ephemeral AI-owned view (filter, columns, sort) for the calling user. Associates with the current ask_ai chat when one is in context. Returns viewId and a URL the user can open. For multi-object questions, call once per objectType and return all URLs. Prefer views_update over views_create when a relevant view already exists in this chat.
views_create
Set up a new workflow or automation — for example one that runs after every customer meeting and sends a Slack summary. Saves it as a draft from a configuration (name required; optional description, configuration, folderId). A draft never runs and has no external effect; activating it is the separate workflows_publish step. Publish rules are not checked on save — call workflow_validate. Returns the workflow with status:'draft' and published:false.
workflows_create
Make a new folder to organize workflows in. Pass parentId to create it under another folder; omit parentId for a root folder.
workflow_folders_create
Deletes an agent (soft delete). Use this to clean up abandoned or never-published draft agents. Refuses to delete an agent that is still referenced by a workflow, returning the blocking workflow names so you can detach them first. Returns {id, deleted:true}.
agents_delete
Deletes an empty agent folder. Refuses folders that contain child folders or agents.
agent_folders_delete
Deletes a workflow (soft delete): removes it from every surface and, if it was published, deletes its Temporal schedule so it stops firing. Use this to clean up abandoned or never-published draft workflows. Returns {id, deleted:true}.
workflows_delete
Deletes an empty workflow folder. Refuses folders that contain child folders or workflows.
workflow_folders_delete
Revert edits to an agent and go back to the live version: discards its pending draft variant, reverting to the published configuration. The agent must be published and have a draft. The draft is deleted.
agents_discard_draft
Throw away the changes in a workflow's pending draft and go back to what is live, reverting to the published configuration. The workflow must be published and have a draft. The draft is deleted.
workflows_discard_draft
Copies an agent as a new draft (the name gets a ' (copy)' suffix). Does not publish. Returns the new agent with status:'draft' and published:false.
agents_duplicate
Copies a workflow as a new draft (the name gets a ' (copy)' suffix). The copy takes the source's latest configuration: its pending draft when one exists, otherwise the published live config. Does not publish — publishing is a separate, explicit step. Returns the new workflow with status:'draft' and published:false.
workflows_duplicate
What changed on a deal or an account, when it changed and who changed it. Answers when a close date moved or slipped, who pushed an opportunity to next quarter, who touched the amount or the stage, and what changed on a record in the last two weeks. Returns each change as {field, old→new value, when it was recorded (for imported history, when it was made in the CRM), who and which system made it}. Each change also carries sourceRecordId, the id of the CRM record whose sync produced it, absent for changes made in Clearskies and for changes recorded before it was captured; one account or deal can hold several CRM records, so two changes with different sourceRecordIds came from different CRM records. A change also carries reason when it is not an ordinary edit: primary_promoted when its previous primary record was removed and another took over, and primary_overridden when an admin chose a different primary record, both from switching which CRM record the account or deal reflects, so such a change can move many fields at once; crm_history when it was imported from the CRM's own history, in which case its time is when the edit was made in the CRM rather than when it was recorded, and it has no actor. Imported coverage differs by CRM: on Salesforce, a deal's stage, amount and close date history is complete, and other fields are covered only where field history tracking was on and only for about the last 18 months; on HubSpot, each property keeps only its last 20 changes, so a busy field's oldest values are missing and its earliest imported value may not be its original. Not every tenant has imported history, and where a record has none, its history starts when it was first tracked, and having no changes before then does not mean nothing changed. Select the records with the same inputs as deals_list/accounts_list (objectType + optional ids + optional filters from object_get_fields_schema). Only account and deal have change history; other object types are rejected. There is no cursor, each response is capped at 128 KiB and each old or new value at 2000 characters, so target the records you need with ids or filters and narrow with fieldId and from/to rather than reading broadly.
find_record_changes
What is inside one agent, such as a follow-up email agent — the instructions, template, model and tools it runs with — in its published and/or draft variant. Also returns a draftHistory summary and accepts an optional `version` to return that historical version's full content in requestedVersion.
agents_get
What an agent can do here, and the rules it has to follow in this tenant: command/shortcut constraints, the available model catalog (with allowed verbosity and reasoning effort per model), and supported tools. Call this before creating or publishing an agent.
agent_capabilities_get
Returns one agent folder by id: its name and parent. To see what is inside a named folder, pass its id as folderId to agents_list for the agents in it, or to agent_folders_list as parentId for its child folders.
agent_folders_get
Read the full contents of events you already have ids for: what people say on a call, the transcript of what was actually said in a meeting, and the full text and body of an email thread. This is the direct lookup for an event id — from a workflow trigger, events_list, events_search or scratchpad_resolve_link — so call it straight away rather than searching for the event first; events_list cannot filter by event id. Each event comes back with its type, start and end, linked entities, participants and content. For meetings, content.meeting.calls is a list — a meeting can have multiple linked recordings (retried recordings, reused calendar links, multiple recording providers); inspect each call and pick the one the user is asking about. A call carrying transcriptNote has no retrievable transcript: its text is not in this response and no other tool can fetch it, so read the note and stop searching for it.
events_get_contents
The signed-in user and the workspace this connection is logged in to: name, email, userId, personId, tenant name, optional photo URL. Answers who is logged in, whose account this is, and which workspace or tenant you are connected to right now. Use it to confirm scope before other tools. personId is the caller's identity for ownership filters; prefer the ownedByMe argument on list tools over filtering by this id manually.
identity_get
What fields are on an object type: lists all the fields, columns and properties of a deal, opportunity, account, contact, employee or custom object, with each field's label, data type, whether it is editable or read-only, and its picklist options — the possible values a field such as stage, status or type accepts — plus validFilters for the list tools. Use objectType from object_definitions_list.
object_get_fields_schema
Read the stored fields of one upstream Salesforce or HubSpot record of an account, contact or deal, such as a secondary one that the primary values do not show. Pass each sources[] entry's source, objectType and id. Use it when the primary's values are not enough, or to compare two CRMs' records of the same entity. fields are keyed '<source>.<field>' like additionalFields and hold each record's raw stored values, not labelled picklist values. Ids with no record are listed in notFound.
record_sources_get
Upcoming meetings on the calendar, scheduled within a time window — today, this afternoon, tomorrow, this week, or whatever is coming up next. Use it for the calendar and schedule ahead, the next meeting to prep for, and pre-call prep automation. Covers the whole tenant, and returns one entry per attendee who synced an invite, so a meeting several colleagues attend appears once for each of them and totalCount counts entries rather than distinct meetings. Each entry carries two ids: eventId is the Clearskies event record id — pass it to events_get_contents, and return it wherever a Clearskies event or meeting record id is required (e.g. a workflow Find Records selection); id is the calendar source row, which no other tool accepts. eventId is omitted when the event has no Clearskies record yet.
calendar_get_upcoming
What one workflow or automation does, step by step: returns its live (published) and draft configurations, clearly labeled. Also returns a draftHistory summary and accepts an optional `version` to return that historical version's full configuration in requestedVersion.
workflows_get
Documentation only: a Markdown guide to what workflows and automations can do here — which node and trigger types this workspace supports, the rules publish enforces, variable syntax, the draft-vs-published model, and worked examples. Reading it changes nothing. The write tools' input schemas already describe every node's fields; this guide adds the semantics and examples behind them.
workflow_capabilities_get
One workflow folder by id: its name and parent. To see what is in a folder, pass its id as folderId to workflows_list for the workflows in that folder, or as parentId to workflow_folders_list for its child folders.
workflow_folders_get
Get a single workflow run by id, including full per-step status, inputs, outputs, errors, and timing. Use workflow_runs_list to find run ids, then this to inspect one run in detail.
workflow_runs_get
Get a workflow test run (dry run) by its testRunId, including status and per-step results. testRunId comes from workflow_test_run_start. While the run is still pending or running the response carries retryAfterSeconds — wait that many seconds, then call this again; the field is absent once the run has finished.
workflow_test_run_get
What you can reference in a workflow's Slack message or any other field — the meeting title, the account name, a record value — as {{...}} template variables. Lists them as a compact skeleton: the trigger entity and each findRecords/createSalesforce step, each with its objectType, objectPath (e.g. find-1.records), cardinality, system fields, and inline `references` to related objects. It does NOT enumerate scalar fields — call object_get_fields_schema with a node's objectType to list them, then reference a value as {{<objectPath>.<fieldName>}} (e.g. {{find-1.records.subject}}). Each `reference` lists `subFields` that always resolve (id/name, or person identity fields) plus a `drillable` flag: when true, call object_get_fields_schema(referenceToObj) for additional fields that resolve one hop deep; when false, only `subFields` resolve. createSalesforce records carry no drillable references — their fields (including id/reference fields like OwnerId) are listed by object_get_fields_schema. Provide either an existing workflowId or an inline configuration you're drafting.
workflow_variables_get
The deals and opportunities on a specific account: what is open with them right now, what they have bought from us before, and their closed-won history. Use for questions about one company's pipeline, revenue, or deal status. Values come from each CRM's primary record, the sources[] entry with primary true; additionalFields holds those primary records' fields, keyed '<source>.<field>'. Read another synced record's fields with record_sources_get.
account_get_deals
Everyone we know at an account: the external contacts on the customer side of a specific company — who works there, who we know there, who is linked to that account. Use after an account has been identified. To find a person when you do not know which account they belong to, use contacts_list instead. Values come from each CRM's primary record, the sources[] entry with primary true; additionalFields holds those primary records' fields, keyed '<source>.<field>'. Read another synced record's fields with record_sources_get.
account_get_contacts
Customer accounts, companies and organizations stored in Clearskies. Use it when the user names a company and asks whether we have anything on them, or asks about existing accounts and customers. Search matches both account names and domain names. If searching for 'goodwaygroup.com', it will match accounts with that domain. Try partial company names if full name doesn't match. For 'my accounts' or 'accounts I own', set ownedByMe: true to scope to the current user's owned accounts (resolved server-side; do not look up an owner id). If ownedByMe returns an error, relay that message to the user and do not retry the request without ownedByMe. Values come from each CRM's primary record, the sources[] entry with primary true; additionalFields holds those primary records' fields, keyed '<source>.<field>'. Read another synced record's fields with record_sources_get.
accounts_list
Lists an agent's draft edit history, newest first: each entry has the version number, change kind, who edited it, when, and a delta of what changed from the previous version — but NOT the full content. To fetch a version's full content, call agents_get with that version number. Requires agentId; paginated with itemsPerPage and an opaque cursor.
agent_draft_history_list
How agents are organized: lists the folders they are grouped into. Omit arguments to list all folders, set rootOnly:true for root folders, or pass parentId to list direct child folders.
agent_folders_list
Lists the agents that exist here (id, name, status): which agents are published and live, and which are still drafts. Filter by status.
agents_list
Records of a custom CRM object type synced from Salesforce or HubSpot: cases, notes, subscriptions, contracts, invoices, assets, products and any other custom object. Use it for the subscription, case or note records logged against an account — pass linkedAccountIds (Clearskies account ids from accounts_list). Use object_definitions_list for objectType values. For standard objects (account, contact, deal, employee) use accounts_list, contacts_list, deals_list or employees_list instead.
crm_records_list
Which deals or accounts changed: the records whose stage, amount, close date, owner or any other tracked field changed in a time window, newest change first, each record once — including records that moved from one value to another, e.g. stage moved from Discovery to Negotiation. Returns record ids and an exact totalCount (omitted, with a warning, when counting takes too long); pass the ids to deals_list or accounts_list for the records, or to find_record_changes for what changed. Only account and deal have change history.
changed_records_list
List Slack and Microsoft Teams channels synced into Clearskies, each with the account(s) it is linked to. Use this to answer a question about a chat channel referred to by name (e.g. "what's been discussed in the deal-room channel?" or "summarize the GenePoint Teams channel"): call channels_list with the channel name in `search`, take the matching channel's `id`, then pass it to events_list as an internal.channels filter to read only that channel's threads — an account can have several channels linked (e.g. an internal channel and a Slack Connect channel), so filtering by linkedAccounts[].id returns all of them mixed together. This is the only path from a Teams channel to its content — Teams threads are not returned by events_search or by the events_list query arg, so read them with events_get_contents instead of searching. Filter by `source` ('slack' or 'ms_teams') or set `linkedOnly` to only channels tied to an account. If several channels share a name (every Teams team has a 'General'), disambiguate by teamName or linked account.
channels_list
Retrieve the people involved in a specific deal — its stakeholders — each with every source's claim about their part in it. Use when the user asks who is on a deal, who the champion, decision maker or economic buyer is, who to contact about it, or which of our own team is working it; also use it to check whether a deal has an identified buying committee at all. Returns one row per person — external contacts and internal employees alike, see `personType` — with a nested `links` array holding one entry per source that connected them to the deal. Read `links` before asserting a role: a `salesforce` or `hubspot` link is a recorded CRM fact (confidence 1.0, and on Salesforce `isPrimary` marks the primary contact role), while an `llm` link is inferred from call, email and Slack content and its `confidence` (0-1) is the model's own score. The same person often carries several links and the sources can disagree; when they do, attribute each role to its source rather than merging them. Roles are free text from each source, not a fixed vocabulary. People are ranked CRM-confirmed first, then by confidence. An empty result means no source has linked anyone to this deal — it is not evidence that the deal has no stakeholders.
deal_get_people
Deals and opportunities in the pipeline: find a named deal, a renewal or a specific opportunity, or filter down to the open deals closing this quarter. For 'the most recently updated', 'largest' or 'closing soonest' deals, set sortBy to a sortable fieldId from object_get_fields_schema (e.g. internal.updated_at, internal.amount, internal.close_date) with orderDir, and pass fieldIds for only the fields you need, rather than paging through everything. For 'my deals', 'my opps', or 'my pipeline', set ownedByMe: true to scope to the current user's owned deals (resolved server-side; do not look up an owner id). If ownedByMe returns an error, relay that message to the user and do not retry the request without ownedByMe. Values come from each CRM's primary record, the sources[] entry with primary true; additionalFields holds those primary records' fields, keyed '<source>.<field>'. Read another synced record's fields with record_sources_get.
deals_list
Our own people: employees, teammates, coworkers, colleagues, staff and sales reps who work here. Use this for who is on our team or our sales team, for someone described as one of ours or internal, and to look up a teammate's name, email address or title. Not customers, prospects, or partners — use contacts_list for those.
employees_list
Meetings, calls, emails, Slack threads and every other past activity: what has happened with an account, the meetings held last week, the activity tied to a renewal or any other deal, the most recent calls we have recordings for. Set the optional query arg for semantic search over event contents — it is ANDed with all other filters, so you can combine semantic search with exact filtering in one call rather than choosing between this and events_search. query does not search Microsoft Teams threads: to find a topic in a Teams channel, list its threads with internal.channels and read them with events_get_contents. Filter on internal.deals with a deal id from deals_list for the activity linked to a deal, on internal.channels with a channel id from channels_list for the threads of one Slack or Teams channel (each returned thread carries its channel as a chat_channel entity), set hasCall true for recorded calls across all providers, and transcriptStatus 'completed' to require a usable transcript. This tool cannot filter by Clearskies event id: if you already have one, call events_get_contents with it instead of searching here.
events_list
Find anyone outside our company: external people — customers, prospects, partners. Use this to find a person across all accounts when you don't know which account they belong to, or to check whether we have anyone with a given name or email address. Searches by name and email. Not internal employees or teammates — use employees_list for those. For 'my contacts', set ownedByMe: true to scope to the current user's owned contacts (resolved server-side; do not look up an owner id). If ownedByMe returns an error, relay that message to the user and do not retry the request without ownedByMe. Values come from each CRM's primary record, the sources[] entry with primary true; additionalFields holds those primary records' fields, keyed '<source>.<field>'. Read another synced record's fields with record_sources_get.
contacts_list
The calling user's writable Frame drives, folders and Frames, for filling in a createFrame or editFrame workflow node. Pass a drive or folder `id` with selectable:true as createFrame.folderId (defaultFolderId is the caller's private drive), and a Frame `id` as editFrame.frameId; `path` is the display label. connection.status says whether the caller has connected Frame; anything other than connected returns an empty tree.
frame_destinations_list
List GitHub activity (PRs authored/merged/closed, reviews, commits) synced from GitHub, stalest-first. Filter by assignee email (resolved to the person's linked GitHub logins) or an explicit githubLogin, kind, open-only, and updatedBefore (RFC3339) to find PRs that need attention (e.g. open with no recent activity). Returns PR state, draft status, labels, ticket codes, and the upstream last-updated time.
github_activities_list
What kinds of records exist here: every standard and custom CRM object synced from Salesforce or HubSpot — account, contact, deal, case, note, subscription and whatever else this tenant has. A Clearskies account, contact or deal can be synced from several of these records at once; its sources[] lists them. Use it to discover what is actually synced and whether a custom object exists before querying it. Each item's objectType is the value to pass to object_get_fields_schema, crm_records_list, and list-tool filters. Also returns schemaStatus.fingerprint, a content hash of the query-relevant schema for every listed object — compare it against a stored fingerprint to decide whether a cached local schema snapshot is still current — and schemaStatus.lastCheckedAt, when Clearskies last refreshed CRM schema metadata (NOT when the schema content changed, and NOT a record-sync watermark). Schema-content freshness is signalled by the fingerprint alone, not by any timestamp.
object_definitions_list
List the people in this tenant who have a Slack account, each with their Slack member id. This is the only way to obtain one, and it is what a sendSlackMessage `user` recipient takes: search by name or email, then pass the matching row's `slackUserId` (a Slack id such as "U0123456789") as the recipient's `value`. The row's `personId` is a Clearskies id and is NOT a valid recipient value — workflow_validate rejects it, and a workflow published with one fails every live run with channel_not_found. For channel recipients use channels_list and take `externalId`. Filter by `personType` ('internal', 'external', 'other').
slack_users_list
List support tickets synced from Linear or Pylon, stalest-first. Filter by assignee email, provider, open-only, and updatedBefore (RFC3339) to find tickets that need attention (e.g. unowned, stale, or not updated in N days). Returns ticket state, lifecycle type, owner, and the upstream last-updated time.
support_tickets_list
What has changed on a workflow recently: lists its draft edit history, newest first — each entry has the version number, change kind, who edited it, when, and a delta of what changed from the previous version, but NOT the full configuration. To fetch a version's full configuration, call workflows_get with that version number. Requires workflowId; paginated with itemsPerPage and an opaque cursor.
workflow_draft_history_list
How workflows are organized: lists the folders they are grouped into. Omit arguments to list all folders, set rootOnly:true for root folders, or pass parentId to list direct child folders.
workflow_folders_list
Clearskies ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Clearskies'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.
What are Clearskies alternatives on ChatGPT?
As of 2026-11-02, Clearskies competes with HubSpot, Attio, Close, Zoho CRM, 33CRM, Agiled, Alaz, Anvil CRM and 64 more in ChatGPT B2B Sales CRM Platforms, ranked by public Discoverability Score.
Where does Clearskies rank in B2B Sales CRM Platforms on ChatGPT?
As of 2026-11-02, Clearskies ranks #23 of 73 in ChatGPT B2B Sales CRM Platforms with a Discoverability Score of 0/100 (Invisible).
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.