OuterSignal turns your Shopify customers into personas: groups of customers who share demographics, location, profession, and buying behavior. The OuterSignal connector lets you ask about those personas and your products in plain language, right inside your AI assistant, without opening a dashboard or exporting a CSV.
It works with Claude, ChatGPT, Gemini, and any other assistant that supports MCP (Model Context Protocol) connectors.
What it does
OuterSignal already builds personas from your real order data. The connector exposes them to your AI assistant so you can interrogate them conversationally.
Ask which personas drive revenue, how demographics split across segments, where your buyers live, or who actually buys a given product, and get straight answers. The same analytics pivot to your catalog, so you can compare products by the audiences behind them.
Every answer comes from OuterSignal’s own analytics. The connection is read-only: nothing in your account can be changed through it, and no individual customer data is returned, only aggregates.
Who can use it
The connector is available on paid OuterSignal plans. On the free tier it will install but show no tools until you upgrade.
Seeing only five tools on a paid plan? Until persona tagging is switched on for your brand, the connection offers the five that work without it: listing your brands, listing your personas, the persona summary, the persona comparison, and the summary export. The per-persona detail tools, the weekly revenue distribution, and all the product tools appear once tagging is on. If that is not what you expect, message us.
How to install
These are the same instructions you will find inside OuterSignal under Settings → Integrations → AI Assistants. Two values do all the work. Paste them wherever your assistant adds a custom MCP connector.
On Claude.ai and Claude Desktop you don't need them. Connect from the Claude directory instead (below).
Name |
|
Server URL |
|
Claude
OuterSignal has a listing in the Claude directory. Once it's connected, Claude can answer questions about your personas, customer base, and products from your OuterSignal data.
Before you start
Your OuterSignal organization needs to be on a paid plan with AI tool connections turned on. If they aren't on, ask your account manager. On a free plan, the connector lists no tools.
Any Claude plan can use connectors from the directory. On Team and Enterprise plans, an Owner has to add OuterSignal for the organization first (see below).
Connect from the Claude directory (Claude.ai and Claude Desktop)
In Claude, go to Customize, then Connectors. In the desktop app, select Customize in the sidebar, then Connectors.
Select Discover, search for OuterSignal, and open its listing. You can also go straight to claude.ai/directory/outersignal.
Select Connect to Claude.
Sign in to OuterSignal and approve the consent screen. In the desktop app, the sign-in page opens in your browser.
In a chat, select +, then Connectors, and turn OuterSignal on.
Team and Enterprise plans
An Owner goes to Organization settings, then Connectors, selects Browse connectors, picks OuterSignal, and selects Add to your team. Until then, members see Request, or a note to ask an Owner, instead of a connect button. Once it's added, each member connects their own account with Connect to Claude.
What the consent screen asks for
The consent screen shows Claude's name, your OuterSignal account, and your organization. If you belong to more than one organization, pick the default brand. The connection can reach every brand listed there. Then choose the permissions to grant. At least one is required:
Persona analytics: read persona summaries, demographics, geography, and revenue by persona.
Product analytics: search your products and read product details and comparisons.
Claude also receives your email address and an account identifier, so it knows which OuterSignal user is connected. No permission lets Claude change your data.
Disconnect
In Claude, go to Customize, then Connectors.
Select OuterSignal under Your connectors, then select Disconnect. To take it off your account entirely, open the three-dot menu and select Remove. On Team and Enterprise plans, an Owner removes it for everyone from Organization settings, then Connectors.
To make sure its access ends right away, also go to Settings, then Integrations in OuterSignal, open the connected assistant, and select Revoke access.
Claude Code
Run this in your terminal, then approve the sign-in prompt on first use:
claude mcp add --transport http outersignal https://app.outersignal.com/api/mcp
You can also add OuterSignal to Claude as a custom connector with the Name and Server URL above, but the directory listing is simpler.
ChatGPT
Settings → Apps → Advanced settings → Create app → paste the Server URL above. (ChatGPT renamed “Connectors” to “Apps” in 2026.) Direct link: https://chatgpt.com/#settings/Apps
Gemini
Extensions → MCP servers → paste the Server URL above.
Any other MCP client
Point the client at these two endpoints. Compatible clients authenticate automatically using OAuth 2.0 with PKCE and Dynamic Client Registration. No API keys or personal tokens are needed.
MCP server |
|
OAuth discovery |
|
Signing in
You log in once and approve once.
Connect. Your assistant opens an OuterSignal sign-in page in a secure window.
Log in. Sign in with your normal OuterSignal account. Each person who uses the connector signs in as themselves.
Approve. You will see exactly what access you are granting (read-only persona and product analytics for your account) and approve it. Access is scoped to you and expires on its own. You can see and revoke a connected assistant’s permissions any time under Settings → Integrations → AI Assistants.
Pick a default brand. If you belong to more than one brand, the consent page lists every brand this connection can reach and asks which one to use by default. One connection covers them all. Ask your assistant to list your brands to see them, and name one in a question to switch. Access is re-checked on every request, so a brand you leave disappears immediately.
Available tools
list_active_personas: List all active personas with their names and descriptions. Returns persona IDs, names, and descriptions for all personas that have assigned customers.
Required scope:
mcp:read.personasget_persona_summary: Get summary metrics for all personas including customer count, revenue, AOV, lifetime LTV, and lifetime repeat rate. Also returns brand-level totals. When date_from/date_to are provided, customer counts cover customers with at least one order in the range, revenue/order metrics come from orders inside the range, and brand totals are windowed to the same range. lifetime_avg_ltv and lifetime_repeat_rate are lifetime per customer, averaged over the customers who ordered in the window, so they DO move with the window — narrowing the range selects a more active, higher-spend subset and can raise them substantially. The lifetime_ prefix describes each customer's contribution, not the cohort. Persona labels always reflect each customer's CURRENT classification — persona assignment history is not tracked, so this cannot answer "how did persona membership change over time".
Required scope:
mcp:read.personasget_persona_comparison: Compare metrics across all personas side-by-side. Returns each persona with customer count, revenue share, AOV, lifetime LTV, lifetime repeat rate, and return_rate (refunded dollars over gross dollars, 0-1) for comparison. When date_from/date_to are provided, counts cover customers with at least one order in the range and revenue comes from orders inside the range; lifetime_avg_ltv and lifetime_repeat_rate are lifetime per customer, averaged over the customers who ordered in the window, so they DO move with the window — the lifetime_ prefix describes each customer's contribution, not the cohort. include_order_tags/exclude_order_tags narrow which ORDERS count, so they move revenue, AOV and (by dropping customers left with no matching order) counts; they do NOT reach lifetime_avg_ltv or lifetime_repeat_rate, which read each customer's precomputed lifetime totals across every order regardless of tag. Persona labels always reflect each customer's CURRENT classification (assignment history is not tracked).
Required scope:
mcp:read.personasget_revenue_distribution: Get revenue distribution across personas, showing how revenue is split between customer segments.
Required scope:
mcp:read.personasget_persona_overview: Get detailed overview for a single persona including customer count, revenue metrics, and behavioral data. Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasget_persona_demographics: Get demographic breakdown for a persona including age distribution, gender split, and other demographic attributes. Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasget_persona_geographic: Get geographic distribution for a persona showing where customers are located by country, state, and city. Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasget_persona_professional: Get professional/employment analytics for a persona: top job titles, top employers, top industries, top educational institutions, and a distribution of estimated property value from research. Seniority level and company size are NOT computed and are not returned. Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasget_persona_revenue: Get detailed revenue analytics for a persona including revenue trends, order frequency, and monetary distribution. Either persona_name (preferred) or persona_id must be provided. When date_from/date_to are provided they narrow the COHORT to customers who ordered in the range; avg_ltv and repeat_rate are then lifetime per customer averaged over that narrowed cohort, so they move with the window rather than staying fixed.
Required scope:
mcp:read.personasget_persona_radar: Get radar/spider chart metrics for a persona showing normalized scores across multiple dimensions (spending, loyalty, engagement, etc.). Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasget_persona_products: Get product analytics for a persona showing top purchased products and purchase patterns. Either persona_name (preferred) or persona_id must be provided.
Required scope:
mcp:read.personasexport_persona_summary: Export persona summary data as structured JSON. Returns all personas with customer count, revenue (net of refunds), refunded_revenue (refunded dollars), return_rate (refunded over gross dollars, 0-1), AOV, lifetime LTV, lifetime repeat rate, and brand totals. Optionally filter to specific persona IDs. When date_from/date_to are provided, counts cover customers with at least one order in the range and revenue comes from orders inside the range; lifetime_avg_ltv and lifetime_repeat_rate are lifetime per customer, averaged over the customers who ordered in the window, so they DO move with the window — the lifetime_ prefix describes each customer's contribution, not the cohort. Persona labels always reflect each customer's CURRENT classification (assignment history is not tracked).
Required scope:
mcp:read.personassearch_products: Search and browse products with persona distribution data. Returns up to 50 products with buyer counts, revenue, AOV, and persona breakdowns. Optionally filter by product name (case-insensitive substring match).
Required scope:
mcp:read.productsget_product_detail: Get full product analytics for a specific product including demographics, professional attributes, social DNA, purchase behavior, and index results. Product name must match exactly. The response has a `lane` field: 'snapshot' or 'live'. A call with no date_from, date_to or states may be answered from a stored snapshot up to 48 hours old; any date bound or states filter is computed live. sellingSince is the product's first order across all orders: it ignores date_from, date_to and states.
Required scope:
mcp:read.productscompare_products: Compare 2-3 products side-by-side across demographic, professional, and behavioral dimensions. Returns dimensions sorted by KL-divergence (most different first) and pairwise audience overlaps.
Required scope:
mcp:read.productsget_product_next_purchases: Predict what buyers of a product purchase next, broken out by demographic bucket (age, gender, affluence, or persona). Returns per-bucket conversion rate, lift versus the overall base, and median days to the next purchase. Buckets below the support floor report a structured insufficient state rather than an empty list.
Required scope:
mcp:read.productsget_audience_professions: Aggregate professional profile of the brand's whole customer base (every enriched customer, persona or not): top current job titles, industries inferred from those titles, top current employers and top schools, each with a customer count and a percent of the customers whose value is known. Aggregate counts only: no tool returns an individual customer, name, email, handle or exact follower count. Refused when the brand has fewer than 30 enriched customers in scope. Title, employer or school rows held by fewer than 25 customers are omitted entirely, so the lists can be shorter than 10 or empty. A customers_with_* count below 25 (but not zero) is reported as 0 with its *_suppressed flag true, and its list is then empty.
Required scope:
mcp:read.personasget_audience_follower_distribution: Aggregate distribution of the brand's enriched customers by social reach: the customer count and percent in each bucket of their largest follower count on Instagram, TikTok, YouTube or X (none, 1-999, 1k-9.9k, 10k-49.9k, 50k-249.9k, 250k+). LinkedIn and Facebook are not counted as reach. Aggregate counts only: no tool returns an individual customer, name, email, handle or exact follower count. Refused when the brand has fewer than 30 enriched customers in scope. A bucket holding fewer than 25 customers (but not zero) is reported as count 0 with suppressed: true; when that leaves fewer than 25 customers withheld, the smallest shown bucket is withheld too, so no withheld bucket can be worked out from enriched_customers.
Required scope:
mcp:read.personasget_audience_platform_presence: Aggregate share of the brand's enriched customers with a profile on each social platform: Instagram, TikTok, YouTube, X/Twitter, LinkedIn and Facebook. A customer counts toward every platform they are on, so shares do not add to 100%. Aggregate counts only: no tool returns an individual customer, name, email, handle or exact follower count. Refused when the brand has fewer than 30 enriched customers in scope. A platform held by fewer than 25 customers (but not zero) is reported as count 0 with suppressed: true.
Required scope:
mcp:read.personasget_audience_executive_share: Aggregate share of the brand's enriched customers whose current job title names an executive, founder or C-suite role (whole-word match on CEO, CFO, CTO, COO, CMO, CIO, Chief, President, Founder, Cofounder, Owner, Director, VP, SVP or EVP). The percent is over customers_with_title, the customers whose current title is known. Aggregate counts only: no tool returns an individual customer, name, email, handle or exact follower count. Refused when the brand has fewer than 30 enriched customers in scope. An executive count or customers_with_title below 25 (but not zero) is reported as 0 with its suppressed flag true; executives are also withheld when the non-executives they imply number 1 to 24.
Required scope:
mcp:read.personasget_discount_split_by_demographic: Discounted vs full-price buyers across the whole brand, grouped by age bracket (18-24, 25-34, 35-44, 45-54, 55-64, 65+, unknown) or gender (female, male, unknown). Buyers are customers with at least one splittable order in scope (an order whose line items report a pre-discount price); a buyer is discounted when any of their splittable orders carried a discount, full price otherwise, and discounts on unsplittable orders are not seen. Per bucket: buyers, discounted_buyers, full_price_buyers, discounted_buyer_share (0-1) and discount_depth (discount taken / pre-discount spend). Answers questions like "do discount buyers skew younger?". Only orders whose line items report a pre-discount price can be split; coverage_share is the share of in-scope revenue those orders carry, so a low value means the split sees only part of the brand. Aggregate counts only: no tool returns an individual customer, name, email, handle or exact follower count. Refused when the brand has fewer than 30 enriched customers in scope. A bucket of 1 to 24 buyers is withheld (suppressed: true), as is the smallest visible bucket when the withheld ones total 1 to 24; a bucket whose discounted or full-price side is 1 to 24 reports split_suppressed: true with both sides 0, as does the bucket with the smallest such side when overall minus the shown buckets would otherwise reveal a withheld side. Order tags and channel_id are refused.
Required scope:
mcp:read.personasget_product_intelligence_stats: Brand-level Product Intelligence KPIs: total products, total revenue, average order value, unique buyers and the share of researched buyers, plus the brand's full order-history span (dataRange, not narrowed by date_from or date_to) and whether the requested range spans the full order history (coversFullHistory: false whenever date_to is supplied; with only date_from, true when date_from reaches back to the first order). Aggregate only; no product list and no individual buyer. Unlike the customer-base audience tools it has no 30-customer floor: it returns order totals that belong to the brand and no customer-attribute data, the same as search_products and compare_products.
Required scope:
mcp:read.productslist_organizations: List the brands/organizations available to this connection. Returns each organization name, its entity_slug (pass it as the `organization` argument to other tools), and is_default marking the default organization chosen at consent.
Required scope:
mcp:read
Persona tools (12)
Tool | What it returns |
List personas ( | The personas currently assigned to your customers, with names and descriptions. |
Persona summary ( | One row per persona: customers, revenue, AOV, lifetime value, plus brand totals to read them against. |
Compare personas ( | Every persona side by side on the headline metrics. Can include or exclude orders by order tag, for example to leave out subscription renewals. |
Revenue distribution ( | Revenue and orders per persona, week by week. |
Persona overview ( | The headline numbers for one persona: customer count, revenue, AOV, LTV. |
Demographics ( | Age, gender, home value, and education for one persona. |
Geography ( | Where a persona’s customers are concentrated, by region. |
Professional makeup ( | Job titles, employers, industries, and schools that show up in a persona. |
Persona revenue ( | Revenue, average order value, and lifetime value for a single persona. |
Persona radar ( | Five composite scores placing a persona against your own brand average. |
Product affinity ( | The products a persona buys most, and what sets them apart. |
Export summary ( | Every persona’s summary in one structured payload, for a brief or a deck. |
Product tools (4)
Tool | What it returns |
Browse products ( | Search your catalog and see buyer counts, revenue, AOV, and the persona mix per product. |
Product detail ( | Full analytics for one product: demographics, profession, social DNA, and buying behavior. |
Compare products ( | Two or three products side by side, ranked by what most distinguishes their audiences. |
What they buy next ( | The products buyers of a given item tend to reach for afterwards. |
Connection tools (1)
Tool | What it returns |
List brands ( | The brands this connection can reach, and which one it answers for when you do not name one. |
Reading the numbers
Every field these tools return is defined in the metric dictionary: the customers it is computed over, whether revenue is before or after tax, how a date range changes it, and what a zero means.
Worth knowing before you compare two figures: a few names appear in more than one tool with different definitions, and adding a date range changes how revenue is measured rather than only narrowing it. Two answers can disagree and both be right.
Your assistant is handed the dictionary when it connects, so the quickest way to check a number is to ask it what that number counts. The full dictionary is in the companion article.
Prompts to start with
“Which of my customer personas drive the most revenue this quarter?”
“Compare my two largest personas: demographics, geography, and what they buy.”
“Where are my highest-value buyers concentrated geographically?”
“What industries and job titles show up most across my personas?”
“Compare my two best-selling products. Who buys each, and how do those audiences differ?”
“Give me a one-paragraph summary of my top persona I can paste into a campaign brief.”
Need help?
Open the messenger in the corner of any page on outersignal.com, or email [email protected], and a real person on our team will help you connect, sign in, or troubleshoot.
