Skip to main content
These connectors reach SaaS applications through their own APIs and present them to the agent as tables. The agent writes queries in each platform’s native language — SOQL for Salesforce, SuiteQL for NetSuite, a Table API query spec for ServiceNow, HogQL for PostHog — and Bag of words handles discovery, paging and row limits.

Salesforce

Bag of words enumerates the org’s queryable objects — standard and custom __c — filtering out system and plumbing objects (sharing rows, field history, change events, Chatter feeds). Reference fields become foreign keys. Discovery is capped at 500 objects, with common CRM objects (Account, Contact, Lead, Opportunity, Case, and so on) prioritized so they always survive the cap. A single query returns at most 10,000 rows.

Before you start (JWT bearer)

The recommended path is a Connected App using the OAuth 2.0 JWT bearer flow: a certificate signs a short-lived assertion that is exchanged for an access token. No interactive login, no stored password.
1

Generate a key pair

Create an RSA private key and a matching X.509 certificate. Keep the private key (PEM) — you will paste it into Bag of words.
2

Create the Connected App

In Salesforce Setup → App Manager → New Connected App, enable OAuth settings, tick Use digital signatures, and upload the certificate.
3

Copy the Consumer Key

From the Connected App’s detail page, copy the Consumer Key — this is the OAuth client_id.
4

Pre-authorize the service account user

Set the Connected App’s OAuth policy to Admin approved users are pre-authorized, then grant the profile or permission set of the Salesforce user Bag of words will authenticate as.
The JWT flow fails if the app is not admin pre-authorized for that specific user. This is the most common cause of an authentication error on first connect.

Fields

Authentication modes

Both modes are system-scope — one shared credential for the whole connection. Connected App (JWT Bearer) — jwt (the default) Username / Password — userpass (legacy SOAP login)

NetSuite

Bag of words queries NetSuite with SuiteQL over the REST API (https://<account>.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql), signing each request with OAuth 1.0a HMAC-SHA256 — NetSuite’s Token-Based Authentication (TBA). Results are paged automatically.

Before you start

1

Enable the features

In NetSuite Setup → Company → Enable Features → SuiteCloud, enable REST Web Services and Token-Based Authentication.
2

Create an integration record

Setup → Integration → Manage Integrations → New. Enable Token-Based Authentication. On save, NetSuite shows the Consumer Key and Consumer Secret once — copy both.
3

Create an access token

Setup → Users/Roles → Access Tokens → New, choosing the integration record, the user, and a role with permission to run SuiteQL against the records you want. NetSuite shows the Token ID and Token Secret once — copy both.
The consumer secret and token secret are displayed exactly once. If you lose them you must create a new integration record or access token.

Fields

Authentication

Token-Based Auth — token (system scope, the only mode)

ServiceNow

The ServiceNow connector is in beta.
Bag of words queries the ServiceNow Table API (/api/now/table/{table}). Schema discovery reads ServiceNow’s own metadata tables in bulk — sys_db_object for tables and inheritance, sys_dictionary for fields — so a full snapshot takes a handful of requests rather than one per table. Reference fields become foreign keys.

Fields

Authentication modes

Username / Password — userpass (scopes: system and user) Sign in with ServiceNow — oauth (scope: user, no fields). Each user signs in against the instance’s own endpoints (/oauth_auth.do, /oauth_token.do) with the useraccount scope, so queries run with that person’s own ServiceNow permissions. This requires the oauth_client_id above to be configured on the connection.
Per-user authentication on a database-style connection requires an Enterprise license. See Authentication and access.
Register the OAuth app’s redirect URI in ServiceNow as:

PostHog

The PostHog connector is in beta.
Bag of words queries PostHog with HogQL against a fixed catalog that mirrors PostHog’s data model — events, persons, sessions, and related tables — rather than introspecting the instance.

Fields

Authentication

Personal API Key — api_key (scopes: system and user) Because this mode is available at user scope as well as system scope, each user can supply their own personal API key instead of sharing the admin’s. Per-user credentials on a database-style connection require an Enterprise license — see Authentication and access.