Model Context Protocol
UnifiedFlows MCP server
Design, publish and operate UnifiedFlows agents by asking your AI assistant. It can draft an agent’s state graph, validate and publish it, add triggers, and follow runs step by step.
Quick start
Add this URL to your AI client as a custom connector or remote MCP server:
https://unifiedflows-api.onrender.com/agents/mcp
- Add the URL to your client. Pick your client in Connect your client.
- Your client opens a browser window. Sign in to UnifiedFlows (or sign up free), choose a workspace and approve the permissions it asks for.
- Ask for what you need. The assistant acts with your role in that workspace and nothing more.
| Server URL | https://unifiedflows-api.onrender.com/agents/mcp |
|---|---|
| Transport | Streamable HTTP (remote). Nothing to install. |
| Authentication | OAuth 2.1 sign-in with your UnifiedFlows account, or a workspace API key. |
| MCP versions | 2026-07-28, plus earlier revisions back to 2025-03-26 |
| Tools | 43 tools |
What you can do
- Build agents: create agents from templates or from scratch, edit their state graphs as drafts, validate, publish and roll back versions.
- Trigger them: add schedules, app webhooks and manual triggers, and run published actions.
- Operate runs: start, cancel, retry and replay runs, and read each step’s tool calls and outputs.
- Stay in the loop: answer approval steps waiting for a person, and resolve incidents.
Connect your client
These steps add the UnifiedFlows management server. Menus move between releases, so check your client’s own MCP documentation if a step does not match.
Claude (claude.ai and Claude Desktop)
- Open Settings → Connectors and choose Add custom connector.
- Name it
UnifiedFlowsand paste the server URL. - Click Connect, sign in to UnifiedFlows, choose a workspace and approve access.
- In a chat, enable UnifiedFlows from the tools menu.
On Team and Enterprise plans, an owner may need to add the connector for the organization first.
Claude Code
claude mcp add --transport http unifiedflows https://unifiedflows-api.onrender.com/agents/mcp
Then run /mcp inside Claude Code, select unifiedflows and choose Authenticate. Add --scope project to share it with your team through .mcp.json, or --scope user to use it in every project.
ChatGPT
- Turn on Developer mode under Settings → Apps & Connectors → Advanced settings.
- Back in Apps & Connectors, choose Create.
- Name it
UnifiedFlows, paste the server URL and choose OAuth authentication. - Sign in to UnifiedFlows and approve access, then enable it from the tools menu in a chat.
OpenAI Codex (CLI and IDE extension)
codex mcp add unifiedflows --url https://unifiedflows-api.onrender.com/agents/mcp codex mcp login unifiedflows
Or add it to ~/.codex/config.toml and then run codex mcp login unifiedflows:
[mcp_servers.unifiedflows] url = "https://unifiedflows-api.onrender.com/agents/mcp"
Cursor
Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project), then open Settings → MCP and click Connect next to unifiedflows:
{
"mcpServers": {
"unifiedflows": {
"url": "https://unifiedflows-api.onrender.com/agents/mcp"
}
}
}VS Code (GitHub Copilot)
code --add-mcp '{"name":"unifiedflows","type":"http","url":"https://unifiedflows-api.onrender.com/agents/mcp"}'Or add it to .vscode/mcp.json (or run MCP: Add Server from the Command Palette). Start the server when prompted and sign in, then use it from Copilot Chat in Agent mode.
{
"servers": {
"unifiedflows": {
"type": "http",
"url": "https://unifiedflows-api.onrender.com/agents/mcp"
}
}
}Windsurf
Open Windsurf Settings → Cascade → MCP Servers → View raw config (~/.codeium/windsurf/mcp_config.json), add the server and refresh:
{
"mcpServers": {
"unifiedflows": {
"serverUrl": "https://unifiedflows-api.onrender.com/agents/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http unifiedflows https://unifiedflows-api.onrender.com/agents/mcp
Or add it to ~/.gemini/settings.json. Then run /mcp auth unifiedflows inside Gemini CLI to sign in:
{
"mcpServers": {
"unifiedflows": {
"httpUrl": "https://unifiedflows-api.onrender.com/agents/mcp"
}
}
}Zed
Add a context server to your Zed settings.json. This uses the mcp-remote bridge, which handles the browser sign-in:
{
"context_servers": {
"unifiedflows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://unifiedflows-api.onrender.com/agents/mcp"
]
}
}
}Cline
Open the MCP Servers panel, choose Configure to edit cline_mcp_settings.json, and add:
{
"mcpServers": {
"unifiedflows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://unifiedflows-api.onrender.com/agents/mcp"
]
}
}
}JetBrains IDEs (AI Assistant)
Go to Settings → Tools → AI Assistant → Model Context Protocol (MCP), click Add, choose As JSON and paste:
{
"mcpServers": {
"unifiedflows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://unifiedflows-api.onrender.com/agents/mcp"
]
}
}
}Other clients
Any client that supports remote Streamable HTTP servers with OAuth can use the server URL directly. For a client that only runs local (stdio) servers, or cannot do OAuth, bridge it with mcp-remote (needs Node.js 18+). It opens the browser sign-in on first use and stores the token locally:
{
"mcpServers": {
"unifiedflows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://unifiedflows-api.onrender.com/agents/mcp"
]
}
}
}Sign-in and permissions
OAuth (recommended)
- Your client signs you in to UnifiedFlows in the browser. On the consent screen you choose the workspace the client may use and approve the scopes it asks for. Its access is tied to that workspace.
- Every tool runs with your own role in the workspace (viewer, member, admin or owner), checked on every call. If you leave the workspace, the client loses access at once.
- A client approved for UnifiedFlows cannot use another product’s management server; each has its own URL and sign-in.
Workspace API key
Clients that can’t do OAuth can send a workspace API key as a bearer token. The workspace owner creates it in the app under Settings → API Access. It acts as the owner with every permission, so prefer OAuth where you can and keep the key secret.
Authorization: Bearer ud_… # Claude Code claude mcp add --transport http unifiedflows https://unifiedflows-api.onrender.com/agents/mcp --header "Authorization: Bearer ud_…"
Scopes
| Scope | Allows |
|---|---|
connections:read | See your connected apps and the objects and fields they expose. |
connections:write | Create links to connect new apps, and remove connections. |
agents:read | Read your agents, their graphs, triggers, runs and incidents. |
agents:write | Create, change and delete agents, their graphs and triggers. |
agents:run | Start, cancel, retry, resume and replay agent runs. |
A tool also needs the right workspace role. The tables below list the minimum role; your role is checked as well as the scope.
Tools
43 tools. Tools marked Changes data are flagged as destructive, so most clients ask before running them; ones marked Confirm also need confirm: true.
Connected apps
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
list_integrations | Apps you can connect, optionally filtered by category (crm, hris, ats, ticketing, accounting, …). | connections:read | viewer | No |
list_connections | Apps connected to the workspace, filtered by category or status. | connections:read | viewer | No |
get_connection | One connection: its app, categories, permissions and status. | connections:read | viewer | No |
list_connection_objects | The object types a connection supports, and which can send webhooks. | connections:read | viewer | No |
get_object_fields | The fields of one object type, and whether each can be read or written. | connections:read | viewer | No |
list_records | Read a few live records (up to 25) from a connected app. Never writes. | connections:read | viewer | No |
create_connection_link | A link a person opens to connect a new app. | connections:write | member | Yes |
delete_connection | Disconnect an app. Refused while an active flow reads from it. | connections:write | admin | Yes · Confirm |
Agents
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
list_agents | Your agents, with status and run counts. | agents:read | viewer | No |
get_agent | One agent with its published graph. | agents:read | viewer | No |
get_agent_templates | Ready-made graphs, such as PR review, lead enrichment and daily digest. | agents:read | viewer | No |
list_genai_models | The models available on an AI provider connection. | agents:read | viewer | No |
create_agent | Create an agent from a graph. It runs only once triggered. | agents:write | member | Yes |
update_agent | Change name, description, status, default model or guardrails. | agents:write | member | Yes |
delete_agent | Delete an agent with its versions and triggers. Run history is kept. | agents:write | admin | Yes · Confirm |
Graphs
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
get_agent_draft | The editable draft graph and its validation result. | agents:write | member | No |
update_agent_draft | Save a draft graph. | agents:write | member | Yes |
validate_agent_graph | Check a graph. Errors block publishing; warnings do not. | agents:read | viewer | No |
publish_agent_graph | Publish the draft as the agent’s new active version. | agents:write | member | Yes |
list_agent_graph_versions | Published versions of an agent’s graph. | agents:read | viewer | No |
rollback_agent_graph | Make an earlier version active again. | agents:write | member | Yes |
Triggers and actions
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
list_agent_triggers | An agent’s schedule, webhook and manual triggers. | agents:read | viewer | No |
create_agent_trigger | Add a schedule (cron), an app webhook (created, updated, deleted) or a manual trigger. | agents:write | member | Yes |
update_agent_trigger | Enable, disable or reconfigure a trigger. | agents:write | member | Yes |
delete_agent_trigger | Remove a trigger. | agents:write | member | Yes |
list_agent_event_hooks | Event hooks that feed outside events (such as CI results) to runs. | agents:read | viewer | No |
create_agent_event_hook | Add an event hook (GitHub CI or generic). | agents:write | member | Yes |
list_agent_actions | Published actions you may run, with their inputs. | agents:read | viewer | No |
run_agent_action | Run a published action. Each action can require its own minimum role. | agents:run | viewer | Yes |
Runs
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
trigger_agent | Start a run now. Counts toward your plan’s agent runs. | agents:run | member | Yes |
list_agent_runs | Run history. | agents:read | viewer | No |
get_agent_run | One run step by step: tool calls, outputs and tokens used. | agents:read | viewer | No |
cancel_agent_run | Stop a run. | agents:run | member | Yes |
retry_agent_run | Retry a failed run. | agents:run | member | Yes |
replay_agent_run | Start a new run from an earlier one, from its beginning or from one of its steps. | agents:run | member | Yes |
send_agent_event | Deliver an event to runs that are waiting for one. | agents:run | member | Yes |
Approvals and incidents
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
list_agent_tasks | Steps waiting for a person to approve or answer. | agents:read | viewer | No |
resume_agent_run | Approve, reject or answer a waiting step. | agents:run | member | Yes |
list_agent_incidents | Problems that need attention. | agents:read | viewer | No |
resolve_agent_incident | Dismiss an incident, or retry the run behind it. | agents:run | member | Yes |
Insights
| Tool | What it does | Scope | Role | Changes data |
|---|---|---|---|---|
get_agent_metrics | Outcome and ROI metrics for an agent. | agents:read | viewer | No |
get_agent_state_stats | Statistics for each state of an agent’s graph. | agents:read | viewer | No |
list_agent_activity | Recent steps across all your agents. | agents:read | viewer | No |
Example prompts
- “Build an agent that reviews every new GitHub pull request and posts a summary to Slack.”
- “What is waiting for my approval? Approve the refund for order 1042.”
- “Why did the lead-enrichment agent fail this morning? Retry it.”
- “Run the lead-enrichment agent every weekday at 8am Pacific.”
Good to know
- Tool results are capped at 100,000 characters so they don’t flood your assistant’s context. List tools page through results (
page, andlimitup to 100). - Agents start as drafts and run only when triggered. Runs started from your AI client count toward your plan’s agent runs, like any other run.
- The API allows up to 100 requests a minute from one IP address, MCP included.
- Plan limits and your workspace role apply exactly as in the app. See Pricing.
Security and revoking access
- Access tokens last one hour and only work with the server they were issued for. Refresh tokens last 30 days and are replaced every time they are used; reusing an old one revokes every token descended from it.
- Every sign-in uses PKCE (S256), so a stolen authorization code cannot be redeemed.
- To stop a client using your account, disconnect or remove UnifiedFlows in that client. Removing someone from the workspace cuts off their clients immediately.
- Workspace owners can rotate the API key in the app at any time.
See our Privacy Policy for how your data is handled.
Troubleshooting
| Problem | Fix |
|---|---|
| The browser sign-in never opens | Make sure the client is set up for a remote HTTP server with OAuth, not a local command. If it cannot do OAuth, use the mcp-remote bridge or a workspace API key. |
| 405 Method Not Allowed | The client tried the older HTTP+SSE transport. Choose Streamable HTTP in its settings, or use the mcp-remote bridge. |
| 401 Unauthorized, or tools stop working after a while | Your sign-in expired or was revoked, or you were removed from the workspace. Re-authenticate in the client (for example /mcp in Claude Code, or disconnect and reconnect the connector). |
| “This token is missing the required scope” | The client was approved without that permission. Disconnect, reconnect and approve the scopes you want it to use. |
| A tool says you don’t have permission | Your workspace role is too low for that tool. See the Role column in the tool tables, or ask a workspace admin. |
| The client is working in the wrong workspace | The workspace is chosen when you approve the client. Disconnect, reconnect and pick the other workspace. |
For client developers
- Management server: Streamable HTTP,
POSTonly (other methods get405), stateless. Serves protocol revision 2026-07-28 (noinitializehandshake) and earlier revisions back to 2025-03-26. Tools only; no resources or prompts. - Protected resource metadata (RFC 9728):
https://unifiedflows-api.onrender.com/.well-known/oauth-protected-resource/agents/mcp - Authorization server metadata (RFC 8414):
https://unifiedflows-api.onrender.com/.well-known/oauth-authorization-server - Clients identify themselves with a Client ID Metadata Document (preferred) or Dynamic Client Registration at
https://unifiedflows-api.onrender.com/oauth/register. Redirect URIs must be HTTPS, or HTTP on a loopback address. - Authorization code with PKCE S256 (
plainis refused) and refresh tokens. Theresourceparameter (RFC 8707) is required and must be the server URL. Public clients and client secrets are both supported; authorization responses includeiss(RFC 9207). Revoke refresh tokens athttps://unifiedflows-api.onrender.com/oauth/revoke. - A
401carries aWWW-Authenticatechallenge naming the resource metadata and the product’s scopes. A client may request only the product’s own scopes; asking for none grants them all.
Need help?
If you have trouble connecting, contact us or read the FAQ.