# Fullstory MCP connector

The Fullstory connector brings sessions, segments, metrics, funnels and journeys into Claude, ChatGPT, Cursor and the Elaichi Agent, so each person can ask about user behavior in plain language inside their own Fullstory access.

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

## Facts

| | |
| --- | --- |
| Application | Fullstory |
| Category | Analytics |
| AI tools | 33 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. Fullstory builds and runs this MCP server. Elaichi adds sign-in, access controls and an audit log on top |
| Support for its tools | help.fullstory.com/hc/en-us/requests/new |
| 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 Fullstory is connected

- Compute the checkout funnel for last week and show drop-off.
- Show sessions from the enterprise segment with rage clicks this week.
- Build a metric for signups from the pricing page.

## Connect Fullstory in Elaichi

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

1. Open Connections, choose Add connection, and pick Fullstory.
2. Optionally set Share with, then press Connect.
3. Approve it in Fullstory. Fullstory's own window opens. Whoever approves it decides what this connection can reach.

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

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

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

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

### Find where users drop off in a flow

Product. Build a funnel for the new checkout steps, compute it, and pull the sessions where people abandoned, all from a question typed in plain language.

### Watch the sessions behind a confusing screen

Design. Ask for the sessions matching a segment, open one, take a screenshot or compare two states, and see exactly what the person saw.

### See what a customer did before writing in

Support. Build a segment for the account that reported a bug and open the sessions behind the ticket, without asking the customer to reproduce anything.

### Check whether a campaign page converts

Marketing. Compute view counts and a funnel from landing page to signup for a campaign segment, and get the result summarized in the chat.

### Measure the impact of a release

Engineering. Define a metric for errors or rage clicks, compute it before and after a deploy, and pull the sessions that triggered it to see what broke.

### Keep segments and metrics up to date

Analytics. Update a segment's rules or a metric's definition from a short request, then recompute it to confirm the numbers moved the way you expected.

## Elaichi vs Zapier MCP vs Composio for Fullstory

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

Connect Fullstory in Elaichi first by signing in through Fullstory's own OAuth prompt, with no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Claude signs you in through Elaichi and your Fullstory sessions, segments, metrics, funnels and journeys are available in the chat.

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

Yes. The Fullstory connection you make in Elaichi is reached through the same endpoint, https://api.elaichi.ai/mcp, from Claude, ChatGPT, Cursor, any MCP client and the Elaichi Agent. You connect Fullstory once and every client you use gets it.

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

It can build and update segments, metrics, funnels and journeys in Fullstory, compute them, and pull the sessions behind a funnel or journey step. It can also open a session, take a screenshot, read the accessibility tree and compare two states so you can see what a user saw. Short, concrete asks such as "compute the checkout funnel for last week" work better than long sentences.

### Does connecting Fullstory give the AI everything in my Fullstory org?

No. Every call to Fullstory runs as the person who signed in, so the AI can only reach the segments, metrics, funnels, journeys and sessions that person can already see in Fullstory. Elaichi can narrow that access further with roles and restrictions, and it can never widen it beyond what Fullstory itself allows.

### Can my team share one Fullstory connection?

Yes. One person connects Fullstory in Elaichi and shares the connection with a team, and nobody else ever handles a credential. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who computed a metric or opened a session, not the person who connected the account.

### Can I stop an agent from changing things in Fullstory?

Yes. Restrictions in Elaichi work per action, so you can allow computing segments, metrics and funnels in Fullstory while blocking updates to their definitions. A restricted action is never advertised to the AI client at all, so no prompt, however worded, can reach it.

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

Offboarding a person in Elaichi ends their access to Fullstory through every client at once. A Fullstory connection they shared keeps working for everyone else on the team. If you later disconnect Fullstory in Elaichi, it is removed from Claude, ChatGPT, Cursor and every other client in one step.

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

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

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

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

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

## All 33 Fullstory tools

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

