Fictura

by fictura.co · co.fictura/mcp

Paywalls, onboarding, subscription analytics, A/B tests, attribution and errors for mobile apps.

OnlineRemote + local
Category
Analytics and data
Connection
Remote (HTTP)
Tools
44 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http fictura https://mcp.fictura.co/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://mcp.fictura.co/mcp

This server expects extra headers, usually an API key from its maker.

Or run it locally (npm)

claude mcp add fictura -- npx -y @fictura/mcp@0.1.2

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "fictura": {
      "url": "https://mcp.fictura.co/mcp"
    }
  }
}

Tools it offers

44 tools, as the server itself reported during our check on Oct 31, 2026.

  • search_docsFull-text search across the Fictura docs, grouped by page. Use this before answering any 'how do I…' question about the SDK, API, paywalls, entitlements, links or webhooks — the docs are the source of truth and are regen
  • list_docsThe full documentation index — every page path, grouped by section, with a one-line description. Use it to find the right page when a search term is hard to guess. No API key required.
  • read_docThe complete markdown of one documentation page. Accepts a site-relative path such as '/implementation/welcome/sdk-quickstart' (a full docs.fictura.co URL works too). If the path is wrong, the closest real paths come bac
  • get_app_setupThe real values needed to wire the Fictura SDK into a codebase: the API base URL, this app's publishable SDK key (gk_…), and the RevenueCat webhook URL. ALWAYS call this before generating integration code — never leave a
  • get_setup_statusWhat is actually configured for this app: the setup checklist, every Fictura feature toggle and whether it is on, and which third-party integrations (Stripe, RevenueCat, Slack, Sentry, App Store Connect, …) are connected
  • get_analyticsThis app's real numbers. `overview` gives headline metrics (users, trials, trial→paid rate, events by name, cancel reasons, 14-day activity). `funnel` gives the ordered conversion funnel with per-step drop-off. `cohorts`
  • get_attribution_reportWhere installs and revenue actually came from. `summary` is the headline attribution picture (installs, organic vs non-organic, revenue). `kpis` breaks the same window down by source, campaign, link or day. `installs` li
  • list_usersThe app's users, most recently active first — each with an identity label, event count, last seen, and derived churn state (in_trial, converted, cancelled, expired, billing_issue, grace_period, paused, refunded, none). C
  • get_userOne user's identity (every stitched device / account / RevenueCat id), event breakdown, churn state and recent activity. Accepts the Fictura master user id, or any identifier the app knows them by — a device id, account
  • check_entitlementThe authoritative paid/not-paid verdict for one user, unified across Stripe, RevenueCat, App Store and Play — the same answer GET /api/v1/entitlements/{user_id} returns to a server. Note: `environment` is SANDBOX when th
  • get_tracking_planEvery event this app has ever sent, with volume, last-seen, and whether capture is switched off. Use it before adding instrumentation so you reuse the existing event name instead of introducing a near-duplicate — the nam
  • list_surfacesEvery paywall and onboarding flow, what is actually being served at each placement (running experiment > live > none), and the valid placement names. IMPORTANT: read `placements` before writing a placement string into co
  • get_surfaceThe full configuration of one paywall or onboarding flow, plus its version history. Note that configs never contain price strings — prices resolve at render time from the PurchasesAdapter's packages, so never copy a pric
  • list_templatesThe one-click starter templates available for paywalls or onboarding flows, with the template key and what each looks like. Use this when asked to add a paywall so you pick a real template key rather than inventing one.
  • list_experimentsEvery experiment with status and, for running or finished ones, full Bayesian results — exposures, conversions, and the probability each variant is best.
  • get_experimentOne experiment with its variants and full Bayesian results.
  • get_acquisition_report`roas` gives per-campaign spend, attributed installs/trials/paying users, revenue, CPI, CAC and ROAS, plus blended totals and explicitly-unattributed revenue — always keep attributed and blended figures apart when report
  • get_store_analyticsStore-reported numbers synced from Appfigures: downloads, re-downloads, updates, uninstalls, store revenue after the store's cut (subscriptions, in-app purchases, ads), top countries, the ratings snapshot, recent reviews
  • list_campaignsCampaigns read live from a connected ad platform: status, daily budget and ad sets. Returns a not_connected result rather than failing when the provider is not set up. This calls the provider's API, so prefer get_acquisi
  • list_creatorsCreator records with a 28-day funnel per creator (clicks, installs, trials, paying users) and the tracking links tagged to each.
  • get_link_infrastructureHow links reach the app. `app_links` is the most important for integration work: it returns the iOS team id, bundle id, Android package and SHA-256 fingerprints that Fictura serves in the Universal Links / App Links asso
  • get_push_configWhether push is set up and who could receive it: registered-device counts per billing cohort (all / paid / trial / free) and whether OneSignal is configured. Returns counts and configuration only — never device tokens or
  • list_store_productsThis app's auto-renewable subscriptions in App Store Connect: product id, billing period and Apple review state. Use it to check that a paywall references a product that actually exists. Pass subscription_id to also fetc
  • list_error_issuesThe error feed: grouped issues with level, status, event and user counts, a 14-day sparkline, plus the app's uptime summary. Defaults to unresolved issues only. `synthetic: true` marks console lines the SDK captured, not
  • get_error_issueOne issue in full: the group, its 50 most recent occurrences with stack traces, release and environment, and 30 days of daily counts. This is the tool to reach for when asked to fix a production error. When the app uploa
  • search_error_issuesFind issues by text in the title or culprit, platform, or release (first or last seen in). Returns the same rows as list_error_issues, filtered.
  • get_error_issue_briefOne issue condensed for fixing it: latest stack (resolved when source maps exist), in-app frames, breadcrumbs before it, facets (release, OS, device, screen), cause chain, and a ready-to-use fix prompt.
  • update_error_issueResolve, ignore or reopen an issue, assign it, set its priority, or add a note. Only works when the app allows MCP writes (Issues settings → Let MCP keys change issues).
  • get_traceEvery span of one trace (app → backend → dependencies) as a tree: names, services, start offsets, durations, HTTP status and errors, plus the error events linked to the trace. Take the trace_id from an occurrence in get_
  • get_paywall_docThe JSON document a Studio (visual editor) paywall is made of, with its status and version, plus the reference to the document model. Read this before save_paywall_doc, and edit the document you got rather than writing o
  • validate_paywall_docRuns a document through the same parser and renderer a save uses and reports what is wrong, if anything. Changes nothing.
  • save_paywall_docReplaces a draft paywall's document with the one given, as a new version (History in the dashboard shows it as `mcp: <note>` and can roll it back). Refused for a live paywall — copy it in the dashboard first. Needs an MC
  • create_paywall_draftCreates a draft paywall from a Studio template (template_key, from list_templates — the webview ones) or from a document you wrote. It is never made live: going live is done in the dashboard. Needs an MCP key that can ed
  • pair_editorConnects to the paywall editor a person has open, using the 6-character code shown under “Pair an agent” in the Studio. Returns a pairing_id for the editor_* tools. The code works once and for 10 minutes; a pairing lasts
  • editor_get_docThe document exactly as it is on the person's screen (unsaved changes included), which paywall it is, the screen they are on and the node they have selected, plus the document model reference. Read this before editor_set
  • editor_set_docReplaces the document in the person's open editor with the one given. It is NOT saved: the person sees the change, can undo it, and saves it themselves. The document is validated first and refused with the problems if it
  • unpair_editorStops this pairing. The editor shows that the agent left.
  • get_onboarding_docThe JSON document a builder-made onboarding flow is made of, with its status and version, plus the reference to the document model. Read this before save_onboarding_doc, and edit the document you got rather than writing
  • validate_onboarding_docRuns a document through the same parser, step-key check and renderer a save uses and reports what is wrong, if anything. Changes nothing.
  • save_onboarding_docReplaces a draft flow's document with the one given, as a new version (the dashboard's history shows it as `mcp: <note>` and can roll it back). Refused for a live flow. Needs an MCP key that can edit. Translations, overr

Questions

What is the Fictura MCP server?

Paywalls, onboarding, subscription analytics, A/B tests, attribution and errors for mobile apps. It is made by fictura.co and listed in the official MCP Registry as co.fictura/mcp. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add Fictura to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://mcp.fictura.co/mcp. In Claude Code, run: claude mcp add --transport http fictura https://mcp.fictura.co/mcp

How do I add Fictura to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://mcp.fictura.co/mcp.

How do I add Fictura to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "fictura": { "url": "https://mcp.fictura.co/mcp" } } }

Does Fictura work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can Fictura do?

It gives your AI 44 tools, including search_docs, list_docs, read_doc, get_app_setup, get_setup_status. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/co-fictura-mcp.svg)](https://chen.media/mcp/co-fictura-mcp)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/co-fictura-mcp"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/co-fictura-mcp.svg?theme=dark"><img src="https://chen.media/mcp/badge/co-fictura-mcp.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Analytics and data

See all