MCP server for Eureka Flow — visual workflow editor. Provides tools for authentication, flow management, node operations, block discovery, credit management, and execution monitoring.
Strong foundation with 32 well-named tools following verb_noun convention (login, block_get, flow_create, etc.). All tools have descriptions (avg ~150 chars, within 10-1024 baseline). Input schemas present with Zod validation. Tool annotations (readOnlyHint, destructiveHint) applied correctly. Key gaps: parameter descriptions are sparse or missing in many tools (e.g., node_create's 'position' and 'config' lack detail on expected structure); output schemas are mostly PassthroughSchema (generic) rather than specific typed definitions; error handling lacks recovery guidance (no 'try X next' patterns); some parameter constraints undocumented (e.g., timeout ranges, page limits). Composition is strong, tools chain well (flow_load → node_create → edge_create) and return necessary IDs for downstream calls.
Get block definition by ID or name (e.g. "input-text", "text-transform"). Returns full port specs and config schema. Use block_list first to discover available blocks.
List all available block definitions with ports and config schema. Call this BEFORE creating flows to know what block types exist, their inputs/outputs, and configuration options.
Check the current credit balance (wallet). Returns total, available, and held credits. New wallets receive a one-time signup bonus. Credits are the unit consumed by AI block execution.
List credit ledger transactions (purchases, usage, bonuses, cancellations). Use to review credit spend and top-ups. creditChange is signed: positive = gained, negative = spent.
List purchasable credit packs (products) with their credit amount and USD price. Use before credit_purchase to pick a pack ID.
Complex parameter descriptions lack structural detail. node_create's 'config' and 'position' params describe purpose but not expected JSON structure (e.g., position: {x: number, y: number}). flow_save's 'nodes' and 'edges' arrays lack schema examples. LLMs cannot infer nested object shapes from prose alone.
Output schemas are generic PassthroughSchema rather than specific typed definitions. Agents cannot predict response structure (e.g., does flow_run return {status, nodes, edges, stats} or {result, error}?). This forces agents to guess field names and risks extraction errors.
Error handling lacks recovery guidance. Tools report errors but do not suggest next steps (e.g., 'auth_required' should say 'Call login() first'). Agents cannot self-correct without explicit recovery hints.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
Charge credits using the card on file (headless — no browser needed). Use credit_packs first to choose a productId. Requires a default payment method enrolled at https://billing.eureka.codes (returns a payment error if none). Idempotent per requestId — reusing the same requestId will not double-charge.
Connect two nodes by creating an edge between their ports. Use after node_create to wire nodes together.
Delete an edge (disconnect two nodes).
Duplicate a flow (including all nodes and edges). Returns the new flow ID and web console URL.
Create a new flow. Returns the flow ID and web console URL. Use flow_save after to add nodes and edges.
Delete a flow permanently. This cannot be undone.
Export flow as portable JSON (nodes, edges, config). Use to back up, version-control, or share flows.
Visualize flow as a Mermaid diagram with node statuses, data values, and execution stats. Shows the complete graph structure at a glance.
List user's flows. Use this first to see available flows before loading or running them.
Load flow with full canvas state (nodes, edges, ports). Use to inspect a flow's structure before modifying.
Make a flow public (shareable via URL). Returns the public flow URL.
Execute a flow end-to-end. Monitors via WebSocket until complete or timeout. Returns node statuses, output data, and execution stats.
Re-run a flow starting from a specific node (useful for retrying after a failure). Monitors via WebSocket until complete.
Save flow graph (nodes, edges, ports). Replaces ALL nodes with new IDs — use node_update / node_delete for edits instead. Use flow_create first to get a flowId.
Make a flow private (revoke public access).
Authenticate with Eureka: opens a browser for Google sign-in, then mints and stores an API key. Call this when any tool reports an auth_required error, or when the user asks to log in / connect. A browser window opens on the user's machine; tell them to complete sign-in there.
Remove the stored login key (no effect on a FLOW_API_KEY set via env).
Add a new node to an existing flow. Use block_list to get blockId and default config. Returns the created node with server-assigned ID. Use edge_create after to connect it.
Delete a node from a flow. Edges connected to it are also removed.
Get a single node by ID. Faster than flow_load when you only need one node. Returns type, config, position, status, and error info.
Get port data (execution result) for a node's input or output. Use after node_run to inspect the data flowing through a port.
Execute a single node. Requires flowId (get from flow_load). Monitors via WebSocket until complete. Use node_get_port after to inspect output data.
Update node properties (label, config, position, etc.). Preserves the node ID and edges.
Check user profile and API key configuration status. Returns whether geminiApiKey and openaiApiKey are configured. These keys are required for flow execution — if missing, flows cannot run.
Get execution run details including token usage, model, and timing. Use run_list first to find run IDs.
List recent execution runs with token usage and timing. Use to review execution history, check costs, and debug past runs.
Report whether an API key is configured (env or stored login), and the signed-in user if any.
Numeric parameter constraints undocumented. credit_history 'limit' and 'page' lack min/max bounds; flow_run 'timeout' lacks range guidance. Agents may pass invalid values (negative page, timeout=0) without validation feedback.
Destructive operations (flow_delete, node_delete, edge_delete) lack confirmation or dry-run patterns. Agents can permanently delete flows without a safety gate. Consider adding a 'confirm' parameter or separate 'preview_delete' tool.