# Fullstory (EU) MCP connector

Fullstory (EU) connects your EU-hosted session replays, segments, funnels, metrics and journeys to Claude, ChatGPT, Cursor and the Elaichi Agent, so your team can ask about user behavior in plain language inside their own Fullstory access.

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

## Facts

| | |
| --- | --- |
| Application | Fullstory (EU) |
| Category | Analytics |
| AI tools | 33 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. Fullstory (EU) 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 (EU) is connected

- Which checkout funnel step lost the most users this week?
- Open the sessions behind yesterday's failed signups and screenshot them.
- Compare the mobile and desktop segments on the pricing page.

## Connect Fullstory (EU) in Elaichi

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

1. Open Connections, choose Add connection, and pick Fullstory (EU).
2. Optionally set Share with, then press Connect.
3. Approve it in Fullstory (EU). Fullstory (EU)'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 (EU) tools are exposed, rename them, or freeze arguments before anyone points a client at it.

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

### Find where users drop out of checkout

Product. Build a funnel in Fullstory (EU) from first page to purchase, compute it for the week, and pull up the sessions of people who left at the step that hurts most.

### Watch the sessions behind a confusing screen

UX research. Open a session, take a screenshot of the moment someone got stuck, and compare two sessions to see what was different for the person who gave up.

### See what a customer did before writing in

Support. Build a segment that matches the customer's path, open the sessions it returns, and answer the ticket with what actually happened on the page.

### Check how a campaign landing page performs

Marketing. Build a metric for view counts on the campaign page in Fullstory (EU), compute it for this week, and update it when the page changes.

### Check accessibility on a live page

Engineering. Open a session and read the accessibility tree to find unlabeled buttons, missing alt text and focus traps before the next release goes out.

### Map the journey from first visit to upgrade

Growth. Build a journey across the pages that lead to an upgrade, compute it to see the paths people really take, and open the sessions behind the ones that stall.

## Elaichi vs Zapier MCP vs Composio for Fullstory (EU)

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

In Elaichi, choose Fullstory (EU), which is the EU deployment of Fullstory, and sign in to Fullstory in EU with your usual account over OAuth. 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 https://api.elaichi.ai/mcp. Your Fullstory (EU) sessions, segments, funnels and metrics are then available in Claude as you.

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

Yes. Fullstory in EU is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You do not connect Fullstory (EU) again for each client.

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

With Fullstory in EU connected, an agent can open a session replay, take a screenshot of a moment in it, read the page's accessibility tree and compare two sessions. It can also build, update and compute segments, metrics, funnels and journeys, check view counts for a page, and pull the sessions behind a funnel step or a journey path. Short, concrete asks such as "compute the checkout funnel for last week" work better than long paragraphs.

### Does connecting Fullstory (EU) give the AI access to everything in my Fullstory account?

No. Every request to Fullstory in EU runs as the person who signed in, so an agent sees only the sessions, segments and funnels that person could already see in Fullstory (EU). Elaichi can narrow that access further with roles and restrictions, and it can never widen it beyond what Fullstory already allows.

### Can my team share one Fullstory (EU) connection?

Yes. One person connects Fullstory in EU in Elaichi and shares the connection with a team, and nobody else handles a token or password. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who opened a session or changed a funnel in Fullstory (EU).

### Can I stop an agent from changing segments, funnels or metrics in Fullstory (EU)?

Yes. Restrictions in Elaichi work per action, so you can allow reading and computing in Fullstory in EU while blocking updates to segments, funnels, metrics or journeys. A restricted action is never advertised to Claude, ChatGPT, Cursor or any other client, so no prompt can reach it.

### What happens to a Fullstory (EU) connection when someone leaves?

Offboarding a person in Elaichi ends their access to Fullstory in EU at once, across every client they used. A shared Fullstory (EU) connection keeps working for everyone else on the team. Disconnecting Fullstory (EU) once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

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

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

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

### How is Elaichi different from Composio for Fullstory (EU)?

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 (EU): 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 (EU) tools

Every tool below is callable through https://api.elaichi.ai/mcp once Fullstory (EU) 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.
