Flowra
Server Details
Hosted AI agents and locked workflows on connected apps, with human approval gates and a run ledger. Docs: https://docs.flowra.dev/guides/mcp
- Status
- Healthy
- Uptime
- 93.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct stage of the orchestration lifecycle (discover, schema, connect, execute, script), and the descriptions explicitly cross-reference when to prefer one over another. There is mild overlap between FLOWRA_JS_REMOTE_WORKBENCH and FLOWRA_REMOTE_BASH (both remote sandbox execution) and between DISCOVER's includeInputSchemas and GET_TOOL_SCHEMAS, but the guidance resolves these.
All six tools share the FLOWRA_ prefix and consistent SCREAMING_SNAKE_CASE verb_noun structure (DISCOVER_TOOLS, GET_TOOL_SCHEMAS, MANAGE_CONNECTIONS, MULTI_EXECUTE_TOOL, etc.). No mixed conventions or style drift.
Six tools is well-scoped for a meta-orchestration server: discovery, schema loading, connection management, parallel execution, and two sandbox runtimes. Each tool earns its place with no redundancy at the count level.
The surface covers the full orchestration flow from discovery through execution and scripting, plus connection management. Minor gap: referenced native tools (FLOWRA_WEB_SEARCH/WEB_FETCH, FLOWRA_ASK_CHOICE) appear in descriptions but are not part of this set, leaving a small hole in the stated capability.
Available Tools
6 toolsFLOWRA_DISCOVER_TOOLSDiscover toolsRead-onlyIdempotentInspect
Find the exact tool slugs for an app or integration. Returns mainToolSlugs, relatedToolSlugs, per-toolkit hasActiveConnection, a short plan, pitfalls, and notFoundToolkitSlugs. If you already have the exact ACTION slug and only need its input schema, use FLOWRA_GET_TOOL_SCHEMAS instead.
When the result includes a catalog app that covers the job, use that app's tool instead of a generic web search, fetch, or HTTP tool.
Toolkit tools are not direct function calls. Once you have a slug: FLOWRA_GET_TOOL_SCHEMAS for its arguments (or set includeInputSchemas=true here and skip that step), FLOWRA_MANAGE_CONNECTIONS if hasActiveConnection is false, then FLOWRA_MULTI_EXECUTE_TOOL to run it. Use only slugs that came back from this call.
mode "select" (default): queries are one atomic English useCase per item, with the app name in it. Any schedule or recurrence goes in intentSummary only, never in useCase — recurring work is a workflow, not a tool argument. toolkitSlugs pins that app's important tools into candidates. Pass toolkitSlugs, queries, or both — at least one is required. select returns only the tools needed for one action, never a full catalog.
mode "inventory": one page of tools in a known app. Requires toolkitSlugs. Optional query is a whole-word match on slug, name, or description (issue matches issues, not issued; for example query "issue" with toolkitSlugs ["github"]). No selection model and no native Flowra tools unless that toolkit was requested. mainToolSlugs is this page only; relatedToolSlugs is empty. toolSchemas include name and a one-line description. If inventory.truncated is true, call again with the same toolkitSlugs and query and offset=inventory.nextOffset. Do not use the workbench to browse a toolkit catalog.
toolkitSlugs: exact catalog toolkit slugs (lowercase app id such as gmail or github). Do not pass ACTION slugs here (GMAIL_SEND_EMAIL).
Reuse the returned session.id on GET_TOOL_SCHEMAS, MANAGE_CONNECTIONS, and MULTI_EXECUTE_TOOL so auth and workbench state stay on one session.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | select (default): smallest set of tools for one action. inventory: one page of tools in toolkitSlugs, optional query filter, no selection model. Use inventory to list or search an app catalog (for example GitHub issue tools). | |
| limit | No | Inventory page size. Default 40, max 50. Ignored in select mode. | |
| query | No | Inventory only. Whole-word match on slug, name, or description (issue matches issues, not issued). Omit for the first page of the toolkit. Ignored in select mode. | |
| offset | No | Inventory page start. When inventory.truncated is true, pass inventory.nextOffset. Default 0. Ignored in select mode. | |
| queries | No | Use cases to search in parallel. Required in select mode unless toolkitSlugs is set. Ignored in inventory mode. | |
| session | No | Chat: omit. MCP/new: { generate_id: true }. Continue: { id }. Not both. | |
| userMessage | Yes | Exact user request (any language) | |
| toolkitSlugs | No | Exact catalog toolkit slugs (gmail, github). select: pins important tools. inventory: required, lists that app. Not ACTION slugs. | |
| intentSummary | Yes | One-sentence intent; include scheduling here if any | |
| includeInputSchemas | No | When true, toolSchemas include inputSchema so you can skip GET_TOOL_SCHEMAS. Default false |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
FLOWRA_GET_TOOL_SCHEMASGet tool schemasRead-onlyIdempotentInspect
Load the input schema and tool type for exact tool slugs, so you can build correct arguments before running them with FLOWRA_MULTI_EXECUTE_TOOL. These slugs are NOT bound functions — never emit them as a tool_call name. Call FLOWRA_DISCOVER_TOOLS first if you do not have the slug. Set includeOutputSchema=true only when you need a trigger or webhook payload shape. Pass session.id from DISCOVER to stay in the same session.
Workflow action nodes flatten tool data into the node state: after an action node "fetch", use fetch.content / fetch.title in prompts and inputMapping — not fetch.data.content. GET_TOOL_SCHEMAS may show an envelope with properties.data; CREATE_OR_UPDATE_WORKFLOW validation uses the flattened field names only.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Optional meta session.id from DISCOVER | |
| toolSlugs | Yes | Exact slugs from Known tools, pins, or DISCOVER — never invent | |
| includeOutputSchema | Yes | Include outputSchema (trigger payloads). Default false |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
FLOWRA_JS_REMOTE_WORKBENCHJavaScript sandboxDestructiveInspect
Process REMOTE FILES or script BULK TOOL EXECUTIONS using JavaScript code in a REMOTE SANDBOX. If you can see the data in chat, DON'T USE THIS TOOL.
ONLY use this when processing data stored in a remote file or when scripting bulk tool executions.
BOUNDARY WITH FLOWRA_REMOTE_BASH
Both tools share one sandbox per session.id and the same /home/user/files files.
This tool runs JavaScript and keeps variables between calls. Only this tool has run_tool (app tools), invoke_llm, proxy_execute, and upload_local_file.
FLOWRA_REMOTE_BASH runs one shell command with a fresh shell each call and none of those helpers. Use it for jq, grep, sort, unzip, or listing files.
Neither tool can call FLOWRA_MULTI_EXECUTE_TOOL or any other FLOWRA_* meta tool.
DO NOT USE
When the complete response is already inline/in-memory, or you only need quick parsing, summarization, or basic math.
USE IF
To parse/analyze tool outputs saved to a remote file in the sandbox or to script multi-tool chains there.
After FLOWRA_MULTI_EXECUTE_TOOL with
syncResponseToWorkbench: trueand the samesession.id: the snapshot is at /home/user/files/multi_execute.json and as FLOWRA_WORKBENCH_SNAPSHOT. FLOWRA_REMOTE_BASH sees the same file.For bulk or repeated executions of known Flowra tools (e.g., add a label to 100 emails).
To call APIs via proxy_execute when no Flowra tool exists for that API.
OUTPUTS
Returns a compact result or, if too long, artifacts for download.
IMPORTANT CODING RULES:
Stepwise Execution: Split work into small steps. Save intermediate outputs in variables or temporary storage. Call FLOWRA_JS_REMOTE_WORKBENCH again for the next step. This improves composability and avoids timeouts.
Session Persistence: This is a persistent JavaScript execution context: variables, functions, and in-memory state from previous and future code executions are preserved in the sandbox session and available for reuse. Do not import or redeclare the helpers below.
Parallelism & Timeout (CRITICAL): There is a hard timeout of 4 minutes. Prioritize PARALLEL execution using Promise.all() with suitable concurrency for bulk operations (e.g., call run_tool or invoke_llm in parallel across items). 3.1 If the data is large, split into smaller batches and call the workbench multiple times to avoid timeouts.
Checkpoints: Implement checkpoints (in memory or variables) so that long runs can be resumed from the last completed step.
Schema Safety: Never assume the response schema for run_tool if not known already from previous tools. To inspect schema, run a simple request via MULTI_EXECUTE_TOOL or use invoke_llm helper.
LLM Helpers: Always use invoke_llm helper for summary, analysis, or field extraction on results. Prefer batching items into smaller groups to stay within token limit.
Avoid Meta Loops: Do not use run_tool to call MULTI_EXECUTE_TOOL or other FLOWRA_* meta tools to avoid cycles. Only use it for app tools.
Pagination: Use when data spans multiple pages. Continue fetching pages with the returned next_page_token or cursor until none remains. Parallelize fetching pages if the tool supports page_number.
No Hardcoding: Never hardcode data in code. Always load it from files or tool responses, iterating to construct intermediate or final inputs/outputs.
Code Correctness (CRITICAL): Code must be syntactically and semantically correct and executable (ES5-friendly; avoid ?? or ?. if targeting older runtimes).
GLOBALS (when workbench snapshot loaded)
FLOWRA_WORKBENCH_SNAPSHOT: full JSON from MULTI_EXECUTE sync, or null if load failed / skipped.
HELPERS (already in sandbox – do not redeclare):
run_tool(toolSlug, args) -> [result, error]: Execute a known Flowra app tool (from DISCOVER_TOOLS). Match the tool's input schema. Returns (data, "") on success; ({}, "error_message") on failure. Check error before using result.
invoke_llm(query) -> [text, error]: Invoke an LLM for semantic tasks. Pass MAX ~400k characters. Returns (response_text, "") on success; ("", "error_message") on failure.
proxy_execute(method, endpoint, toolkit, query_params?, body?, headers?) -> [data, error]: Call a connected toolkit API. endpoint is a path on that toolkit's base URL. Credentials stay on the host. Returns (response_data, "") or (null, "error_message").
upload_local_file(filePath) -> [fileUrl, error]: Upload a file from /home/user/files and return a public download URL.
All helpers return [result, error]. Always check error before using result.
Error-first pattern: const [res, err] = await run_tool("SOME_TOOL_SLUG", { key: "value" }); if (err) { return { error: err }; } const data = res.data != null ? res.data : res; // use data
Parallelize (4-min timeout): const CONCURRENCY = 10; const items = [/* ... */]; const results = []; for (let i = 0; i < items.length; i += CONCURRENCY) { const batch = items.slice(i, i + CONCURRENCY); const out = await Promise.all(batch.map(async (item) => { const [r, e] = await run_tool("TOOL_SLUG", item); return e ? { status: "failed", error: e } : { status: "ok", data: r }; })); results.push(...out); } return results;
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | ALWAYS pass session.id from DISCOVER (never invent; never mint here). | |
| thought | No | Concise objective and high-level plan (no private chain-of-thought). 1 sentence describing what the cell should achieve and why the sandbox is needed. | |
| codeToExecute | Yes | JavaScript to run inside the persistent remote JavaScript sandbox. State (imports, variables, files) is preserved across executions. Keep code concise to minimize tool call latency. Avoid unnecessary comments. | |
| workbenchArtifactId | No | Pin a specific snapshot from MULTI_EXECUTE (workbenchArtifactId); omit to use the latest for this session. | |
| useWorkbenchSnapshot | No | When true (default), fetch the latest Flowra workbench JSON for this session (from MULTI_EXECUTE + syncResponseToWorkbench) before your code runs; exposed as FLOWRA_WORKBENCH_SNAPSHOT. Set false to skip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
FLOWRA_MANAGE_CONNECTIONSManage app connectionsIdempotentInspect
Connect the user to an app, or check whether an app is already connected. Pass the toolkit slugs you need; connections are per end user and several toolkits can be checked in one call.
mode:
"connect" (default): if not already active, start the normal connect flow (may return redirectUrl / requires_parameters).
"status": read-only. Never mint OAuth/consent links or create INITIATED rows. Returns active / not_connected / no_auth_required / needs_setup only.
Each toolkit comes back with a status you must handle:
active / no_auth_required: ready — go execute the app's tools.
not_connected: only when mode is "status" — no active connection; call again with mode "connect" (or omit mode) when the user wants to connect.
initiated: redirectUrl is set. Show that one markdown link and stop. Do not call this tool again until the user says they finished connecting in the browser. Then call with the same toolkits to confirm it is active. A verify call must not mint a second link (wasReinitiated stays false).
requires_parameters: the user must supply credentials. Ask for exactly the fields listed in requiredParameters, showing each field's description, then call again with specifyCustomAuth.
requires_challenge: only when this status is returned. Ask for exactly the fields in requiredParameters, then call again with challengeResponse: { connectionId, plus those field names }. Do not invent a verification step when this status is absent.
needs_setup: a secondary end user cannot connect yet because project App credentials are missing. Tell them the app is not ready; never ask them for client_id, client_secret, or other app-level secrets. (Project default / owner instead gets requires_parameters for those App credential fields.)
failed: read errorMessage before retrying.
When talking to the user, use the label field (email, username, or app name). Never show a connection UUID.
Use specifyCustomAuth to activate an API key, bearer token, basic auth, or pasted cookies directly, without opening a browser. Pass session.id from FLOWRA_DISCOVER_TOOLS when you are continuing the same discovery session.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | connect (default): may start OAuth/consent when not active. status: read-only check — never mint redirectUrl or INITIATED rows. | connect |
| session | No | Optional meta session.id from DISCOVER for correlation (not required for OAuth). | |
| toolkits | Yes | List of toolkit slugs (base like 'gmail' or project-scoped like 'gmail:abc123') to check or connect. Prefer base slugs from CREATE_OR_UPDATE_TOOLKIT / DISCOVER_TOOLS — project suffix is resolved automatically. Never invent slugs. | |
| reinitiateAll | Yes | Force reconnection for ALL toolkits in the `toolkits` list, even if they already have active connections. DEFAULT: false (preserve existing active connections). Ignored when mode is status. | |
| challengeResponse | No | Continue a pending challenge only after status is requires_challenge. Pass connectionId plus the field names from requiredParameters. Do not send this unless that status was returned. | |
| specifyCustomAuth | No | Agent-friendly way to provide per-toolkit credentials and connection fields. Outer object: keys are toolkit names (must match entries in `toolkits`). Inner object: credentials for that toolkit. Supported patterns: API Key {"apiKey": "YOUR_KEY"}, Bearer Token {"bearerToken": "YOUR_TOKEN"}, Basic Auth {"username": "USER", "password": "PASS"}, Cookie {"cookies": "..."}, email/password {"email":"...","password":"..."}, Custom OAuth {"client_id": "...", "client_secret": "..."}, plus any field names from the toolkit authConfigDetails. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
FLOWRA_MULTI_EXECUTE_TOOLRun app toolsDestructiveInspect
Run up to 50 action tools in parallel and return every result inline. Only type="action" tools — triggers and webhooks cannot be executed here.
This is how you run any tool that is not already bound as a direct function. Get the exact slug from FLOWRA_DISCOVER_TOOLS or a Known tools list, load its input schema with FLOWRA_GET_TOOL_SCHEMAS (or set includeInputSchemas on DISCOVER and reuse those), and call FLOWRA_MANAGE_CONNECTIONS first if the toolkit has no active connection. Never invent a slug or an argument. Never emit an unbound slug as a tool_call name — only this function runs those slugs, via tools[].toolSlug.
tools must be a non-empty array of { toolSlug, arguments }. Never pass tools: [] or omit tools. If you only have a JSON string, parse it into that array first.
Batch only independent calls; keep a dependent step in a later call so you can read the previous result first. When a result implies more pages, keep going until you have everything.
Never wrap a tool that waits for the user (for example a choice prompt) here. If one is bound, call it directly and wait.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Action tools to run in parallel (max 50). Not triggers. Must contain at least one { toolSlug, arguments } — never []. | |
| memory | No | Durable facts worth reusing later, as {app: ["fact"]} — ids and mappings, not "sent/fetched" logs. Pass {} when there are none. | |
| session | No | Meta session.id from DISCOVER (workbench correlation; auth is user-scoped) | |
| thought | No | One-sentence rationale | |
| syncResponseToWorkbench | Yes | Store a workbench snapshot for REMOTE_BASH / JS_REMOTE_WORKBENCH (results still return inline). Needs session.id. Only set true when a sandbox tool is available and the output is large or worth scripting over. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
FLOWRA_REMOTE_BASHBash sandboxDestructiveInspect
Run bash on the same remote sandbox as FLOWRA_JS_REMOTE_WORKBENCH for this session.id. Files under /home/user/files stay between calls. The shell itself starts fresh each time.
With session.id and useWorkbenchSnapshot (default true), the latest FLOWRA_MULTI_EXECUTE_TOOL snapshot is at /home/user/files/multi_execute.json (also FLOWRA_WORKBENCH_JSON). That snapshot only exists if the earlier call set syncResponseToWorkbench: true.
Use this for shell work on those files: jq, grep, sort, unzip, wc, listing directories. It has no run_tool, invoke_llm, or proxy_execute helpers and keeps no variables between calls. To call app tools, an LLM, or a connected API from the sandbox, or to keep state across steps, use FLOWRA_JS_REMOTE_WORKBENCH. Neither tool can call FLOWRA_MULTI_EXECUTE_TOOL or any other meta tool.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The bash command to execute | |
| session | No | ALWAYS pass session.id from DISCOVER when provided (or omit in chat — threadId is used). | |
| workbenchArtifactId | No | Specific snapshot id returned as workbenchArtifactId by MULTI_EXECUTE; omit to use the latest snapshot for this session. | |
| useWorkbenchSnapshot | No | When true (default), inject the latest Flowra workbench JSON for this session (from MULTI_EXECUTE + syncResponseToWorkbench) before your command. Set false to run raw bash only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | Error if any occurred during the execution of the action |
| message | No | |
| successful | No | Whether or not the action execution was successful or not |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- Changed
FLOWRA_DISCOVER_TOOLS1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "guidance": {}, + "inventory": { + "description": "Set in inventory mode. Omitted in select mode.", + "properties": { + "limit": {}, + "nextOffset": { + "anyOf": [ + {}, + {} + ], + "description": "Pass as offset to continue; null on the last page" + }, + "offset": {}, + "total": { + "description": "Tools matching toolkitSlugs and query" + }, + "truncated": { + "description": "True when another page exists" + } + } + }, + "mainToolSlugs": { + "items": {} + }, + "notFoundToolkitSlugs": { + "description": "Requested toolkitSlugs that did not resolve", + "items": {} + }, + "pitfalls": { + "items": {} + }, + "reasoning": {}, + "relatedToolSlugs": { + "items": {} + }, + "session": { + "properties": { + "id": {}, + "instructions": {} + } + }, + "timeInfo": { + "properties": { + "currentTime": {}, + "message": {} + } + }, + "toolSchemas": { + "propertyNames": {} + }, + "toolkitConnectionStatuses": { + "items": { + "properties": { + "description": {}, + "hasActiveConnection": {}, + "message": {}, + "toolkit": {} + } + } + }, + "toolkits": { + "items": {} + }, + "validatedPlan": { + "items": {} + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
- Changed
FLOWRA_GET_TOOL_SCHEMAS1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "executionHint": { + "description": "How to run these slugs — they are not bound functions" + }, + "notFound": { + "description": "Slugs not found", + "items": {} + }, + "session": { + "description": "Echoed session — never minted here", + "properties": { + "id": { + "description": "Meta session id (empty if none)" + }, + "instructions": { + "description": "How to reuse session.id" + } + } + }, + "success": { + "description": "True when every requested slug was found" + }, + "toolSchemas": { + "description": "Definitions keyed by toolSlug", + "propertyNames": {} + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
- Changed
FLOWRA_JS_REMOTE_WORKBENCH1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "error": { + "default": "", + "description": "Error message if any" + }, + "results": { + "anyOf": [ + { + "propertyNames": {} + }, + { + "items": {} + }, + {}, + {}, + {}, + {} + ], + "description": "The parsed result of the code execution (object, array, or primitive)" + }, + "results_file_path": { + "anyOf": [ + {}, + {} + ], + "description": "Path to file containing full results if output was truncated" + }, + "session": { + "anyOf": [ + { + "properties": { + "id": { + "description": "Meta session identifier" + }, + "instructions": { + "description": "Instructions for session reuse" + } + } + }, + {} + ], + "description": "Meta session echoed back to reinforce reuse: { id: string, instructions: string }" + }, + "stderr": { + "description": "The standard error output from the command" + }, + "stderr_file_path": { + "anyOf": [ + {}, + {} + ], + "description": "Path to file containing full stderr if output was truncated" + }, + "stdout": { + "description": "The standard output from the command" + }, + "stdout_file_path": { + "anyOf": [ + {}, + {} + ], + "description": "Path to file containing full stdout if output was truncated" + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
- Changed
FLOWRA_MANAGE_CONNECTIONS1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "message": { + "description": "Overall status message" + }, + "results": { + "description": "Connection results for each toolkit", + "propertyNames": {} + }, + "summary": { + "description": "Summary of results by status type", + "propertyNames": {} + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
- Changed
FLOWRA_MULTI_EXECUTE_TOOL1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "errorCount": { + "description": "Failures" + }, + "results": { + "description": "Results in input order", + "items": { + "properties": { + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error message when failed" + }, + "index": { + "description": "Index in the request tools array" + }, + "response": { + "anyOf": [ + { + "propertyNames": {} + }, + {} + ], + "description": "Payload { data, error, logId, successful } on success and failure" + }, + "success": { + "description": "Whether execution succeeded" + }, + "toolSlug": { + "description": "Executed tool slug" + } + } + } + }, + "successCount": { + "description": "Successes" + }, + "totalCount": { + "description": "Tools executed" + }, + "workbenchArtifactId": { + "description": "Snapshot id when syncResponseToWorkbench; pass to REMOTE_BASH or omit for latest" + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
- Changed
FLOWRA_REMOTE_BASH1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "sandbox_id_suffix": { + "description": "Last 4 digits of the sandbox ID for easier reference" + }, + "session": { + "anyOf": [ + { + "properties": { + "id": {}, + "instructions": {} + } + }, + {} + ], + "description": "Meta session echoed back to reinforce reuse: { id: string, instructions: string }" + }, + "stderr": { + "description": "The standard error output from the command, possibly truncated for brevity." + }, + "stderrLines": { + "description": "Total number of lines in original stderr, even if truncated" + }, + "stderr_file_path": { + "anyOf": [ + {}, + {} + ], + "description": "Path to file containing full stderr if output was truncated" + }, + "stdout": { + "description": "The standard output from the command, possibly truncated for brevity." + }, + "stdoutLines": { + "description": "Total number of lines in original stdout, even if truncated" + }, + "stdout_file_path": { + "anyOf": [ + {}, + {} + ], + "description": "Path to file containing full stdout if output was truncated" + } + } + }, + "error": { + "anyOf": [ + {}, + {} + ], + "description": "Error if any occurred during the execution of the action" + }, + "message": {}, + "successful": { + "description": "Whether or not the action execution was successful or not" + } + }, + "type": "object" +}
1 tool update
- Changed
FLOWRA_DISCOVER_TOOLS5 fields changed- added
Input schema / allOfAdded value: +[ + { + "else": { + "anyOf": [ + { + "required": [ + "queries" + ] + }, + { + "required": [ + "toolkitSlugs" + ] + } + ] + }, + "if": { + "properties": { + "mode": { + "const": "inventory" + } + }, + "required": [ + "mode" + ] + }, + "then": { + "required": [ + "toolkitSlugs" + ] + } + } +] - added
Input schema / properties / queries / minItemsAdded value: +1 - changed
Input schema / properties / query / descriptionPrevious value: -"Inventory only. Case-insensitive match on slug, name, or description. Omit for the first page of the toolkit. Ignored in select mode."New value: +"Inventory only. Whole-word match on slug, name, or description (issue matches issues, not issued). Omit for the first page of the toolkit. Ignored in select mode." - added
Input schema / properties / toolkitSlugs / minItemsAdded value: +1 - changed
Input schema / requiredPrevious value: -[ - "userMessage", - "intentSummary", - "includeInputSchemas" -]New value: +[ + "userMessage", + "intentSummary" +]
1 tool update
- Changed
FLOWRA_DISCOVER_TOOLS6 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Inventory page size. Default 40, max 50. Ignored in select mode.", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / modeAdded value: +{ + "description": "select (default): smallest set of tools for one action. inventory: one page of tools in toolkitSlugs, optional query filter, no selection model. Use inventory to list or search an app catalog (for example GitHub issue tools).", + "enum": [ + "select", + "inventory" + ], + "type": "string" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Inventory page start. When inventory.truncated is true, pass inventory.nextOffset. Default 0. Ignored in select mode.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / queries / descriptionPrevious value: -"Use cases to search in parallel. Required unless toolkitSlugs is set."New value: +"Use cases to search in parallel. Required in select mode unless toolkitSlugs is set. Ignored in inventory mode." - added
Input schema / properties / queryAdded value: +{ + "description": "Inventory only. Case-insensitive match on slug, name, or description. Omit for the first page of the toolkit. Ignored in select mode.", + "type": "string" +} - changed
Input schema / properties / toolkitSlugs / descriptionPrevious value: -"Exact catalog toolkit slugs (gmail, slack). Pins important tools from those apps. Not ACTION slugs."New value: +"Exact catalog toolkit slugs (gmail, github). select: pins important tools. inventory: required, lists that app. Not ACTION slugs."
6 tool updates
- First observed
FLOWRA_DISCOVER_TOOLS - First observed
FLOWRA_GET_TOOL_SCHEMAS - First observed
FLOWRA_JS_REMOTE_WORKBENCH - First observed
FLOWRA_MANAGE_CONNECTIONS - First observed
FLOWRA_MULTI_EXECUTE_TOOL - First observed
FLOWRA_REMOTE_BASH
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.