Fictura
by fictura.co · co.fictura/mcp
Paywalls, onboarding, subscription analytics, A/B tests, attribution and errors for mobile apps.
- 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/mcpClaude, ChatGPT, Cursor and other apps
Add it as a custom connector with this URL (Streamable HTTP):
https://mcp.fictura.co/mcpThis 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.2Cursor, 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 regenlist_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 bacget_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 aget_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 connectedget_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` lilist_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). Cget_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, accountcheck_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 thget_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 namlist_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 coget_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 priclist_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 reportget_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 reviewslist_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_acquisilist_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 assoget_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 orlist_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 fetclist_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, notget_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 uploasearch_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 ovalidate_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 MCcreate_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 edpair_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 lastseditor_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_seteditor_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 itunpair_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 writingvalidate_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
Markdown (GitHub README)
[](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 allMCP grafanaVerified maker
@grafanaAn MCP server giving access to Grafana dashboards, data and more.
PostHog MCP ServerVerified maker
@PostHogOfficial PostHog MCP Server for product analytics, feature flags, experiments, and more.
AxiomVerified maker
axiom.coList datasets, schemas, run APL queries, and use prompts for exploration, anomalies, and monitoring.
Every Number
everynumber.appTurn an Excel or CSV export into a dashboard where every number has a receipt. No account.
Vehicle History by VIN
vehiclehistorybyvin.comQuote a $9.99 vehicle history report by VIN, open Stripe Checkout for the human, read the report.
Islam West Africa Collection (IWAC)
@fmadoreRead-only access to the Islam West Africa Collection via Hugging Face datasets.