# GetGist MCP connector

The GetGist connector brings help center articles, collections, contacts, tags and events into Claude, ChatGPT and Cursor, so your team can search, update and tag GetGist records by asking, with every action logged.

Source: https://elaichi.ai/connectors/getgist/

## Facts

| | |
| --- | --- |
| Application | GetGist |
| Category | Marketing Automation |
| AI tools | 59 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once GetGist is connected

- Which GetGist articles about billing haven't been updated this year?
- Tag every contact who attended last week's webinar
- Draft a new article for the onboarding collection

## Connect GetGist in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick GetGist.
2. Optionally set Share with, then press Connect.
3. Supply your own GetGist app, then approve. GetGist needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which GetGist tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## GetGist MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## GetGist MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## GetGist MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect GetGist to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a GetGist tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with GetGist through Elaichi

### Keep the help center current

Support. Ask which GetGist articles mention a retired feature, then have the agent draft the corrections and update each article in its collection.

### Tag contacts after a campaign

Marketing. After a webinar or launch, tag the GetGist contacts who showed up and untag the ones who have gone quiet, without exporting a spreadsheet.

### Catch a contact up after a call

Sales. Tell the agent what changed on the call and it updates the GetGist contact, records the event and applies the right tag for follow-up.

### Spot customers who need a nudge

Customer Success. Ask for GetGist contacts tagged as trial users with no recent events, then send the list to the person who owns renewals.

### Turn release notes into articles

Product. Paste release notes and the agent creates a GetGist article in the right collection, written in the voice of your existing help center.

### Clean up duplicate contacts and tags

Operations. Find GetGist contacts that appear twice, merge the details through an upsert, and remove tags nobody has used in months.

## Elaichi vs Zapier MCP vs Composio for GetGist

All three can connect GetGist to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over GetGist tools | Allow or restrict single GetGist tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per GetGist call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect GetGist to Claude?

In Elaichi, choose GetGist and sign in; GetGist connects with an API key from your GetGist settings, and because this connector uses an OAuth application registered inside GetGist, one person brings a client ID and secret once when setting it up. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. That is the whole setup, and everyone after that first person simply signs in as themselves.

### Does GetGist work with ChatGPT and Cursor as well as Claude?

Yes. Once GetGist is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect GetGist once and every client picks it up.

### What can an AI agent actually do with my GetGist data?

It can search and read your GetGist help center articles and collections, create or update an article, look up a contact, add or update contacts in bulk, track an event against a contact, and tag or untag groups of contacts. Short, concrete asks work best, such as "tag everyone who attended Tuesday's webinar" rather than a long paragraph. Anything it changes shows up in GetGist right away and in the Elaichi audit log.

### Does connecting GetGist give the AI access to my whole workspace?

No. The agent only sees what the person who signed in to GetGist can already see, because every call runs under that person's own GetGist access. Elaichi can narrow that further, for example read-only on articles for one team, but it can never widen what GetGist itself allows.

### Can my team share one GetGist connection?

Yes. One person connects GetGist in Elaichi and shares it with a team, and nobody else ever handles the API key or client secret. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person behind every GetGist change.

### Can I stop an agent from deleting or changing things in GetGist?

Yes. Restrictions in Elaichi work per action, so you can block deleting GetGist articles, collections, contacts or tags while still allowing searches and updates. A restricted action is never advertised to the AI client at all, so no prompt, however it is worded, can reach it.

### What happens to a GetGist connection when someone leaves?

Offboarding that person in Elaichi ends their GetGist access immediately across Claude, ChatGPT, Cursor and every other client. If they had shared a GetGist connection with a team, it keeps working for everyone else. Disconnecting GetGist once in Elaichi removes it from every client at the same time.

### Does the GetGist MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. GetGist is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for GetGist?

Yes. Both let Claude, ChatGPT or Cursor use GetGist. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every GetGist call.

### How is Elaichi different from Composio for GetGist?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to GetGist: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 59 GetGist tools

