MCP server
Connect Claude, Codex, and other MCP clients to FlwKit at mcp.flwkit.com and manage apps, flows, screens, blocks, experiments, analytics, and templates.
Overview
FlwKit provides a hosted MCP server at https://mcp.flwkit.com/mcp.
This server lets AI coding agents and assistants use FlwKit tools to:
- Manage apps and API keys
- Create and update onboarding flows
- Manage screens and blocks
- Run and publish A/B tests
- Read analytics and user journeys
- Create flows from templates
Prerequisites
You need:
- A FlwKit account
- A FlwKit app in your dashboard
- Your app-specific FlwKit API key
Use your own app API key from FlwKit dashboard. The hosted MCP server does not store a global key for all users.
Server details
- Base URL:
https://mcp.flwkit.com - MCP endpoint:
https://mcp.flwkit.com/mcp - Health endpoint:
https://mcp.flwkit.com/health
Authentication headers supported:
Authorization: Bearer <your_flwkit_api_key>x-flwkit-api-key: <your_flwkit_api_key>
Setup with Claude Code
Add the server:
Verify:
Remove:
Setup with Codex CLI
Export your key:
Add the server:
Verify:
Remove:
Setup with other MCP clients
Any client that supports streamable HTTP MCP can connect with:
- URL:
https://mcp.flwkit.com/mcp - Header:
Authorization: Bearer <YOUR_FLWKIT_API_KEY>
If your client does not support Authorization, use:
- Header:
x-flwkit-api-key: <YOUR_FLWKIT_API_KEY>
First-use workflow
Use this sequence to avoid ID lookup issues:
- Run
list_appsorget_app - Run
list_flows - Run
list_screensfor a flow - Run
list_blocksfor a screen - Create or update resources using returned IDs
Tool reference
FlwKit MCP currently exposes 37 tools.
Apps (7)
| Tool | Required input | What it does |
|---|---|---|
list_apps | none | Lists apps available to the API key |
get_app | none | Returns current app details |
create_app | name | Creates a new app |
update_app | none | Updates current app fields (name, description, iconUrl) |
delete_app | none | Deletes current app permanently |
get_app_api_key | none | Returns current app API key |
get_app_usage | none | Returns plan usage and limits |
Flows (8)
| Tool | Required input | What it does |
|---|---|---|
list_flows | none | Lists flows in current app |
get_flow | flowId | Gets one flow |
create_flow | name, key | Creates a flow |
update_flow | flowId | Updates flow fields |
delete_flow | flowId | Deletes a flow permanently |
duplicate_flow | flowId | Clones a flow |
list_flow_versions | flowId | Lists flow versions |
publish_flow_version | flowId, versionId | Publishes a specific version |
Screens (5)
| Tool | Required input | What it does |
|---|---|---|
list_screens | flowId | Lists screens in order |
create_screen | flowId, name | Adds a screen to a flow |
update_screen | screenId | Updates screen name or position |
delete_screen | screenId | Deletes a screen |
reorder_screens | flowId, screenIds | Reorders all screens |
Blocks (5)
| Tool | Required input | What it does |
|---|---|---|
list_blocks | screenId | Lists blocks in order |
add_block | screenId, type, properties | Adds a block |
update_block | blockId | Updates properties or position |
delete_block | blockId | Deletes a block |
reorder_blocks | screenId, blockIds | Reorders all blocks |
Supported block types:
header, description, media, cta, choice, text_input, benefits_list, testimonial, progress_bar, spacer, footer, notification_permission, health_permission, tracking_permission, camera_permission, location_permission, microphone_permission, photo_library_permission, processing_animation, comparison_table, swipe_cards
Experiments (6)
| Tool | Required input | What it does |
|---|---|---|
list_ab_tests | none | Lists A/B tests |
get_ab_test | testId | Gets A/B test details |
create_ab_test | name, flowId, variants | Creates A/B test |
update_ab_test | testId | Updates test fields |
publish_ab_test | testId | Publishes draft test |
delete_ab_test | testId | Deletes test permanently |
Analytics (4)
| Tool | Required input | What it does |
|---|---|---|
get_analytics_summary | none | App-level summary metrics |
get_flow_analytics | flowId | Flow completion and per-screen metrics |
get_screen_analytics | flowId, screenId | Single-screen analytics |
get_flow_journeys | flowId | User path journeys through a flow |
Templates (2)
| Tool | Required input | What it does |
|---|---|---|
list_templates | none | Lists system/custom templates (filter optional) |
create_flow_from_template | templateId | Creates a new flow from template |
Common usage examples
Build a flow from scratch
create_flowcreate_screenadd_block(repeat for each block)list_flow_versionspublish_flow_version
Reorder onboarding pages
list_screensto get IDsreorder_screenswith all IDs in desired order
Add permission and interactive blocks
add_blockwithnotification_permissionorlocation_permissionadd_blockwithswipe_cardsupdate_blockto refine text and behavior
Monitor conversion
get_analytics_summaryget_flow_analyticsget_screen_analyticsget_flow_journeys
Error handling and troubleshooting
401 Missing API key
Cause: no auth header was sent.
Fix: send either:
Authorization: Bearer <YOUR_FLWKIT_API_KEY>x-flwkit-api-key: <YOUR_FLWKIT_API_KEY>
403 Forbidden
Cause: API key does not have access to the requested resource.
Fix: verify you are using the correct app API key.
404 Not found
Cause: ID is invalid or not accessible with your key.
Fix: list resources first (list_flows, list_screens, list_blocks) and reuse returned IDs.
Validation errors
Cause: missing required fields or invalid payload shape.
Fix: check required inputs in this doc and pass values in correct formats.
Security best practices
- Keep API keys in environment variables or secret managers
- Never commit API keys to git
- Use separate keys per app/environment
- Rotate keys immediately if exposed