Flow MCP
Connect AI agents to Rynko Flow via the Model Context Protocol (MCP). Each active gate automatically generates a dedicated validate_{slug} tool that agents can call to validate their outputs before passing them to downstream systems.
Server URL: https://api.rynko.dev/api/flow/mcp
Authentication: Workspace-scoped API Key
How It Works
- Your AI agent connects to the Flow MCP server
- Flow discovers all active gates in the workspace and registers a
validate_{slug}tool for each - The agent sees each tool's full schema (field types, constraints) and business rule descriptions
- When the agent has data to validate, it calls the appropriate tool
- Flow validates the payload and returns the result, including a tamper-proof
validation_id
When gates are created, updated, or deleted, the MCP server pushes a notifications/tools/list_changed event so connected agents automatically see the updated tool list — no reconnection needed.
Dynamic Gate Tools
For each active gate, Flow generates a tool named validate_{gate_slug} (hyphens replaced with underscores).
Example: A gate with slug payment-review produces a tool called validate_payment_review.
Tool Properties
- Input schema is dynamically generated from the gate's current schema — each variable becomes a typed JSON Schema property with its constraints
- Description includes the gate description and all enabled business rule error messages, so the agent understands constraints before submitting
- Marked as destructive — calling the tool creates a run and consumes quota
Example: Agent Conversation
User: Please validate this order before submitting it.
Agent: I'll validate this against your Order Validation gate.
[Agent calls validate_order_validation with:
{
"orderId": "ORD-2026-042",
"amount": 1250.00,
"currency": "USD",
"customerEmail": "buyer@example.com"
}
]
Agent: The order passed validation. Here are the results:
- Schema validation: pass
- Business rules: pass
- Validation ID: v_abc123...
You can use the validation ID to confirm this data hasn't been
modified when it reaches your downstream system.
Freetext Mode
For gates in freetext mode (or gates without a schema), the tool accepts a single content string parameter instead of individual typed fields.
Static Tools
In addition to the dynamic gate tools, Flow provides these static tools:
| Tool | Description | Parameters |
|---|---|---|
list_flow_gates | List all active gates in the workspace | None |
get_flow_gate | Get gate details: schema, approval config, delivery config | gate_id |
get_flow_run_status | Check the status of a submitted run | run_id |
list_flow_runs | List recent runs with optional filtering | gate_id (opt), limit (default 10), status (opt) |
verify_validation | Verify a payload against a validation_id for tamper detection | validation_id, payload |
All static tools are read-only except verify_validation, which performs a comparison check.
Setup
Step 1: Create a Workspace-Scoped API Key
- Log in to the Rynko Dashboard
- Switch to the workspace whose gates you want to expose
- Go to Settings → API Keys
- Click Create New API Key
- Copy the key (starts with
fm_)
The API key must be workspace-scoped. A team-level key without a workspace will be rejected with an error explaining what's needed.
Step 2: Configure Your AI Tool
- Claude Desktop
- Claude Code
- Cursor
- Windsurf
- VS Code
Via Connectors (OAuth — Recommended)
- Open Claude Desktop → Settings → Connectors
- Click Add Custom Connector
- Paste the server URL:
https://api.rynko.dev/api/flow/mcp - OAuth authorization completes automatically — sign in with your Rynko account when prompted
Connectors with OAuth require a Claude Pro, Max, Team, or Enterprise plan.
Via mcp-remote Proxy (API Key)
Claude Desktop does not support custom headers for HTTP transport. Use the mcp-remote proxy to bridge the remote server to stdio:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"rynko-flow": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.rynko.dev/api/flow/mcp",
"--header",
"Authorization:${RYNKO_FLOW_KEY}"
],
"env": {
"RYNKO_FLOW_KEY": "Bearer fm_your_api_key"
}
}
}
}
claude mcp add --transport http rynko-flow https://api.rynko.dev/api/flow/mcp \
--header "Authorization: Bearer fm_your_api_key"
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"rynko-flow": {
"url": "https://api.rynko.dev/api/flow/mcp",
"headers": {
"Authorization": "Bearer fm_your_api_key"
}
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"rynko-flow": {
"serverUrl": "https://api.rynko.dev/api/flow/mcp",
"headers": {
"Authorization": "Bearer fm_your_api_key"
}
}
}
}
Add to .vscode/mcp.json (workspace) or open via Cmd/Ctrl + Shift + P → "MCP: Open User Configuration" (global):
{
"servers": {
"rynko-flow": {
"type": "http",
"url": "https://api.rynko.dev/api/flow/mcp",
"headers": {
"Authorization": "Bearer fm_your_api_key"
}
}
}
}
Replace fm_your_api_key with your actual API key, then restart your AI tool. You should see the Flow tools (e.g., list_flow_gates, validate_order_validation) appear in your available tools.
Step 3: Verify Connection
Ask your AI tool:
- "List my Flow gates"
- "What validation gates do I have access to?"
MCP Transport
The Flow MCP server uses Streamable HTTP transport (JSON-RPC 2.0 over HTTP with optional SSE):
| Method | Path | Description |
|---|---|---|
POST | /api/flow/mcp | Create session or route JSON-RPC to existing session |
GET | /api/flow/mcp | SSE stream for server-initiated notifications |
DELETE | /api/flow/mcp | Terminate session |
Sessions are identified by the Mcp-Session-Id header and auto-expire after 30 minutes of inactivity.
Rate Limits
The MCP endpoint is rate-limited to 100 requests per minute per API key. This is separate from per-gate rate limits configured on individual gates.
Related: Render MCP | Flow Gates | Flow Runs