Connect your agent
Flowproof plugs into the AI you already build with. In claude.ai, Claude Desktop or ChatGPT, sign in and press Allow. In Claude Code, Cursor or Codex, paste one snippet with an API key.
Flowproof connects through MCP, the standard way AI tools plug in extra abilities. You don’t need to know how it works: your AI learns the rest from Flowproof itself. The address is https://mcp.flowproof.dev/mcp.
There are two ways in. In claude.ai, Claude Desktop or ChatGPT you sign in and press Allow: no terminal, no API key. In a coding tool you paste one snippet that holds an API key. Either way you need a free account.
For the key, the dashboard’s Connect your agent page makes one and shows these same steps with it already filled in. Here, replace fp_YOUR_KEY with your key.
No terminal? Connect from claude.ai, Claude Desktop or ChatGPT
Start here if you use Claude or ChatGPT in the browser or the desktop app. You sign in with your Flowproof account, so there is no API key to make or keep safe.
- Open the connector settings. In claude.ai or Claude Desktop, open Settings, then Connectors. In ChatGPT, turn on Developer mode first (Settings, then Security and login), then open Plugins.
- Choose Add custom connector. In ChatGPT, press the plus button.
- Name it Flowproof and paste this address:
https://mcp.flowproof.dev/mcp - Add it, then connect it. Sign in with your Flowproof account when asked.
- Press Allow.
Then start a chat and ask it to test. The app now uses Flowproof as you. You can see it, and revoke it, under Connected apps on the Setup page.
Menu names change often, and some plans hide custom connectors: ChatGPT offers Developer mode on Plus, Pro, Business, Enterprise and Education, on the web, and on a team plan an owner may have to allow it first. Claude Code, Cursor and Codex don’t sign in like this. They use an API key, below.
What you see in claude.ai: a Flowproof card
When a run ends, or you ask for a report, apps that support it show a Flowproof card right in the chat. Apps that don’t, such as Claude Code in a terminal, get the same answer as plain text.
- The grade. A stamp and a score, then the top fixes.
- Get to A+. The steps from your grade to the top one. Each has a Do this button that asks your AI to do it.
- Proven. What the run showed works, with “earlier run” on anything carried forward from one.
- Open in dashboard for the full report.
- Share. A public link to the score card: the grade, the fixes and what was tested. Never the test addresses, email contents or project name. Stop sharing from the card, or from the run in your dashboard, and the link stops working at once. You can also just ask your AI to share the report.
After cleanup, a second card, the receipt, says what was deleted and from where: “Deleted from DrawRight: 1 user, 1 profile.”
Chat apps often can’t drive a browser. When a step means using your app, your AI tells you what to click and you click. Flowproof doesn’t count your typing time against your app’s email speed.
Claude Code
- Open a terminal in your project folder.
- Paste this command and press Enter.
claude mcp add --transport http flowproof https://mcp.flowproof.dev/mcp --header "Authorization: Bearer fp_YOUR_KEY"Check it worked. Start Claude Code and type /mcp: flowproof should say connected.
To use Flowproof in every project, not just this one, add --scope user after claude mcp add.
Cursor
- In your project, create a file called
.cursor/mcp.json. If it already exists, add theflowproofentry inside itsmcpServers. - Paste this in and save.
{
"mcpServers": {
"flowproof": {
"url": "https://mcp.flowproof.dev/mcp",
"headers": {
"Authorization": "Bearer fp_YOUR_KEY"
}
}
}
}Check it worked. Open Cursor’s settings and find the MCP section: flowproof should be listed and switched on.
The file holds your key, so add .cursor/mcp.json to .gitignore. Or save it as ~/.cursor/mcp.json instead, to use Flowproof in every project.
Windsurf
- In the Cascade panel, click the
…menu at the top right, then “Open MCP config file”. - Add the
flowproofentry insidemcpServers(or paste the whole thing if the file is empty) and save.
{
"mcpServers": {
"flowproof": {
"serverUrl": "https://mcp.flowproof.dev/mcp",
"headers": {
"Authorization": "Bearer fp_YOUR_KEY"
}
}
}
}Check it worked. Refresh the MCP list in Cascade: flowproof should be listed with its tools.
The file lives at ~/.config/devin/mcp_config.json (on Windows, %APPDATA%\devin\mcp_config.json). Installs from before the rename use ~/.codeium/windsurf/mcp_config.json. Opening it from Cascade finds the right one.
VS Code
- In your project, create a file called
.vscode/mcp.json. VS Code’s file starts withservers, notmcpServers. - Paste this in and save.
{
"servers": {
"flowproof": {
"type": "http",
"url": "https://mcp.flowproof.dev/mcp",
"headers": {
"Authorization": "Bearer fp_YOUR_KEY"
}
}
}
}Check it worked. Run “MCP: List Servers” from the Command Palette: start flowproof if it isn’t running, then use Copilot Chat in Agent mode.
The file holds your key, so add .vscode/mcp.json to .gitignore if you commit the .vscode folder.
Codex
- Open
~/.codex/config.tomlin your home folder (create it if it isn’t there). - Paste this at the end and save.
[mcp_servers.flowproof]
url = "https://mcp.flowproof.dev/mcp"
http_headers = { "Authorization" = "Bearer fp_YOUR_KEY" }
Check it worked. Run codex mcp list: flowproof should be in the list. Then start Codex as usual.
To keep the key out of the file, replace the http_headers line with bearer_token_env_var = "FLOWPROOF_API_KEY" and set that environment variable to your key.
A project can have its own .codex/config.toml too (trusted projects only). Keep that one out of git.
Claude Desktop
- Install Node.js from nodejs.org if you don’t have it. Claude Desktop reaches Flowproof through a small bridge called
mcp-remote, which needs it. - In Claude Desktop, open Settings, then Developer, then Edit Config. That opens
claude_desktop_config.json. - Paste this in (or add the
flowproofentry insidemcpServers) and save. - Quit Claude Desktop completely and open it again.
{
"mcpServers": {
"flowproof": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.flowproof.dev/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer fp_YOUR_KEY"
}
}
}
}Check it worked. Click the “+” at the bottom left of the message box and open Connectors: flowproof should be listed.
The easier way needs no key and no Node.js: open Settings, then Connectors, add a custom connector with https://mcp.flowproof.dev/mcp, sign in and press Allow. This config file is the API-key way, for a setup you keep in a file.
Write ${AUTH_HEADER} exactly as shown: the bridge fills it in from the env line, which keeps the space in “Bearer …” from being mangled on Windows.
Replit
- In Replit, open the MCP Servers settings pane and click “+ Add MCP server”.
- Name it Flowproof and paste the server URL.
- Open Advanced settings and add one header: name
Authorization, value as below. - Click “Test & save”.
https://mcp.flowproof.dev/mcpBearer fp_YOUR_KEYCheck it worked. Ask the Agent “What can the Flowproof tools do?”: it should list them.
Other tools
- Flowproof is a remote MCP server (Streamable HTTP). Add it wherever your tool lists MCP servers, with the URL and header below.
- Most tools read this JSON. Some call the address
serverUrlorhttpUrlinstead ofurl, or leavetypeout: check your tool’s docs.
{
"mcpServers": {
"flowproof": {
"type": "http",
"url": "https://mcp.flowproof.dev/mcp",
"headers": {
"Authorization": "Bearer fp_YOUR_KEY"
}
}
}
}https://mcp.flowproof.dev/mcpBearer fp_YOUR_KEYCheck it worked. Your tool’s list of MCP servers should show flowproof, with tools such as start_session and new_address.
Building in Lovable or Bolt?
Flowproof needs an agent that can run your app and sign up to it. Open your project’s code in one of the tools above and connect Flowproof there.
Then ask it to test
Once your tool shows Flowproof as connected, pick where your app is and paste a prompt into its chat.
- My app is built. Your agent opens a test run, signs up with throwaway addresses, checks every email, and deletes the test users at the end.
- I’m building my app. Your agent plans the emails your app needs (who gets each, why it matters, what it must have), saves them to the email map as planned, then builds and tests each one with you as you go.
Runs appear on the Runs page of your dashboard.
Test signup and password reset
The best place to start.
Use Flowproof to test my app’s signup and password reset emails. Map every email my app sends first. Clean up the test users when you’re done, then show me the report.
Map all my emails
See every email your app can send, and which are tested.
Use Flowproof to map every email my app can send. Read the code to find them all, including emails that go to other people and ones sent on a schedule, and save the map. Then show me the list and which ones haven’t been tested yet.
Test an email one user sends another
Invites, shares, comments, anything that emails someone else.
Use Flowproof to test a flow in my app where one user’s action emails another user, like an invite or a share. Use a separate test address for each person, check the email reaches the right one and its link works for them, and clean up both test users when you’re done.
Check my emails before I launch
The full pass before real users arrive.
I’m about to launch my app. Use Flowproof to check every email it sends before real users see them: map them all, test as many as you can, and try the things that go wrong (a wrong code, a reset link used twice, signing up twice). Clean up the test users, then give me the report and a short list of what to fix first.
Keep every email to the bar
Paste these rules into the file your AI tool reads at the start of every session. From then on, whenever your agent adds or changes an email, it adds it to the email map, sends it through your real provider, includes a plain-text part, names your product in the subject and first line, adds the “didn’t ask for this?” line on security email, and tests it with Flowproof before calling the task done. Your agent can also fetch them itself: ask it to add Flowproof’s email rules.
Claude Code · Add this to CLAUDE.md at the project root (create the file if there is none). If it already has a Flowproof email section, replace it.
<!-- flowproof:email-rules -->
## Emails: built and tested with Flowproof
This app’s emails are planned, built and tested with Flowproof (the `flowproof` MCP server). Whenever you add or change code that sends email:
- When you add or change an email, add it to the Flowproof email map with `save_email_map`, status `built`. If it is in the map as `planned`, save the same key as `built`.
- Send it through the app’s real email provider. Never leave a `console.log` stub, a fake transport or a TODO in a code path production runs.
- Include a plain-text part as well as the HTML.
- Name the product in the subject and in the first line.
- On security email (verification, sign-in links and codes, password resets), add a line for people who didn’t ask for it: “Didn’t ask for this? You can ignore this email.” On notices that a password, email address or sign-in changed, say what to do if it wasn’t them.
- Give each email what its kind must have: `plan_emails` lists it (a reset says how long the link lasts and works once; a failed payment shows the amount and links to update the card; an invite says who invited them to what).
- Before you call the task done, test the email with Flowproof: `whats_next` first (it says where the project stands and what to do), then `start_session`, `new_address` for each recipient, `mark_step`, trigger the email, `wait_for_email` with its `map_key`, use its link or code and `record_outcome`, then `end_session`. Tell the user the grade and what to fix.
- Re-test only the emails whose map entry changed in this task. The others keep their results.
- Never test with a real inbox: use only addresses from `new_address`, and open the session before creating any user.
- Build a `suggested` email only after the developer accepts it (`accept_suggestions` makes it `planned`). Every email that is not transactional has an unsubscribe link and a link to email preferences; marketing goes only to people who opted in.
<!-- /flowproof:email-rules -->
The Get started checklist
Your dashboard’s home page has a five-step checklist: create a key, connect your agent, run your first test, connect cleanup, and map your emails. Each step ticks itself from what has actually happened (a key your agent has used, a finished run, an armed cleanup connection, a saved email map), never from a button you click.
It hides itself once every step is done. To see it again, open your dashboard with the checklist showing.
If it doesn’t work
- Your tool doesn’t list flowproof. Check the file is in the place the steps say and is still valid JSON (a missing comma between two servers is the usual culprit), then restart the tool.
- It’s listed but says it can’t connect, or the key isn’t recognised. Check you replaced
fp_YOUR_KEYwith the whole key, includingfp_, kept the wordBearerand the space after it, and that the key isn’t revoked on the Setup page. - Claude Desktop: “npx” not found. Install Node.js from nodejs.org, then quit and reopen Claude Desktop.
- You lost the key. Keys are shown once and can’t be shown again. Revoke it and make a new one; it takes a click.
- Connected, but the agent can’t test your app. It needs a running copy it can use: on your computer, a staging site or production. See the quickstart for more.