Marketing Automation
GetGist
API integration
Ship Marketing Automation features without building the integration. Full GetGist API access via Proxy and 50+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with GetGist
Common scenarios for SaaS companies building GetGist integrations for their customers.
Activate warehouse data in GetGist campaigns
Reverse ETL and CDP platforms can offer customers a native GetGist destination to sync contact attributes, tags, and product events — turning Snowflake or BigQuery data into triggers for marketing automations without custom engineering.
Power AI support agents on GetGist Inbox
AI copilots and ticket deflection tools can ingest the customer's GetGist knowledge base, monitor incoming conversations, auto-reply as a bot, and escalate to a human teammate — delivering an out-of-the-box GetGist connector to every customer.
Push qualified leads from forms and landing pages
Form builders, webinar platforms, and lead-gen tools can let users route submissions directly into GetGist contacts, forms, and campaign sequences — eliminating Zapier middleware for their customers.
Mirror conversations into CRMs and systems of record
Sales and CX platforms can sync GetGist conversations, tags, and assignments bi-directionally so reps see live chat context inside their CRM and update ticket state without leaving their workflow.
Centralize knowledge base content for docs and search tools
Documentation platforms, in-app search, and content governance tools can pull GetGist articles and collections to index, translate, or audit help content as part of a broader knowledge layer.
What You Can Build
Ship these features with Truto + GetGist
Concrete product features your team can ship faster by leveraging Truto’s GetGist integration instead of building from scratch.
Batch contact sync with status tracking
Upsert thousands of contacts asynchronously using batch endpoints and poll batch status to confirm successful ingestion into GetGist.
Event-triggered marketing automations
Stream product-led events like 'Plan Upgraded' or 'Usage Dropped' into GetGist to fire visual workflows and drip campaigns in real time.
Two-way conversation sync
List, search, reply to, assign, snooze, tag, prioritize, and close GetGist conversations from your app to keep an external inbox or CRM in lockstep.
Bot-authored replies and internal notes
Post AI-generated public replies as a bot or add internal notes on a conversation, with handoff to a human teammate when confidence is low.
Bulk tagging and segment orchestration
Apply or remove tags across up to 50 contacts per call to move cohorts into GetGist segments and trigger downstream campaigns.
Knowledge base ingestion for RAG and search
Pull every article and collection — including multi-locale content — to feed LLM retrieval, in-app search, or content audit pipelines.
SuperAI
GetGist AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_get_gist_articles
List all knowledgebase articles in your Gist workspace, sorted by creation date descending. Returns article records with id, parent_id, default_locale, statistics, and translations.
get_single_get_gist_article_by_id
Get a single Gist knowledgebase article by id. Returns the article record with id, parent_id, default_locale, statistics, and translations. Required: id.
create_a_get_gist_article
Create a new knowledgebase article in Gist with one or more locale translations. Returns: message.
update_a_get_gist_article_by_id
Update an existing Gist knowledgebase article by id. Returns: message. Required: id and translations with per-locale author_id, title, html_text, and status.
get_gist_articles_search
Search Gist knowledgebase articles by a text string. Returns matching article records with id, parent_id, default_locale, statistics, and translations. Required: search_text.
delete_a_get_gist_article_by_id
Delete an article from a Gist workspace by its id. Returns: message.g. "Article deleted successfully."). Required: id.
list_all_get_gist_collections
List all knowledgebase collections in the Gist workspace, sorted by creation date with the most recently created first. Returns collections with id, parent_id, default_locale, translations, created_at, and updated_at.
get_single_get_gist_collection_by_id
Get a single knowledgebase collection by id. Returns: collection, message. Required: id.
create_a_get_gist_collection
Create a knowledgebase collection in Gist. Returns: collection, message. Required: translations with per-locale name, description, and icon; parent_id is optional.
update_a_get_gist_collection_by_id
Update a knowledgebase collection by id in Gist. Returns: collection, message. Required: id. All body fields are optional.
delete_a_get_gist_collection_by_id
Delete a knowledgebase collection by id in Gist. Returns: message. Required: id.
get_gist_contacts_upsert
Create or update a contact in getgist. Matches an existing contact by id, then user_id, then email and creates a new one when no match is found. Returns: contact, id, object, deleted. Requires email and user_id (both required when creating; one of the two when updating).
get_gist_contacts_batch_upsert
Create or update a batch of contacts in getgist. Returns: status. Requires contacts. The import is queued and processed asynchronously; use the returned batch_id to poll the batch status.
get_gist_contacts_get_batch_status
Get the status of a batch contact import in getgist. Returns: message. Required: batch_id. status is QUEUED, IN_PROGRESS or COMPLETED; imported_contacts and errors are only present when the status is COMPLETED.
get_single_get_gist_contact_by_id
Retrieve a single contact in getgist by id. Returns: contact, id, object, deleted. Required: id. Alternatively look up with user_id or email (email must be URL-encoded).
list_all_get_gist_contacts
List all contacts in getgist, sorted by created_at and ordered descending by default. Returns contact records with id, type, email, name, user_id, phone, created_at, signed_up_at, last_seen_at, location_data, segments, tags, and custom_properties. Optionally pass order and order_by to change sorting.
delete_a_get_gist_contact_by_id
Delete a contact in getgist by its id. Returns: id, object, deleted. Required: id.
get_gist_events_track
Track an event in Gist, recording that a contact performed it. Returns the tracked event object including its id, name, email, properties, and occurred_at. Required: event_name plus one contact reference — email, user_id, or id. occurred_at defaults to the current time when omitted.
list_all_get_gist_events
List the events a contact performed in Gist. Returns event records including their id, name, email, properties, and occurred_at. Required: person_id. Max 60 per page.
get_gist_tags_upsert
Create a new tag in getgist or update an existing tag's name. Returns the tag object under tag (id, name). Required: name. Repeated or case-variant names map to a single tag; include the tag's id to rename an existing tag.
delete_a_get_gist_tag_by_id
Delete a getgist tag by id. Returns the deleted tag object under tag (id, name). Required: id.
list_all_get_gist_tags
List all tags defined in a getgist workspace. Returns a paginated list of tag records, each with: id, name.
get_gist_tags_tag_contacts
Add a getgist tag to multiple contacts at once, creating the tag if it does not already exist. Returns: tag, message. Required: name, contacts (each entry identifies a contact by id, email or user_id). No more than 50 contacts per request is recommended.
get_gist_tags_untag_contacts
Remove a getgist tag from multiple contacts by adding untag: true to each contact object. Returns: tag, message. Required: name, contacts (each entry identifies a contact by id, email or user_id, with untag set to true).
list_all_get_gist_segments
List all segments in your Gist workspace. Returns each segment's id, name, created_at, and updated_at, plus the contact count when include_count is true.
get_single_get_gist_segment_by_id
Get a single Gist segment by id. Returns: id, name, created_at, updated_at, count, segment. Required: id.
list_all_get_gist_forms
List all forms in your getgist workspace. Returns each form's id, title, created_at, form_type, status, and fields.
get_single_get_gist_form_by_id
Get a single getgist form by id. Returns the form's id, title, created_at, form_type, status, and fields. Required: id.
get_gist_forms_subscribe
Subscribe a contact to a getgist form by submitting the form's field values. Returns: acknowledge_message_header, acknowledge_message, redirect_to_url. Required: form_id, fields.
get_gist_forms_list_submissions
List all submissions for a getgist form. Returns each submission's fields, submitted_at, page_url, ip_address, consent_to_process, consent_to_process_text, skip_validation, and confirmed_at. Required: form_id.
list_all_get_gist_campaigns
List all getgist campaigns in the workspace, most recently created first. Returns: id, status, name, created_at, updated_at, email_count, active_subscriber_count, unsubscribed_subscriber_count, email_open_rate, email_click_rate, href.
get_single_get_gist_campaign_by_id
Get a single getgist campaign by id. Returns the campaign object including id, name, status, active_subscriber_count, and email_open_rate. Required: id.
get_gist_campaigns_subscribe
Subscribe a contact to a getgist campaign. Returns the campaign object including id, name, status, email_count, active_subscriber_count, and email_open_rate. Required: campaign_id and email; user_id may be sent instead of email.
get_gist_campaigns_unsubscribe
Unsubscribe a contact from a getgist campaign. Returns the campaign object including id, name, status, email_count, active_subscriber_count, and email_open_rate. Required: campaign_id and email; user_id may be sent instead of email.
get_gist_campaigns_list_subscribers
List all contacts subscribed to a getgist campaign. Returns: id, name, email, user_id, phone, created_at, signed_up_at, last_seen_at, updated_at, last_contacted_at, session_count, avatar, landing_url, original_referrer, last_seen_ip, last_seen_user_agent, location_data, segments, tags, social_profiles, subscription_types, custom_properties, unsubscribed_from_emails. Required: campaign_id.
list_all_get_gist_subscription_types
List all subscription types in getgist. Returns subscription types with id, name, description, people_count, status, and display_order.
get_single_get_gist_subscription_type_by_id
Get a single getgist subscription type by id. Returns: id, message. Required: id.
get_gist_subscription_types_attach
Attach a contact to a getgist subscription type. Returns the subscription type including id, name, description, people_count, status, and display_order. Required: subscription_type_id and subscribed_status (true to add); identify the contact by user_id, email, or contact_id.
get_gist_subscription_types_detach
Detach a contact from a getgist subscription type. Returns the subscription type including id, name, description, people_count, status, and display_order. Required: subscription_type_id and subscribed_status (false to remove); identify the contact by user_id, email, or contact_id.
create_a_get_gist_conversation
Create a conversation in Gist initiated by a contact, identified by Gist id, your user_id or email. Useful for mirroring activity from other systems. Returns the created conversation. Required: from, body.
get_single_get_gist_conversation_by_id
Get a single Gist conversation by id, including its state, assignee, contacts, teammates, tags and custom properties. Returns: conversation. Required: id.
get_gist_conversations_list_messages
List the messages in a Gist conversation, oldest first, optionally including internal notes. Returns message records with id, message_type, body, from, created_at and attachments. Required: conversation_id.
get_gist_conversations_reply
Reply to a Gist conversation as a contact, a teammate or a bot, or add an internal note (teammates only). Contact replies pass from.type=contact with the contact id, user_id or email; teammate replies pass from.type=teammate and teammate_id. Returns the created message. Required: conversation_id, message_type, from, body.
delete_a_get_gist_conversation_by_id
Delete a Gist conversation by id. Returns an empty response on success. Required: id.
get_gist_conversations_assign
Assign a Gist conversation to a teammate or a team. Only teammates can assign, so teammate_id identifies who is assigning; set assignee_type=team when assigning to a team. Returns the updated conversation. Required: conversation_id, teammate_id, assignee_id.
get_gist_conversations_unassign
Unassign a Gist conversation so any teammate can pick it up when the contact replies. Sends assignee_id as null on behalf of the acting teammate. Returns the updated conversation. Required: conversation_id, teammate_id.
get_gist_conversations_snooze
Snooze a Gist conversation by setting its state to snoozed, acting as a teammate (teammate_id) or as a bot (type=bot). Requires snoozed_until, the Unix time the conversation should reopen. Returns the updated conversation. Required: conversation_id, state, snoozed_until.
get_gist_conversations_unsnooze
Unsnooze (reopen) a Gist conversation by setting its state to open, acting as a teammate (teammate_id) or as a bot (type=bot). Returns the updated conversation. Required: conversation_id, state.
get_gist_conversations_close
Close a Gist conversation by setting its state to closed, acting as a teammate (teammate_id) or as a bot (type=bot). Returns the updated conversation. Required: conversation_id, state.
get_gist_conversations_prioritize
Mark a Gist conversation as priority or not_priority, acting as a teammate or a bot. Returns the updated conversation. Required: conversation_id, priority.
get_gist_conversations_get_counts
Get workspace-wide conversation counts by state: open, closed, snoozed, unassigned and assigned. A state with zero conversations is omitted. Returns: conversation_count. Takes no parameters.
get_gist_conversations_get_team_counts
Get per-team conversation counts in the Gist workspace: each team's id, name and number of open, snoozed and closed conversations assigned to it. Returns: conversation_count.teams. Takes no parameters.
get_gist_conversations_get_teammate_counts
Get per-teammate conversation counts in the Gist workspace: each teammate's id, name and number of open, snoozed and closed conversations assigned to them. Returns: conversation_count.teammates. Takes no parameters.
get_gist_conversations_tag
Apply one or more tags (comma-separated names) to a Gist conversation, optionally to a specific message; without message_id the tags go on the last message. Returns the updated conversation. Required: conversation_id, tags.
get_gist_conversations_untag
Remove a tag from a Gist conversation by tag id, from one message or, without message_id, from every message in the conversation. Returns the updated conversation. Required: conversation_id, tag_id.
list_all_get_gist_conversations
List conversations in the Gist workspace, newest updated first by default. Filter by status (open, closed, snoozed) and sort by created_at, updated_at or waiting_longest. Returns conversation records with id, created_at, updated_at, channel, title, contacts, teammates, assignee, open, state, read, waiting_since, snoozed_until, priority, tags and custom_properties.
get_gist_conversations_search
Search Gist conversations with a structured filter_query: an array of groups (OR between groups) each holding criteria (AND within a group) of key, operator and value. Keys include contact.id, contact.email, teammate_assigned_id, team_assigned_id, channel, state, tags and custom properties; operators include =, !=, IN, NIN, >, <. Results are sorted by updated_at descending; use status and page to narrow. Returns matching conversation records. Required: filter_query.
get_gist_conversations_bulk_update
Update a single Gist conversation's title or custom properties (despite the method name, this acts on one conversation). Returns the updated conversation. Required: conversation_id.
get_gist_workspaces_upsert_token
Retrieve workspace meta for the current Gist workspace via POST /token. Returns: created_at, message. An expires_in of 0 may indicate no expiration on the token. Required: none.
Why Truto
Why use Truto’s MCP server for GetGist
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with GetGist in under an hour. No boilerplate, no maintenance burden.
Link your customer’s GetGist account
Use Truto’s frontend SDK to connect your customer’s GetGist account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call GetGist
Truto’s Proxy API is a 1-to-1 mapping of the GetGist API. You call us, we call GetGist, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate GetGist’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about GetGist on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication work for GetGist through Truto?
Truto handles the GetGist auth handshake and token storage for each of your end users. Your app initiates a connection through Truto's link flow, and Truto returns a connection ID you use to make authenticated calls — no credential management on your side.
Can I sync large volumes of contacts without hitting rate limits?
Yes. Use the batch upsert tool to send contacts asynchronously and the batch status tool to track progress. Truto also manages retries and backoff behavior transparently so you don't have to handle GetGist's rate limiting directly.
What conversation operations are supported?
You can list, search, create, reply, assign, unassign, snooze, unsnooze, close, prioritize, tag, untag, bulk update, and delete conversations. You can also fetch conversation counts by team or teammate and list messages within a thread.
Can replies be posted as a bot versus a human teammate?
Yes. The reply tool supports posting as a contact, a teammate, or a bot, and can also create internal notes — which is the standard pattern for AI copilots that auto-respond and then hand off to a human.
How fresh is the data — is it polling or real-time?
The current GetGist integration exposes REST tools, so data freshness depends on how often you poll endpoints like list conversations or search. For event ingestion into GetGist, writes are made synchronously via the track and upsert tools.
Does the integration support knowledge base articles and collections?
Yes. You can list, read, create, update, delete, and search articles, and manage collections with full CRUD. This covers the common AI training and content indexing use cases.
GetGist
Get GetGist integrated into your app
Our team understands what it takes to make a GetGist integration successful. A short, crisp 30 minute call with folks who understand the problem.