Skip to content

Flowbrew MCP reference

Check or regenerate this reference whenever MCP tool registrations change; stale hand-maintained counts have already drifted from 14 assumed tools to 26 live tools.

This is the current 28-tool set registered in packages/functions/src/mcp-server.ts. All tools run in the workspace derived from the authenticated API key or OAuth identity. In the input column, ? means optional; null is a required explicit JSON null where shown.

Breaking change (#137): Unknown top-level MCP tool arguments are now rejected instead of silently ignored. The JSON-RPC tool response has isError: true and names the offending key in an MCP error -32602 (InvalidParams) message.

Discovery, plugins, feedback, and connections

Section titled “Discovery, plugins, feedback, and connections”
Tool Input Purpose and caller note
get_started {} Returns a concise concept map and the recommended cross-tool sequence for building and running a workflow, adding a connection-backed brick, and subscribing a trigger.
list_plugins {} Lists public plugins and private plugins installed in the workspace, including connection types, brick contracts, and trigger definitions. Execution and trigger lifecycle endpoints are never returned.
delete_plugin { id } Deletes a private plugin owned by the authenticated workspace and all its versions. Public plugins cannot be deleted. Remove its connections and trigger instances first. Returns { id, deleted }.
submit_feedback { title, body } Submits a Flowbrew observation, complaint, or bug for human review; title is limited to 120 characters and body to 4,000.
list_feedback { status? } Lists workspace feedback newest first; status filters by open, accepted, rejected, or resolved. Results contain only id, title, body, a friendly status label, resolution, created_at, and updated_at; internal issue links are never returned.
list_connections { projectId: string | null } With null, lists workspace connections only; with a verified project ID, lists workspace plus same-project connections. Returns metadata and status, never credentials or audit fields.
create_connection { pluginId, connectionTypeKey, label, projectId: string | null } Creates a credential-less pending_verification connection using the existing owner and scope checks. Returns { connectionId, consoleUrl }; a human completes credential entry and validation in the console using their normal browser session.
Tool Input Purpose and caller note
create_trigger_instance { triggerDefinitionId, scope, projectId, config, connectionId } Registers a workspace- or project-scoped trigger. projectId and connectionId are required fields that may be null; the instance becomes active only after plugin acknowledgment. This does not subscribe any workflow; call create_trigger_subscription afterward to receive events.
list_trigger_instances {} Lists trigger instances in the workspace. Inactive instances do not expose a public endpoint.
reconnect_trigger_instance { id, connectionId } Tears down the old binding, binds the selected connection (or null where allowed), and registers a fresh ingestion credential.
disable_trigger_instance { id } Immediately invalidates ingestion and removes the public endpoint, then requests idempotent plugin teardown.
enable_trigger_instance { id } Re-registers a disabled instance with a fresh ingestion credential and activates it only after acknowledgment.
delete_trigger_instance { id } Tears down and deletes an instance. Delete all of its subscriptions first.
create_trigger_subscription { triggerInstanceId, workflowId } Subscribes one scope-compatible workflow. Duplicate pairs are rejected and each trigger instance permits at most five subscriptions.
delete_trigger_subscription { id } Deletes one subscription in the authenticated workspace. There is currently no subscription-list tool, so retain the creation result’s ID.
Tool Input Purpose and caller note
list_api_keys {} Lists key IDs, labels, timestamps, and revocation state without exposing raw key values.
revoke_api_key { apiKeyId } Revokes a key by ID in the workspace; it never reads or returns the raw value.
create_project { name } Creates an organizational project in the workspace; names are limited to 100 characters.
list_projects {} Lists projects in the workspace.
rename_project { id, name } Renames a project in the workspace; names are limited to 100 characters.
delete_project { id } Deletes an empty project. Workflows are never silently deleted or detached, so references must be removed first.
Tool Input Purpose and caller note
create_workflow { name, projectId? } Creates an empty shell, optionally in a verified project. It has no deployed code until a description-driven update_workflow succeeds.
list_workflows { projectId? } Lists workflows: omit projectId for all, pass a project ID for that project, or pass null for workspace-global workflows only.
update_workflow { id, description?, name?, projectId? } Either generates and compile-gates a complete new version from plain language, or changes metadata. Do not combine description with name/projectId; projectId: null makes it workspace-global. Compilation does not execute the candidate, and failure leaves the live version unchanged.
delete_workflow { id } Deletes the definition and all deployed code versions and frees its name. Instance and trigger history remains as an audit log until its own TTL expires.
start_workflow { idempotencyKey, workflowId?, name?, payload? } Starts the current version and immediately returns { instanceId }; it does not await completion. Supply workflowId or name, and a non-empty workspace-scoped idempotency key; a retry with the same key resolves to the same instance. Payload must be a JSON object and becomes event.payload.input.
list_instances { workflowId? } Lists persisted instances, optionally for one workflow, with best-effort live status.
read_instance { instanceId } Reads an instance on the exact registration it started on. A call may long-poll for about 50 seconds, so do not wrap each call in an additional retry-sleep loop.