- **Session open** (Open). Open a Fullstory session for visual inspection. Pass device_id and session_id (from the session replay URL). Returns a client_id plus event summaries you can use to choose interesting timestamps.
- **Session screenshot** (Action). Render a screenshot for an open session at a given page_id and timestamp. Use this to see what the user saw at a moment of interest. Sequential calls with increasing timestamps are faster than random access.
- **Session get a11y tree** (Get). Get the accessibility tree for an open session at a given page_id and timestamp. Use this to inspect element structure (roles, labels, hierarchy). Sequential calls with increasing timestamps are faster than random access.
- **Session diff** (Action). Diff the accessibility tree of an open session between two timestamps on a page. Returns a text summary of accessibility tree changes. Use this to find what changed when something broke.
- **Session close** (Close). Required. Close an open session and free associated resources. Always call this when you're done investigating a session — open sessions hold server-side resources, and failing to close them may block further session_open calls.
- **Discover org context** (Action). Search your org's configured objects — pages, named elements, defined events, custom events, and custom variables — in a single call. Pass multiple search terms in queries to resolve the IDs you need before building segments, metrics, funnels, or journeys.
- **Build segment** (Action). Convert a natural language description into a Fullstory segment definition. Persists the segment and returns a segment_id and a direct link to the Fullstory UI.
- **Update segment** (Update). Structurally refine an existing segment definition using a natural language instruction, such as "add iOS users only" or "remove the checkout filter". Saves the updated segment and returns a new segment_id.
- **Build metric** (Action). Convert a natural language query into a metric definition. Supports single_number, top_n, and trend output types.
- **Update metric** (Update). Structurally refine an existing metric definition using a natural language instruction, such as "change aggregation to unique users" or "add a filter for mobile devices". Returns a new metric_id and updated definition. Optionally supply output_type to change the visualization…
- **Compute metric** (Action). Execute a metric definition against your data, optionally scoped to a segment and time range. Supply either a metric_id from build_metric or the full metric_definition JSON. Returns a count, table, or trend with a link to the Fullstory UI.
- **Get segment** (Get). Look up one or more saved segments by ID or name regex. Returns segment_id, name, and a human-readable description of the segment definition.
- **Get metric** (Get). Look up one or more saved metrics by ID or name regex. Returns metric_id, name, and a human-readable description of the metric definition.
- **Get view counts** (Get). Look up how many times saved segments or metrics have been viewed. Accepts up to 10 IDs of a single object_type (segment or metric); set the lookback with days (default 30, max 90). Use it to gauge which objects are actually popular.
- **Build funnel** (Action). Convert a natural language description of an ordered sequence of user actions into a funnel definition and persist it. Aggregation defaults to unique users. Returns a funnel_id and a direct link to the Fullstory UI.
- **Update funnel** (Update). Refine a saved funnel's time window, aggregation, ordered steps, or conversion window — or any combination. Supply a funnel_id (from build_funnel, update_funnel, or get_funnel); pass a natural language refinement to change steps, within_seconds for the conversion window,…
- **Get funnel** (Get). Look up one or more saved funnels by id or by name regex. Returns each funnel's funnel_id, name, step count (num_steps), and a human-readable description of its definition. Pass owned=true to restrict results to funnels you created.
- **Compute funnel** (Action). Execute a saved funnel and return per-step results: the count at each step, conversion from the previous step, and conversion from step 1. Supply a funnel_id from build_funnel or get_funnel. The funnel's saved time range is always used.
- **Get funnel sessions** (Get). Get sessions scoped to a specific funnel step. Supply a funnel_id and a 0-indexed completed_step. Pass did_not_complete=true to return drop-off sessions for that step instead of completions. Each result includes a direct session replay URL.
- **Build journey** (Action). Convert a natural language description of an anchor event and direction into a journey definition and persist it. Resolves the pivot itself — pass the plain query (for example "what do users do after visiting the pricing page"), not a pre-looked-up ID. Returns a journey_id and…
- **Get journey** (Get). Look up one or more saved journeys by id or by name regex. Returns each journey's journey_id, name, and a plain-English journey_description (direction, pivot step, tracked interactions, audience, and time window). Pass owned=true to restrict results to journeys you created.
- **Compute journey** (Action). Execute a journey and return its step-by-step breakdown: the resolved pivot, the events users reached at each step outward (each with a count and a retention-style share of the previous step), and the most common end-to-end popular_paths. Supply a journey_id from build_journey…
- **Get journey sessions** (Get). Get sessions that passed through a journey's pivot. Supply a journey_id; optionally pass nodes (step + node_id pairs from compute_journey) to restrict results to sessions that followed a specific path. Each result includes a direct session replay URL; use page to paginate.
- **Update journey** (Update). Refine a saved journey's time window, direction, attached segment, or diagram settings — or any combination. Supply a journey_id (from build_journey, update_journey, or get_journey). Returns a new journey_id; the source journey is left unchanged.
- **Get sessions** (Get). Get sessions matching a metric or segment. Provide exactly one of metric_id (sessions where a metric's events occurred) or segment_id (sessions matching a saved or unnamed segment). Each result includes a direct session replay URL.
- **Get session events** (Get). Fetch a complete, chronological transcript of all events in a session: clicks, navigations, errors, network requests, and more.
- **Get pages** (Get). List page definitions (both user-defined and automatically detected). Optionally provide a regex to filter pages by name or friendly ID; if omitted, all pages are returned.
- **Discover groups** (Action). Find the top frustration signals across your product data. With no scope set, queries your entire org. Scope to a subset by providing exactly one of: page_id, domain (URL hostname), app_name (mobile app), segment_id (saved segment), or funnel_id (funnel dropouts). Optionally…
- **Get opportunity stats** (Get). Get live-computed stats for a specific frustration signal: affected users, page/domain/device breakdowns, and rate of change.
- **Get opportunities** (Get). Get pre-ranked StoryAI Opportunities for the org. Optionally scope by providing exactly one of: segment_id, page_id, or funnel_id. Control the lookback window with time_range (24h, 7d, 14d, 30d). Set exclude_bots to omit bot opportunities; each result includes is_bot when the…
- **Get opportunity** (Get). Get the full stored record for a specific StoryAI Opportunity. Provide either an instance_id (short alphanumeric identifier) or a default_metric_id + group_id pair. The result includes is_bot when the majority of contributing sessions show at least 1 bot signal.
- **Get sessions for opportunity** (Get). Get real sessions where a specific frustration signal was observed.
- **Get managed funnels** (Get). List the Fullstory-managed funnels for your org, each with its funnel_id and name. Use a returned funnel_id to scope get_opportunities (or discover_groups) to a specific funnel's dropouts.
