Developer Tools
upliftfunnel.com
Manages app flows and media for Uplift Funnel, including listing flows, uploading images, and retrieving flow outlines.
ENDPOINT 1
https://api.upliftfunnel.com/mcp
MCP server metadata
- Name
- uplift-funnel
- Version
- 0.1.0
Uplift Funnel — mobile onboarding and paywall flows. A flow is a list of screens. Each screen has a `root` — a tree of nodes — connected to the others by per-screen `transitions`. Twelve node types: `box` (the only one with children), `text`, `image`, `icon`, `video`, `lottie`, `input`, `signin`, `permission`, `photo_upload`, `paywall_handoff`, `custom`. Everything semantic — a plan card, a quiz option, a progress bar — is a box carrying a `behavior`, not a type of its own; the older stack/button/choice/plan_picker vocabulary is gone and authoring one is rejected, not styled badly. A node's aspects are separate: `self` (how it sits in its parent), `layout` (how it arranges children), `style` (paint), `behavior` (what it does). ## The loop 1. `list_flows` — what exists. 2. `get_flow` — the OUTLINE of one flow: every screen's title, node types, variables written and read, and where it goes. ~3 KB, not the 30 KB document. Use it to decide which screen you need. 3. `get_screen` — one screen's full tree, plus the ids, variables and theme. 4. `edit_screen` with `dry_run: true` — validates and renders WITHOUT writing; you get diagnostics and a PNG. Look at the image. Fix. Repeat. 5. `edit_screen` without `dry_run` — commits to the draft. 6. `check_flow` — whole-flow check including the App Store paywall policy. Prefer `dry_run` while iterating: every non-dry call writes to a real person's editor and they see the intermediate states. `edit_screen` only ever sees ONE screen. Everything above them — theme, variables, locales, entry screen, screen order — is `edit_flow`. That is how you restyle a flow or reorder it; rebuilding the document with `create_flow` loses the screen ids analytics is keyed on. `delete_screen` removes one. ## What writes do Writes land in a **draft**, owned by whoever created the API key. That person opens the flow in the dashboard and finds your work waiting behind a "Draft restored" banner. **You cannot deploy.** There is no tool for it and the API key has no scope for it. Publishing to live traffic is a human action. Say so plainly if asked — don't look for a workaround. If a response comes back with `source: "published"` and a higher `published_version` than you last saw, a human deployed while you were working and your draft was replaced — re-read before editing further. ## Rules that will bite you - **Screen ids are permanent.** They are the analytics key; renaming one orphans its funnel history. `edit_screen` refuses id changes. - **Imagery is hosted https raster URLs.** No svg. `list_media` is the app's own library and `upload_media` adds to it; look there before reaching for an emoji `icon`, which is a mark and not a stand-in for the app's own artwork. - **Every screen must advance** — one with an input or a selection needs a node whose `behavior.tap` fires `next` or `submit`. - **A paywall is composed, not configured.** A plan card is a box carrying `behavior.product` + `behavior.select`; its price is `{{product.price}}`. - Read `funnel://guide/authoring` before authoring a screen from scratch — the full reference, including the H1–H12 house rules diagnostics cite. ## Before you author a flow from scratch Read `funnel://guide/design`, then ONE of the reference flows below. Validity is checked for you; taste is not, and a flow that passes every diagnostic can still look like a settings screen. ## Resources - `funnel://guide/design` — palettes, typography, imagery, copy, flow length - `funnel://guide/authoring` — the authoring guide (reference + house rules) - `funnel://reference/interior-paywall` — a paywall whose plan cards are designed twice, at rest and selected - `funnel://reference/wellness-onboarding` — a selection group of freely designed cards, a validated field, a pinned footer - `funnel://schema/node` — the primitive node JSON Schema - `funnel://schema/flow` — the flow document JSON Schema Diagnostics cite `[§6.3]` (a guide section) or `[H4]` (a house rule). Both resolve in the authoring guide.
Known tools 11
connectExchange a pairing code from the Uplift Funnel dashboard for access to that app's flows.
Inferred read-onlyupload_mediaAdd one image to the app's library and get back the CDN url to put in an `image` node's props.url.
Inferred read-onlyget_flowA flow's OUTLINE, not the document: each screen's title, node types, the variables it writes and reads, and where it leads.
Inferred read-onlyget_screenOne screen's full primitive tree, plus the context needed to edit it coherently: the other screen ids, the declared variables, and the theme.
Potential side effectsedit_screenValidate, render and (unless dry_run) write one screen into the draft.
Potential side effectsedit_flowChange what sits ABOVE the screens: theme (colours, typography, corner radius), variables, locales, entry screen, and screen order.
Inferred read-onlycheck_flowValidate the entire flow, including the App Store paywall policy that gates deploying.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.uplift-funnel]
url = "https://api.upliftfunnel.com/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"uplift-funnel": {
"type": "http",
"url": "https://api.upliftfunnel.com/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: uplift-funnel
Remote MCP URL: https://api.upliftfunnel.com/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"uplift-funnel": {
"url": "https://api.upliftfunnel.com/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"uplift-funnel": {
"type": "http",
"url": "https://api.upliftfunnel.com/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "uplift-funnel",
"transport": "streamable-http",
"url": "https://api.upliftfunnel.com/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.