# Chameleon MCP connector

The Chameleon connector lets Claude, ChatGPT, Cursor and the Elaichi Agent look up Chameleon user profiles, companies, segments, tours and tour interactions, update a tour, and remove a profile, all inside each person's own Chameleon access.

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

## Facts

| | |
| --- | --- |
| Application | Chameleon |
| Category | Product Development |
| AI tools | 97 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| 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 Chameleon is connected

- Which steps of the onboarding tour do people drop off at?
- How many profiles at Acme have finished the billing tour?
- Which experiences target the enterprise trial segment?

## Connect Chameleon in Elaichi

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

1. Open Connections, choose Add connection, and pick Chameleon.
2. Optionally set Share with, then press Connect.
3. Paste a Chameleon API key. One person generates a token in Chameleon and pastes it once. Everyone else works through Share with, and never sees it.

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

## Chameleon 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.

## Chameleon 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.

## Chameleon 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 Chameleon 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 Chameleon 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 Chameleon through Elaichi

### See how a product tour is performing

Product. Ask which steps of your onboarding tour people finish and where they stop, pulled straight from Chameleon tour interactions without opening the Chameleon dashboard.

### Check what a customer has seen before a call

Customer Success. Before a renewal call, look up the company in Chameleon and see which profiles belong to it and which tours they have completed, so you know what they have and have not been shown.

### Find out if a user saw the walkthrough

Support. When someone writes in confused about a feature, look up their Chameleon profile and check whether the feature tour reached them and how far they got.

### Count who falls into a segment

Growth. Ask how many profiles or companies match a Chameleon segment and which experiences already target it before you plan a new launch or in-app announcement.

### Tidy up a tour without leaving chat

Product Operations. Rename a Chameleon tour or change its settings in plain language, then confirm the change landed by asking for the tour again.

### Handle a deletion request properly

Privacy. When a user asks to be removed, delete or forget their Chameleon profile from the chat, with the action written to the audit log under the name of the person who did it.

## Elaichi vs Zapier MCP vs Composio for Chameleon

All three can connect Chameleon 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 Chameleon tools | Allow or restrict single Chameleon 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 Chameleon 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 Chameleon to Claude?

It takes two steps. In Elaichi, choose Chameleon and paste in an API key from your Chameleon account; there is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in with your Elaichi account and Chameleon is available in Claude.

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

Yes. Once Chameleon 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 Chameleon once and every client you use picks it up.

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

It can look up and search Chameleon user profiles and companies, count how many match a segment, list the experiences aimed at a segment, pull up tours and the interactions people have had with them, update a tour, and delete or forget a profile when asked. In practice that means questions like which tours a customer finished or where people drop out of onboarding. Short, concrete asks work better than long paragraphs.

### Does connecting Chameleon give the AI my whole account?

No. Every call to Chameleon runs as the person who signed in, so the agent sees the profiles, companies, segments and tours that person could already see in Chameleon. Elaichi can narrow that further with restrictions, and it can never widen it beyond what Chameleon itself allows.

### Can my team share one Chameleon connection?

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

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

Yes. Restrictions in Elaichi work per action, so you can allow reading Chameleon profiles and tours while blocking profile deletion, forgetting a profile, or updating a tour. A restricted action is never advertised to Claude, ChatGPT or Cursor, so no prompt can reach it.

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

Offboarding them in Elaichi ends their access to Chameleon through every client at once. A Chameleon connection shared with the team keeps working for everyone else. If you want it gone entirely, disconnecting Chameleon once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

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

Yes. Chameleon 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 Chameleon?

Yes. Both let Claude, ChatGPT or Cursor use Chameleon. 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 Chameleon call.

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

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 Chameleon: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 97 Chameleon tools

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

