Userflow MCP server
35 operations0 webhooks
In-app onboarding with Userflow - sync users, groups and membership attributes, track events, read flows, checklists and their sessions, and manage webhook subscriptions, accounts, members and invites.
Try Userflow with your agent
Connect Userflow, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Userflow on my account, then run one read-only example and show me the result.
Userflow tools and triggers
Tools are what your agent can do in Userflow through Corsair's MCP server. Triggers are the Userflow events a routine can start from.
Webhook Subscriptions
- CreateWrite
Subscribe a URL to user, group and event topics; the response is the only place the signing secret is shown
webhookSubscriptions.create
- DeleteDestructive
Permanently delete a webhook subscription; prefer update with disabled to pause delivery
webhookSubscriptions.delete
- GetRead-only
Read one webhook subscription; the secret is not included
webhookSubscriptions.get
- ListRead-only
List webhook subscriptions
webhookSubscriptions.list
- UpdateWrite
Change a subscription url, topics or api_version, or disable it without deleting it
webhookSubscriptions.update
Content
- GetRead-only
Read one flow, checklist, launcher or other content object with its labels and version ids
content.get
- Get VersionRead-only
Read one content version, which holds the flow's questions or the checklist's tasks
content.getVersion
- ListRead-only
List content objects, filtered by type
content.list
- List VersionsRead-only
List the versions of one content object; Userflow cannot list versions across content
content.listVersions
Content Sessions
- DeleteDestructive
Permanently delete a content session with its progress and survey answers
contentSessions.delete
- EndWrite
End an active content session for a user; idempotent, and the session keeps its answers
contentSessions.end
- GetRead-only
Read one content session with its progress, completion and optionally its survey answers
contentSessions.get
- ListRead-only
List content sessions, filtered by content or user, to see who has seen or completed what
contentSessions.list
Groups
- DeleteDestructive
Permanently delete a group with its attributes, memberships and events; the users in it stay
groups.delete
- GetRead-only
Read one group with its attributes, optionally expanding its users or memberships
groups.get
- ListRead-only
List groups, optionally filtered by a condition expression
groups.list
- UpsertWrite
Create or update a group or company by your own id, merging the attributes sent
groups.upsert
Invites
- CreateWrite
Send an email invite to join an account with a role and optional permissions; a pending invite or existing member makes it fail
invites.create
- DeleteDestructive
Delete a pending invite, so its link stops working
invites.delete
- GetRead-only
Read one invite for an account
invites.get
- ListRead-only
List pending and expired invites for an account
invites.list
Members
- GetRead-only
Read one member of an account with their role and permissions
members.get
- ListRead-only
List the members of an account, filtered by email or role
members.list
- RemoveDestructive
Remove a member from an account, revoking their access to it
members.remove
- UpdateWrite
Change a member's role or replace their permissions within an account
members.update
Users
- DeleteDestructive
Permanently delete a user with their attributes, memberships, events and flow history; groups they were in stay
users.delete
- GetRead-only
Read one user with their attributes, optionally expanding their groups or memberships
users.get
- ListRead-only
List users, filtered by email, group, segment or a condition expression, with cursor paging
users.list
- UpsertWrite
Create or update a user by your own id, merging the attributes sent and optionally syncing their groups or memberships
users.upsert
Accounts
- GetRead-only
Read one account, optionally expanding its environments with their region and primary flag
accounts.get
- ListRead-only
List the accounts your personal key is a member of; needs a personal key, not an environment key
accounts.list
Attributes
- ListRead-only
List the attribute definitions Userflow has recorded, filtered by scope or by the events that use them
attributes.list
Event Definitions
- ListRead-only
List the event definitions Userflow has recorded
eventDefinitions.list
Events
- TrackWrite
Record an event against a user, a group or both, optionally with attributes and a past timestamp
events.track
Memberships
- RemoveWrite
Remove one user from one group, leaving both the user and the group in place
memberships.remove
Connect Userflow to Claude, ChatGPT or Cursor
- 1
Connect Userflow in Corsair
Add your Userflow API key once in Corsair. Corsair stores the credential encrypted and makes the Userflow API calls for your agent, so it never goes into a prompt or a config file. Connect Userflow
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Userflow. On a ChatGPT personal plan, connect Userflow here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Userflow's read and write operations run right away and its 6 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/userflow, add the Userflow plugin, and connect with an API key. Then call methods like corsair.userflow.api.accounts.get() from your app. Corsair keeps each tenant isolated.
Yes. Userflow requires an API key from your Userflow account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Userflow, GitHub, Notion, Stripe, and the rest. Trigger Userflow from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for in-app onboarding with Userflow - sync users, groups and membership attributes, track events, read flows, checklists and their sessions, and manage webhook subscriptions, accounts, members and invites. Common builds include sync jobs, admin tooling, and agents that call Userflow APIs from your backend.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Userflow API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/userflow in the open repo. When Userflow ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Userflow data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Userflow data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Userflow on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 6 destructive Userflow operations. You can change a link's mode at hub.corsair.dev/me.