Every tool below is callable through https://api.elaichi.ai/mcp once GetGist is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all GetGist articles** (List). 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 GetGist article by ID** (Get). 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 GetGist article** (Create). Create a new knowledgebase article in Gist with one or more locale translations. Returns: message.
- **Update a GetGist article by ID** (Update). Update an existing Gist knowledgebase article by id. Returns: message. Required: id and translations with per-locale author_id, title, html_text, and status.
- **GetGist articles search** (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 GetGist article by ID** (Delete). Delete an article from a Gist workspace by its id. Returns: message.g. "Article deleted successfully."). Required: id.
- **List all GetGist collections** (List). 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 GetGist collection by ID** (Get). Get a single knowledgebase collection by id. Returns: collection, message. Required: id.
- **Create a GetGist collection** (Create). Create a knowledgebase collection in Gist. Returns: collection, message. Required: translations with per-locale name, description, and icon; parent_id is optional.
- **Update a GetGist collection by ID** (Update). Update a knowledgebase collection by id in Gist. Returns: collection, message. Required: id. All body fields are optional.
- **Delete a GetGist collection by ID** (Delete). Delete a knowledgebase collection by id in Gist. Returns: message. Required: id.
- **GetGist contacts upsert** (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).
- **GetGist contacts batch upsert** (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.
- **GetGist contacts get batch status** (Get). 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 GetGist contact by ID** (Get). 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 GetGist contacts** (List). 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 GetGist contact by ID** (Delete). Delete a contact in getgist by its id. Returns: id, object, deleted. Required: id.
- **GetGist events track** (Action). 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 GetGist events** (List). 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.
- **GetGist tags upsert** (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 GetGist tag by ID** (Delete). Delete a getgist tag by id. Returns the deleted tag object under tag (id, name). Required: id.
- **List all GetGist tags** (List). List all tags defined in a getgist workspace. Returns a paginated list of tag records, each with: id, name.
- **GetGist tags tag contacts** (Action). 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.
- **GetGist tags untag contacts** (Action). 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 GetGist segments** (List). 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 GetGist segment by ID** (Get). Get a single Gist segment by id. Returns: id, name, created_at, updated_at, count, segment. Required: id.
- **List all GetGist forms** (List). List all forms in your getgist workspace. Returns each form's id, title, created_at, form_type, status, and fields.
- **Get single GetGist form by ID** (Get). Get a single getgist form by id. Returns the form's id, title, created_at, form_type, status, and fields. Required: id.
- **GetGist forms subscribe** (Action). 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.
- **GetGist forms list submissions** (List). 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 GetGist campaigns** (List). 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 GetGist campaign by ID** (Get). Get a single getgist campaign by id. Returns the campaign object including id, name, status, active_subscriber_count, and email_open_rate. Required: id.
- **GetGist campaigns subscribe** (Action). 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.
- **GetGist campaigns unsubscribe** (Action). 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.
- **GetGist campaigns list subscribers** (List). 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 GetGist subscription types** (List). List all subscription types in getgist. Returns subscription types with id, name, description, people_count, status, and display_order.
- **Get single GetGist subscription type by ID** (Get). Get a single getgist subscription type by id. Returns: id, message. Required: id.
- **GetGist subscription types attach** (Action). 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.
- **GetGist subscription types detach** (Action). 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 GetGist conversation** (Create). 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 GetGist conversation by ID** (Get). Get a single Gist conversation by id, including its state, assignee, contacts, teammates, tags and custom properties. Returns: conversation. Required: id.

- **GetGist conversations list messages** (List). 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.

- **GetGist conversations reply** (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 GetGist conversation by ID** (Delete). Delete a Gist conversation by id. Returns an empty response on success. Required: id.

- **GetGist conversations assign** (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.

- **GetGist conversations unassign** (Action). 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.

- **GetGist conversations snooze** (Action). 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.

- **GetGist conversations unsnooze** (Action). 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.

- **GetGist conversations close** (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.

- **GetGist conversations prioritize** (Action). Mark a Gist conversation as priority or not_priority, acting as a teammate or a bot. Returns the updated conversation. Required: conversation_id, priority.

- ...and 9 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