- **Chameleon account verify** (Verify). Verify your Chameleon Account Secret token to confirm it is valid and API access is working. Returns the account object including its id.
- **List all Chameleon profiles** (List). List user profiles (your product's end-users identified to Chameleon), newest first, with cursor pagination and optional company expansion. Returns profile records with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Optional: limit, before, after, expand.

- **Chameleon profiles search** (Search). Search user profiles with Segmentation filter expressions: match on any property you have sent (role, plan, last_seen_at ...), on experience interactions (completed or exited a tour, answered a microsurvey with a given score) or on events, combined with and/or and nested groups. Returns matching profile records with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: filters.

- **Chameleon profiles count** (Action). Count the user profiles matching a set of Segmentation filter expressions (same filters as profiles.search), without returning the profiles. Returns: count. Optional: filters, filters_op.

- **Chameleon profiles get ID** (Get). Get a single user profile by its Chameleon ID. Returns the profile with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: profile_id.

- **Chameleon profiles get number** (Get). Look up a single user profile by your own identifier: uid (your user id) or email. Pass exactly one of them. Returns the profile with id, uid, email, company_id, created_at, updated_at, last_seen_at, browser fields, percent, delivery_ids and any custom properties. Required: one of uid or email (or id).

- **Chameleon profiles delete ID** (Delete). Clear (reset) a user profile: resets browser and activity properties, removes microsurvey responses and tracked events, reverts the user's experience counts and assigns a new percent. The profile itself remains. Returns the cleared profile with last_cleared_at. Required: profile_id.

- **Chameleon profiles delete number** (Delete). Clear (reset) a user profile identified by your uid: resets browser and activity properties, removes microsurvey responses and tracked events, reverts the user's experience counts and assigns a new percent. The profile itself remains. Returns the cleared profile with last_cleared_at. Required: uid.

- **Chameleon profiles forget ID** (Action). Permanently delete a user profile and all associated data (experiences, events, metrics) for data-privacy opt-outs. Irreversible; backups are purged within 3 months. Returns the profile id and a deletion record id as proof of the request. Required: profile_id.

- **Chameleon profiles forget number** (Action). Permanently delete a user profile identified by your uid or email and all associated data (experiences, events, metrics) for data-privacy opt-outs. Irreversible; backups are purged within 3 months. Returns the profile id and a deletion record id as proof of the request. Required: uid or email.

- **List all Chameleon companies** (List). List companies (accounts your users belong to), newest first, with cursor pagination. Returns company records with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Optional: limit, before, after, expand.

- **Chameleon companies search** (Search). Search companies with Segmentation filter expressions on any company property (only the property and group kinds are supported), with optional sorting by any property and offset paging. Returns matching company records with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: filters.

- **Chameleon companies count** (Action). Count the companies matching a set of Segmentation filter expressions (property and group kinds), without returning them. Returns: count. Optional: filters, filters_op.

- **Chameleon companies get ID** (Get). Get a single company by its Chameleon ID. Returns the company with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: company_id.

- **Chameleon companies get number** (Get). Look up a single company by your own identifier (uid). Returns the company with id, uid, created_at, updated_at, last_seen_at, profile_count and any custom company properties (domain, plan, clv ...). Required: uid.

- **Chameleon companies delete ID** (Delete). Delete a company by its Chameleon ID. Returns the deleted company record. Required: company_id.

- **Chameleon companies delete number** (Delete). Delete a company identified by your own uid. Returns the deleted company record. Required: uid.

- **List all Chameleon segments** (List). List Chameleon segments (saved audience definitions), newest first, with cursor pagination. Returns segment records with id, name, items (filter expressions), items_op, created_at and updated_at. Optional: limit, before, after.

- **Get single Chameleon segment by ID** (Get). Get a single Chameleon segment by id, including its filter items. Returns: id, name, items, items_op, created_at, updated_at. Required: id.

- **Chameleon segments list experiences** (List). List the experiences attached to a Chameleon segment of one kind: tours, microsurveys or launchers. Returns the experience records (id, name, style, position, published_at ...) under the chosen kind, with cursor pagination. Required: segment_id, kind.

- **List all Chameleon tours** (List). List Chameleon tours (multi-step product tours), newest first, with cursor pagination. Returns tour records with id, name, style, position, published_at, segment_ids, tag_ids, dashboard_url, content_summary, audience_summary and all-time stats (started, completed, exited counts). Optional: limit, before, after.

- **Get single Chameleon tour by ID** (Get). Get a single Chameleon tour by id. Returns: id, name, style, position, published_at, experiment_at, experiment_range, segment_ids, tag_ids, rate_unlimit_at, dashboard_url, content_summary, content_semantics, audience_summary, stats. Required: id.

- **Update a Chameleon tour by ID** (Update). Update a Chameleon tour: publish it by setting published_at to the current ISO 8601 time, unpublish it by setting published_at to null, or add/remove an Environment (url_group_id) or Tag (tag_id) using a + or - prefix on the id. Returns the updated tour. Required: id.

- **List all Chameleon tour interactions** (List). List interactions users had with a specific Chameleon tour (started, displayed, completed, exited), newest first, with cursor pagination and optional profile/company expansion. Use before/after together to stop at your last imported interaction. Returns interaction records with id, state, tour_id, group_id, group_kind, defer_count, defer_until, goal_at, created_at, updated_at and the profile. Required: id (the tour id).

- **List all Chameleon surveys** (List). List Chameleon Microsurveys. Returns each survey's id, name, position, published_at, dashboard_url, and aggregated stats. Optional: limit (defaults to 50, max 500), before, and after.
- **Get single Chameleon survey by ID** (Get). Get a single Chameleon Microsurvey by id. Returns the survey including id, name, position, published_at, dashboard_url, and aggregated stats. Required: id.
- **Update a Chameleon survey by ID** (Update). Update a Chameleon Microsurvey by id to change its Environments, attach or remove Tags, or publish it. Returns the updated survey including id, name, position, published_at, and stats. Required: id.
- **List all Chameleon survey responses** (List). List Chameleon Microsurvey responses for a given Microsurvey, including the button clicked, any text or dropdown input, and when the survey was finished. Returns: id, created_at, updated_at, survey_id, profile_id, href, button_text, button_order, button_id, input_text, comment_step_input_text2, dropdown_items, other_text, comment_step_dropdown_items, comment_step_other_text,…
- **Delete a Chameleon survey response by ID** (Delete). Delete a Chameleon Microsurvey response by id; deleting also clears the response's associated metrics and summaries. Returns: id. Required: id.
- **List all Chameleon deliveries** (List). List Chameleon Deliveries that directly trigger an Experience to specific users. Returns delivery records including id, model_kind, model_id, profile_id, from, until, at, and options. Filterable by Experience or User Profile.
- **Create a Chameleon delivery** (Create). Create a Chameleon Delivery to directly trigger an Experience (a tour or survey) to one specific user, optionally within a from/until time window. Returns the created delivery object including id, model_kind, model_id, profile_id, from, until, and options. Required: model_kind and model_id. Pending Deliveries are limited to 3 per User Profile.
- **Update a Chameleon delivery by ID** (Update). Update a pending Chameleon Delivery by id, adjusting its time window, personalization options or filters. Returns the updated delivery object including id, model_kind, model_id, profile_id, from, until, and options. Required: id. Accepts the same parameters as create. A Delivery that is already triggered (at timestamp set) can no longer be updated.
- **Delete a Chameleon delivery by ID** (Delete). Cancel a Chameleon Delivery that has yet to happen by id. Returns an empty 204 response on success. Required: id. A Delivery that is already triggered (at timestamp set) can no longer be deleted.
- **List all Chameleon limit groups** (List). List all Chameleon Rate Limit Groups. Returns: id, created_at, updated_at, name, description, kind, rate_limit_size, rate_limit_kind, tag_ids, campaign_ids. An account typically has 1-5 Limit Groups so the response is small.
- **Get single Chameleon limit group by ID** (Get). Get a single Chameleon Limit Group by id. Returns: id, created_at, updated_at, name, description, kind, rate_limit_size, rate_limit_kind, tag_ids, campaign_ids. Required: id.
- **Chameleon limit groups list experiences** (List). List the Experiences (Tours and Microsurveys) attached to a Chameleon Limit Group. Returns limit_group with its attached tours and surveys, plus tags when the group's kind is tags; only published Experiences are included by default. Required: limit_group_id.
- **List all Chameleon alert groups** (List). List all Chameleon alert groups together with the Experiences currently matching each group's alert conditions. Returns: id, name, kind, interval, style, experiences, tag_ids, campaign_ids, created_at, updated_at, published_at, last_notified_at, slack_uid, opt_in_slack_at, emails, opt_in_email_at. Accounts typically have only a handful of alert groups, so the response is small.
- **Get single Chameleon alert group by ID** (Get). Get a single Chameleon alert group by id, including all Experiences currently matching its alert conditions. Returns: id, name, kind, interval, style, experiences, tag_ids, campaign_ids, created_at, updated_at, published_at, last_notified_at, slack_uid, opt_in_slack_at, emails, opt_in_email_at. Required: id.
- **List all Chameleon launchers** (List). List Chameleon launchers configured for your product. Returns: id, created_at, updated_at, name, title, description, preset, segment_ids, published_at, tag_ids, position, list_type, search_placeholder, quantifier_url, quantifier_urls, trigger_text, blocked_domains, empty_state_content, icon_size, screen_position, position_type, trigger, trigger_type, items, stats. Max 500 per page.
- **Get single Chameleon launcher by ID** (Get). Get a single Chameleon launcher by id. Returns the full launcher record including its name, preset, segment_ids, menu items, and all-time stats. Required: id.
- **Update a Chameleon launcher by ID** (Update). Update a Chameleon launcher to change its properties or publish/unpublish it via published_at. Returns the updated launcher including its id, name, published_at, segment_ids, tag_ids, and items. Required: id.
- **List all Chameleon tooltips** (List). List Chameleon tooltips. Returns each tooltip's id, name, position, published_at, created_at, updated_at, style, and tag_ids. Max 500 per page.
- **Get single Chameleon tooltip by ID** (Get). Get a single Chameleon tooltip by id. Returns the tooltip's id, name, style, position, published_at, created_at, updated_at, and tag_ids. Required: id.
- **Update a Chameleon tooltip by ID** (Update). Update a Chameleon tooltip by id to change its properties or to publish or unpublish it. Returns the updated tooltip including its id, name, style, position, published_at, and tag_ids. Required: id. Prefix url_group_id with + or - to add or remove an Environment; set published_at to a timestamp to publish or null to unpublish.
- **List all Chameleon webhook subscriptions** (List). List all Chameleon webhook subscriptions in a complete, un-paginated result. Returns: id, uid, name, last_item_at, last_item_state, last_item_error. Required: kind (webhook or zapier_hook).
- **Create a Chameleon webhook subscription** (Create). Create a new Chameleon webhook subscription that POSTs to a https endpoint. Returns: id. Requires kind, url, topics, and experience_ids. Limited to 5 total webhook endpoints.
- **Delete a Chameleon webhook subscription by ID** (Delete). Delete a Chameleon webhook subscription by id. Returns the deleted webhook's id. Required: id.
- **List all Chameleon URLS** (List). List all Chameleon domains (Urls), optionally filtered by top-level domain. Returns: id, created_at, updated_at, url_group_id, host, domain, enabled, installed_at, first_seen_at, last_seen_at, unlisted, archived_at. Max 500 per page.
- **Get single Chameleon URL by ID** (Get). Get a single Chameleon domain (Url) by id. Returns: id, created_at, updated_at, url_group_id, host, domain, enabled, installed_at, first_seen_at, last_seen_at, unlisted, archived_at. Required: id.
- **Create a Chameleon URL** (Create). Create a Chameleon Url to enable a new domain. Returns the created Url with id, host, domain, and enabled state. Requires host and enabled (one of on, off, or subdomain).
- ...and 47 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
