Fluxion Bus
The Fluxion Bus MCP server enables a primary AI agent to delegate scoped tasks to local AI executors and manage their full lifecycle.
Submit sub-agent tasks: Delegate a prompt to Codex, Claude Code, or Antigravity with configurable read-only or workspace-write modes, model selection, session/thread continuity, async or blocking execution, and project/workspace targeting.
List available models: Query selectable models for a given executor, enriched with pricing context, to make informed per-run model overrides.
Manage projects: List all configured Fluxion projects or retrieve a specific project by key for proper workspace and project targeting.
List recent runs: Browse sub-agent task history, filterable by agent, status, project, or path prefix.
Poll task status: Check the current status of a running or completed task, with long-polling support, progress signals, recent output tail, changed files, and diff summaries.
Cancel a running task: Request cancellation of an active sub-agent run.
Revert workspace changes: Undo recoverable text-file modifications made by a specific run to safely roll back workspace edits.
Retrieve task results: Fetch a structured result for a completed run, optionally including raw output and full execution logs.
Enables remote task submission and control of local executors via LINE messages, with progress updates and result delivery.
Enables remote task submission and control of local executors via Slack messages, with progress updates and result delivery.
Enables remote task submission and control of local executors via Telegram messages, with progress updates and result delivery.
Enables remote task submission and control of local executors via WeChat messages, using iLink QR-code login for account binding.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fluxion Busdelegate code review to Claude Code"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
https://github.com/user-attachments/assets/7ff8be14-f4e6-4bd9-9ceb-bbf425fafba3
Illustrative demo with staged data, not a live recording.
Fluxion Bus is the open-source project behind the Fluxion macOS app and local agent gateway.
Fluxion lets your primary AI agent delegate scoped tasks across Codex, Claude Code, and Antigravity through one local MCP server.
Stay inside your current agent while Fluxion routes work to another provider, preserves sessions, reports progress and results, and records file changes for review or recovery.
Fluxion also reads provider-reported quota windows, detects and notifies you when the provider resets them, and can automatically make a minimal Agent call after a reset to start the next rolling window immediately.
Quota and usage data are not limited to tasks delegated through Fluxion. Fluxion reads them directly from provider APIs, local agent services, or local agent histories; it does not calculate provider quota from Fluxion task records.
Local-first, single-tenant, and self-hosted. No Fluxion account or SaaS
dependency; default exposure is 127.0.0.1.
Why Fluxion
Cross-provider delegation without leaving your primary agent
┌────────────────────────────────────────────┐
│ Primary agent │
│ Codex / Claude Code / Antigravity │
└─────────────────────┬──────────────────────┘
│ MCP: delegate scoped subtask
▼
┌──────────────────┐
│ Fluxion MCP │
│ route + supervise│
└────────┬─────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
Codex Claude Code Antigravity
│ │ │
└────────────┼────────────┘
▼
status / result / changed files / revert
│
▼
Primary agentRoute each subtask to a different provider.
Continue executor-native sessions across repeated calls.
Choose read-only investigation or explicitly authorized edits.
Inspect async status, logs, artifacts, and changed files.
Revert recoverable text-file changes after review.
Turn quota resets into usable windows
Claude quota Codex quota Antigravity quota
└───────────────┬──────────────────┘
▼
┌─────────────────┐
│ Fluxion quota │
│ monitor + sched │
└────────┬────────┘
│
┌────────────┼──────────────┐
▼ ▼ ▼
Web UI macOS app Reset detected
│
Auto Ping + notify
Slack/Telegram/WeChat/LINE/QQ/FeishuSee remaining quota and reset countdowns across providers.
Monitor provider/account quota, including usage made outside Fluxion.
Use the browser-based console on macOS or Linux.
Use the native macOS app for menu bar quota, service controls, and setup.
Detect provider-side quota resets.
Automatically make a minimal Agent call after a detected reset to start the next rolling window.
Send quota-reset notifications through Slack, Telegram, WeChat, LINE, QQ, or Feishu.
Control local agents remotely
Send tasks from Slack, Telegram, WeChat, LINE, QQ, or Feishu while away from your computer. Fluxion routes the message to a local Codex, Claude Code, or Antigravity executor, then returns progress updates and the final result in the same conversation.
Phone / remote device
Slack/Telegram/WeChat/LINE/QQ/Feishu
│
▼
Fluxion messaging gateway
│
▼
Codex / Claude / Antigravity
│
▼
progress updates + final resultRemote conversations preserve their executor session, so follow-up messages can continue the same task context. Users can also inspect recent tasks, check gateway status, reset a conversation, or cancel queued/running tasks through channel control commands.
WeChat uses iLink QR-code login. Bind the account once, enable the channel, and start the same messaging gateway used by the other messaging channels.
Related MCP server: Agent Switchboard
Platform Support
Capability | macOS | Linux | Windows |
MCP cross-provider delegation | Supported | Expected, not verified | Not verified |
Web quota console | Supported | Expected, not verified | Not verified |
Scheduler auto-ping and notifications | Supported | Expected, not verified | Not verified |
Native macOS app | macOS 12+ | Not available | Not available |
Linux support is expected for non-native features based on the implementation, but has not yet been manually verified.
The menu bar app runs on macOS 12 or newer; its Launch at Login toggle requires macOS 13+ and is disabled on macOS 12.
Provider quota probes depend on compatible local credentials or services. Antigravity live quota, for example, requires its local sidecar to be running. The displayed quota comes from those provider or agent sources, not from a counter of tasks routed through Fluxion.
Install and Verify
Requirements:
At least one installed and authenticated executor CLI:
codex,claude, oragyCodex: either the standalone CLI, or the Codex desktop app — its bundled CLI is detected automatically on macOS, and its login satisfies auth.
Python 3.12+ (Python 3.13 recommended) for CLI/backend installs. The macOS desktop app can install
python@3.13through Homebrew when needed.Node 18+ only when rebuilding the Web console frontend locally.
macOS desktop app (recommended)
The desktop app runs on Apple Silicon (M-series) Macs. Intel users should build from source or use the CLI installation below.
The easiest way in is Homebrew:
brew install --cask superposed-labs/tap/fluxionThe cask clears the quarantine flag for you, so there are no Gatekeeper
steps — just launch it. Update later with brew upgrade --cask fluxion.
No Homebrew? Download the Fluxion.app DMG from the latest Release (verify it against SHA256SUMS) and drag it into /Applications. The app is unsigned and not notarized, so Gatekeeper blocks the first launch: either open System Settings → Privacy & Security and click Open Anyway, or run the command below to clear quarantine yourself:
xattr -dr com.apple.quarantine /Applications/Fluxion.appOn first launch, Fluxion uses ~/.local/share/fluxion as the managed backend path and offers Install / Repair. The app then installs the backend from the source snapshot and dependency wheels bundled inside the app, creates .venv, initializes .env, and starts the local services — no git, network access, Xcode Command Line Tools, or local Node build required.
If Python 3.12+ is not already available and Homebrew is installed, the
installer uses Homebrew to install python@3.13; without Homebrew, the app
points you to the python.org installer before setup starts. Executor CLIs such
as codex, claude, or agy still need to be installed and authenticated
separately.
Let your agent configure CLI/MCP
For CLI-first use, MCP registration, or non-desktop installs, the agent you already use can run the backend installation end to end: prerequisites, installer, MCP registration for your client, and verification. Paste this into Claude Code, Codex, or Antigravity from the project directory you want Fluxion to work on:
Read https://raw.githubusercontent.com/superposed-labs/fluxion-bus/main/docs/agent-install.md
and follow it to install and configure Fluxion on this machine. Use the current
directory as the first authorized workspace, register the MCP server with the
client you are running in, then run the verification steps and report the results.The agent follows docs/agent-install.md, which wraps the same installer used below. It finishes with a per-component status report covering the backend CLI, MCP registration, and Web console static assets. The macOS desktop app is distributed separately through the Release DMG.
Manual install
Install or update Fluxion for the current user:
curl -fsSL https://raw.githubusercontent.com/superposed-labs/fluxion-bus/main/scripts/install.sh \
| bash -s -- --no-desktopThe installer uses ~/.local/share/fluxion, links commands into
~/.local/bin, and installs the CLI, Gateway, and MCP commands. The prebuilt
macOS app is distributed through the Release DMG; use the source installer for
backend/CLI setup and development workflows. Run the same command again to
update while preserving .env and data/.
By default, the directory where the install command is run becomes the first authorized workspace. Override it when needed:
curl -fsSL https://raw.githubusercontent.com/superposed-labs/fluxion-bus/main/scripts/install.sh \
| FLUXION_WORKSPACE=/absolute/path/to/project bash -s -- --no-desktopUninstall while preserving configuration and data in a timestamped backup:
~/.local/share/fluxion/scripts/uninstall.shUse --purge only when the configuration and runtime data should also be
deleted.
Development install
For a source checkout used for Fluxion development:
git clone git@github.com:superposed-labs/fluxion-bus.git
cd fluxion-bus
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
# Detect an executor and create a minimal .env with real paths.
fluxion init
# Check configuration, executor availability, and workspace authorization.
fluxion doctor
# Verify the local execution path with a read-only task.
fluxion run "Summarize this project and explain how to run its tests."Allow edits explicitly:
fluxion run --write "Fix the failing tests."Initialize Fluxion for another workspace:
fluxion init --workspace /absolute/path/to/project
fluxion doctor --workspace /absolute/path/to/project
fluxion run --workspace /absolute/path/to/project "Inspect this project."fluxion init creates a deliberately small .env; .env.example
mirrors that minimal shape for manual setup. For advanced manual configuration,
see .env.advanced.example,
Configuration, and scripts/install.sh.
MCP Delegation Quick Start
Register fluxion-mcp with the primary agent where you already work. Complete
client-specific examples for Claude Code, Codex, and Antigravity are in the
MCP reference.
Example Claude Code registration:
claude mcp add -s user \
-e FLUXION_ENV_FILE=<fluxion-repo>/.env \
-e FLUXION_WORKSPACE_ROOT=<fluxion-repo> \
-e FLUXION_DATA_DIR=<fluxion-repo>/data \
fluxion -- <fluxion-repo>/.venv/bin/fluxion-mcpThe primary agent can then delegate a focused subtask:
{
"agent": "claude",
"project": "web",
"profile": "inspect",
"mode": "read-only",
"prompt": "Investigate why the login form is submitting twice."
}Fluxion returns a run_id. The primary agent can inspect status, fetch the
result, cancel the run, review changed files, or revert a reviewed
workspace-writing run through the same MCP server.
For multi-project usage, configure project keys with
FLUXION_PROJECTS_FILE; see Project registry.
Quota Monitoring Quick Start
Web Console
If you installed the prebuilt app or used the installer, the console is ready. Start it directly:
fluxion-web # http://127.0.0.1:8765(If running from a Git clone or rebuilding static assets: cd web && npm install && npm run build && cd .. before running the command).
macOS Menu Bar App
If you downloaded the prebuilt Fluxion.dmg, drag it into /Applications and open it.
If building the menu bar app from your local source checkout (this compiles natively for your machine's architecture, whether Apple Silicon or Intel):
npm --prefix web ci
npm --prefix web run build
./desktop/build.sh
open desktop/Fluxion.appdesktop/build.sh reuses this Web console build on later runs. It does not
rebuild the frontend automatically.
The menu bar app can configure and start quota monitoring, automatic pings,
reset notifications, and companion services. The actual background auto-ping
and notification work is performed by fluxion-scheduler, which also runs
without the menu bar app on Linux.
The app can remain inside the repository or be copied to /Applications. When
launched outside the repository, it asks the user to select the Fluxion source
checkout and stores that path under ~/Library/Application Support/Fluxion/.
fluxion-schedulerSee Quota monitoring and Scheduler for provider sources, configuration, and always-on deployment.
Messaging Channels
fluxion-gateway accepts remote tasks from Slack, Telegram, WeChat, LINE, QQ,
and Feishu and submits them through the same router used by MCP and the local
CLI. It replies in the same conversation with execution status and the final
result.
fluxion-gatewaySee Configuration for channel and workspace settings.
Provider Gateway
fluxion-provider exposes Fluxion's local agent executors (such as Claude, Codex, or Antigravity) as an API provider endpoint (http://127.0.0.1:8787). External tools call it instead of a metered model API, and the work runs on a CLI you already have a subscription for. It speaks the OpenAI Responses API (Codex sub-agents) and the Anthropic Messages API (Claude Code).
fluxion-provider init
fluxion-provider serveRouting Codex's own sub-agents is discontinued on Codex 0.149 and later. Codex stopped letting an agent role choose its
model_provider(upstream commit1a6e07a4fe, #39299 — deliberate hardening, with a test that keeps it closed), so afluxion_workerspawn inherits the parent session's provider, runs on your own OpenAI model, and never reaches the gateway. Nothing errors. Fluxion refuses to install the integration on those versions. Usemcp__fluxion__run_subagentinstead; it launches local agents directly and is unaffected. Details in Provider Gateway.
On Codex 0.148 and earlier, to route Codex's sub-agents to Fluxion:
Open Fluxion Preferences → Provider Routing.
Confirm that Provider Gateway is running.
Under Codex Integration, click Install / Repair.
Choose the Codex model used for role capabilities and usage attribution, then install.
Restart Codex so it loads the new role files.
This installs fluxion_auto, fluxion_worker, fluxion_explorer, and
fluxion_reviewer. Name the role explicitly when delegating, for example:
“Use the fluxion_worker role to inspect this change.”
This native Codex integration is separate from registering the Fluxion MCP
server. MCP registration exposes mcp__fluxion__* tools; Codex Integration
routes Codex's own spawn_agent roles through the Provider Gateway. You can
use either integration independently.
For a CLI-only install:
fluxion-provider install-codex-config --model gpt-5.6-terraSee Provider Gateway for model selection, verification, read-only routing constraints, security token setup, and diagnostic commands.
Documentation
Architecture — full system diagram, surfaces, shared state, and project layout
Agent-assisted installation — step-by-step install instructions written for an AI agent to execute
MCP reference — client setup, tools, status states, cancel, and safe revert flows
Quota monitoring — provider sources, Web console, macOS app, privacy, and notifications
macOS app — release packaging, managed backend,
/Applicationsinstallation, and development overrideUsage statistics — agent-history coverage, independence from Fluxion delegation, cost estimates, and Fast-mode limitations
Scheduler — auto-ping, quota-reset triggers, cron rules, and deployment
Provider Gateway — local provider endpoint, auth tokens, and Codex integration
Configuration — executors, authorization, channels, Web UI, and environment variables
Deployment — launchd and systemd service templates
License
Apache License 2.0 — see also NOTICE.
Available Tools
13 toolscancel_subagent_runB
Request cancellation for an active sub-agent run in this MCP process.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses 'Request cancellation' but does not disclose whether the cancellation is asynchronous, what success/error responses look like, or if there are side effects (e.g., resource cleanup). With no annotations provided, the description carries the full burden and falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with no redundant words. However, it lacks structural elements like examples or additional context that could improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and zero annotation coverage, the description should provide more details about return values, error handling, or cancellation semantics. It is incomplete for a cancellation request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'run_id' lacks any description in the schema or the tool description. The description adds no meaning beyond the parameter name, failing to clarify format, source, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('cancel') and the resource ('active sub-agent run'), distinguishing it from sibling tools like 'run_subagent' (creation) and 'revert_subagent_run' (revert).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as 'get_task_status' or 'revert_subagent_run'. The purpose is implied but no context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
force_cancel_subagent_runA
Cancel a run that plain cancel_subagent_run cannot reach.
Use after cancel_subagent_run reports the run is unknown to this process, or a run has been non-terminal far longer than it should be.
Runs are owned by the Fluxion process that started them. If this process owns it, the request is delivered to the executor and terminates its whole process group. If another LIVE process owns it, this reports that owner and changes nothing — closing the record here would leave that agent running. If the owner is gone, the run is closed out as INTERRUPTED.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden of behavioral disclosure. It details the destructive nature (terminating the whole process group when owned by this process), the no-op with owner reporting when another process owns it, and the INTERRUPTED close-out when the owner is gone. This is rich, essential context for a forceful operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, purposeful paragraphs: first states the core function, second gives usage triggers, third explains behavioral outcomes. Every sentence earns its place with no fluff or repetition, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains the tool's role within the broader lifecycle, including ownership semantics and three possible branches. The output schema likely handles return values, so no further description is needed. For a cancellation tool with significant edge cases, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter, run_id, with only a 'Run Id' title and no description. The tool description does not mention run_id at all beyond referencing 'a run' generically, so it adds no semantics about ID format, validation, or usage. With 0% schema description coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Cancel a run that plain cancel_subagent_run cannot reach,' which uses a specific verb, identifies the resource (a run), and clearly distinguishes this from the sibling cancel_subagent_run. It immediately conveys the tool's unique purpose as a fallback escalation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: after cancel_subagent_run reports the run is unknown, or when a run has been non-terminal for too long. It also explains the three ownership scenarios and their outcomes, giving the agent clear context for when to invoke this tool and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fluxion_statusA
Which Fluxion is serving this session, and what it is doing.
Returns the installation actually in use (code root, .env path, data dir, version, git commit), the settings THIS process loaded at startup, its queue/worker state, other live Fluxion processes, and current workspace locks with their holders.
Use it when a config change appears to have had no effect: config is read once at startup, and a dev checkout and an installed copy can each have their own .env. config_file_changed_since_start=true means the file was edited after this process read it — restart to apply.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so admirably. It discloses that config is read once at startup, that dev and installed copies can have separate .env files, and explains the meaning of config_file_changed_since_start. This is rich behavioral context beyond a simple 'get status'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, opening with a clear question that summarizes the purpose, then listing the return scope, and closing with a practical usage tip. Every sentence earns its place without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the existence of an output schema, the description is complete. It explains what information is returned, highlights a key diagnostic scenario (config not taking effect), and provides necessary background about startup config loading. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly adds no parameter-specific details because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: reporting which Fluxion installation is serving the session and its current state. It enumerates specific details returned (code root, .env, queue/worker state, locks), which distinguishes it from sibling tools focused on projects, agents, and tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance to use when a config change appears ineffective, explaining the startup-only config read. This is clear context, though it does not explicitly state when not to use the tool or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectC
Return one configured Fluxion project by key.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'Return,' implying a read operation. It does not disclose behavior on missing keys, authorization requirements, or any side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at one sentence, front-loading the action and resource. However, brevity sacrifices necessary detail, earning a high score for conciseness but not for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and an output schema, the description should provide more context on return format, error handling, or relationship to sibling tools. It lacks sufficient context for reliable tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; the description only mentions 'by key' without clarifying what constitutes a key (e.g., name or ID). The parameter name 'project' is uninformative, and no further semantics are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States 'Return one configured Fluxion project by key,' clearly specifying the action, resource, and scope (one project). This distinguishes it from sibling 'list_projects' which returns all projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'list_projects'. While 'one' vs 'list' implies distinction, explicit when-to-use or when-not-to-use context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_resultA
Get a model-friendly result view, optionally including raw output.
With include_output=true, stdout/stderr are the agent's own output.
An executor runtime log (Antigravity's agy log) is returned separately
as executor_log, with its transport-level glog chatter filtered out —
folding it into stdout buried the agent's answer under hundreds of lines
of plumbing. Pass raw=true for the unfiltered persisted record.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | ||
| run_id | Yes | ||
| include_output | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It does this excellently by explaining that stdout/stderr are the agent's own output, that the executor_log is returned separately with glog chatter filtered out, and that raw=true provides the unfiltered record. This goes beyond what a typical tool description provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, opening with the core purpose and then adding necessary detail about output composition. Every sentence adds value, explaining not just what happens but why (avoiding buried answers). It is thorough without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description is complete. It covers the nuanced behavior of include_output and raw, the separation of executor_log, and the filtering rationale. The absence of explicit return value details is acceptable because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by explaining include_output and raw in detail, clarifying their effects on the returned result. run_id is self-explanatory from its name, so the description covers the critical parameter semantics effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get a model-friendly result view' with the option for raw output, specifying the verb 'Get' and the resource 'task result'. This distinguishes it from siblings like get_task_status (status vs result) and list_subagent_runs (list vs single result).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: when a model-friendly result view is needed, optionally with raw output. It explains the behavior of include_output and raw, but does not explicitly name alternatives or exclusions, like using get_task_status for status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_statusA
Get model-friendly status and next action for a Fluxion run.
The default response is compact for polling. It includes the run status, terminal/cancel hints, progress_signal, recent_output_tail, log freshness, and next_action. Pass detail=true to include the full status view with repeated metadata such as timestamps, subagent metadata, changed_files, diff_summary, artifacts, and change_set_file.
Pass wait_ms > 0 to long-poll: the call blocks until the run reaches a terminal status or the wait elapses, then returns. wait_ms is capped at FLUXION_MCP_STATUS_MAX_WAIT_MS (default 60000 = 60s) to stay under the MCP client's per-call request timeout, so a still-running task just returns RUNNING — call again to keep waiting. This collapses a busy-poll loop into one blocking call per cap. Raise the env var if your client tolerates longer requests (set it to the client's tool timeout minus a margin).
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | ||
| run_id | Yes | ||
| wait_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so richly. It discloses blocking behavior with wait_ms, the cap on wait time (60s), the fact that a still-running task returns RUNNING, the compact vs detailed response distinction, and the environment variable override. This goes well beyond a simple status getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. The first paragraph states exactly what the tool does. The second explains response options, and the third explains long-polling behavior. Each sentence contributes valuable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, this description is highly complete. It covers the default response, optional detail, long-polling behavior, timeout cap, and environment variable. Since an output schema exists, the description need not enumerate return fields, and it doesn't unnecessarily repeat what structured data could convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains detail (compact vs full metadata) and wait_ms (long-poll, blocking, cap). run_id is only implicitly referenced ('for a Fluxion run'), but its meaning is self-evident from the schema and name. Overall, the description adds significant meaning for two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets 'model-friendly status and next action for a Fluxion run,' using a specific verb and resource. It distinguishes the tool from siblings like get_task_result by focusing on model-friendly, polling-oriented output, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: it is designed for polling, with a compact default response and optional long-polling via wait_ms. It does not explicitly mention when not to use it or compare with sibling tools like get_fluxion_status, but the polling use case is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agent_modelsA
List likely selectable models for one executor, sorted high to low.
Codex uses codex debug models when available. Antigravity uses agy models
when available. Claude Code does not expose a stable local model catalog, so
models[] contains known CLI aliases and the configured model. Every catalog is
enriched with the local price table when possible.
Pass a chosen models[].id to run_subagent(model=...). price_references[] is pricing context only and may not be valid as a model override. Provider, base URL, and auth remain settings-level config.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | auto | |
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses that the tool uses different CLI backends (Codex, Antigravity, Claude Code), that Claude Code lacks a stable catalog so aliases are used, and that catalogs are enriched with local price tables where possible. It also clarifies that price_references[] is not an override and that provider/auth remain settings-level config. This is rich, honest behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a lead sentence stating the core purpose, followed by targeted paragraphs explaining backend behavior and usage caveats. Every sentence adds value—no fluff or repetition. The length is appropriate for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no annotations and an output schema that is not shown, the description explains what is returned (models[], price_references[]), how it behaves per agent, and how to use the output. It covers edge cases (Claude Code) and explicitly warns about the validity of price references. For a list tool, this is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the two parameters (agent, project). The description says 'for one executor' which hints at the agent parameter, and mentions different agent CLIs, but does not explicitly explain 'project' or the default/resolution of 'auto'. The description adds some context but does not fully compensate for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'List likely selectable models for one executor, sorted high to low.' It clearly distinguishes this from sibling tools like list_projects (projects) and list_subagent_runs (runs), and the subsequent details about per-agent CLI backends reinforce the unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Pass a chosen models[].id to run_subagent(model=...)' which tells the agent exactly how to use the result. It also warns that price_references[] is context-only and not a valid override. However, it does not explicitly state when *not* to use this tool or select among alternatives, though the context implies it is the precursor to run_subagent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List configured Fluxion projects available for sub-agent runs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It only states the tool lists projects, leaving out behavioral details like authentication requirements, caching behavior, or whether it shows all or only accessible projects. For a simple list, this may suffice, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema, and simple listing functionality, the description is complete enough for an agent to understand the tool's purpose. However, missing behavioral details slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description adds no parameter information since none is needed. Baseline of 4 for zero parameters is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'List configured Fluxion projects'. It uses a verb+resource structure and distinguishes from sibling tools like 'get_project' (singular) and 'run_subagent' (action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing projects but does not provide explicit guidance on when to use this tool vs alternatives like 'get_project' or 'run_subagent'. No exclusions or conditional advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subagent_runsC
List recent Fluxion sub-agent runs from the local task store.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| limit | No | ||
| status | No | ||
| project | No | ||
| agent_path_prefix | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must compensate. It says 'list recent ... from local task store' implying read-only, but lacks explicit disclosure of safety, authentication requirements, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise but underinformative. Lacks crucial details like filtering capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 undocumented optional parameters and no annotations, the description is insufficient. Existence of output schema not leveraged in description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and description does not explain any of the 5 parameters (agent, limit, status, project, agent_path_prefix). No added meaning beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'list' and resource 'sub-agent runs' from 'local task store'. It's specific but doesn't distinguish from sibling tools like get_task_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_task_status, get_task_result). Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_tasksA
Close out runs whose owning Fluxion process no longer exists.
A process that dies mid-run leaves its tasks recorded as RUNNING forever; this marks those INTERRUPTED so status polls stop reporting work that is not happening. Runs owned by a live process are never touched. This also happens automatically when a Fluxion process starts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains that only runs with a dead owning process are affected and that live processes are never touched. It also clarifies the marking as INTERRUPTED and the automatic behavior, providing meaningful safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It opens with the core action, then explains the problem and the safeguard, and ends with an important automatic behavior note. Every sentence contributes valuable information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters) and the existence of an output schema, the description is complete. It covers purpose, behavior, scope, safety, and automatic triggering, which is sufficient for an agent to understand when and how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. Therefore, there are no parameter semantics to clarify. The description does not need to compensate for missing schema information, making the baseline score of 4 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: closing out runs whose owning Fluxion process no longer exists. It uses specific language like 'marks those INTERRUPTED' and distinguishes itself from related tools by focusing on reconciliation, not listing or cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is relevant: after a process dies mid-run, leaving tasks stuck as RUNNING. It also notes automatic invocation at Fluxion startup, which helps the user understand when manual use is necessary. However, it does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_subagent_runC
Revert recoverable text-file changes recorded for one Fluxion run.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must bear the full burden. It only states the action without disclosing side effects, destructive nature, permissions required, or behavior on invalid inputs (e.g., non-existent run_id).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words, effectively communicating the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits important contextual details such as what 'recoverable text-file changes' means, the return value (despite an output schema existing), and any prerequisites. Given the simple parameter count, it feels incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the description adds no meaning beyond the parameter name 'run_id'. It does not explain what a run_id is, its format, or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action (revert) and the resource (recoverable text-file changes for one Fluxion run). It distinguishes from sibling tools like 'cancel_subagent_run' and 'run_subagent' by focusing on reverting changes rather than canceling or starting runs, providing a clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives is provided. The description does not mention when not to use it, any prerequisites, or relationships to other tools like 'cancel_subagent_run'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_subagentA
Submit a local Fluxion executor as a sub-agent task.
By default (wait_for_result=false) this returns as soon as the task is queued: you get a run_id — poll get_task_status and read get_task_result once terminal. Set wait_for_result=true for small smoke checks that should block until done; if the wait elapses first the task continues in the background (queued or running, bounded by task_timeout_sec) and is collected later via get_task_result with the run_id (the run is not canceled). For long or open-ended work prefer the default. timeout_sec only limits this blocking wait; it is not the executor runtime limit. The actual task execution cap is settings.task_timeout_sec.
agent: "auto" (default; uses the configured default) or one of "claude", "codex", "antigravity".
workspace: directory the agent runs in. With a configured project, "." is the
project root. WITHOUT a project (the default), pass an ABSOLUTE path to the
target repo — "." resolves against the server's workspace_root, not the caller's
cwd, so it is rarely what you want. Use list_projects to see configured projects.
profile/mode: for edit/fix/implement tasks set profile=implement and mode=workspace-write; the defaults profile=inspect / mode=read-only are intentionally read-only.
Workspace authorization: an unapproved workspace makes this call wait in place for the user to approve the notification Fluxion just raised (up to FLUXION_MCP_AUTHORIZATION_WAIT_MS, default 60s), then run normally — so an approved task usually needs no follow-up at all. If the user has not answered by then it returns error_code=WORKSPACE_NOT_AUTHORIZED with pending=true and an authorization_request_id. That is a pending HUMAN decision, not a transient failure, so retrying right away cannot succeed: call wait_for_authorization with that id instead of ending your turn to ask the user to report back. Retry this call only when the wait reports approved (pass the same id) or project-allowed (pass no id). If it reports denied, report the refusal instead of re-requesting.
task_name: optional free-form label for the run. It is shown as-is in the UI and also slugified into the agent-path segment (lowercased, non [a-z0-9] runs collapsed to _), so spaces, uppercase, and hyphens are all accepted — no need to pre-format it.
model: optional per-run model override for executors that support model selection. Leave empty to use the executor's configured/default model. To choose explicitly, call list_agent_models first and pass one of the returned models[].id values. Do not pass price_references[].id; those entries are pricing context only and may not be accepted by the executor. model is not a provider selector: provider, base URL, and auth remain settings-level configuration. Ping tasks keep their cheapest-model default unless model is explicitly set.
reasoning_effort: optional per-run reasoning depth, e.g. "low", "medium",
"high", "xhigh", "max". Valid values differ per model — read
models[].supported_reasoning_efforts from list_agent_models; asking for one
a model does not publish returns error_code=MODEL_UNRESOLVED listing what it
does publish, rather than silently running at a neighbouring effort. Leave
empty for the model's own default. Antigravity encodes effort in the model
id (gemini-3.7-flash-high); pass models[].id plus reasoning_effort and
Fluxion selects the published variant, or pass one of models[].variants
verbatim. The run payload reports what was actually used as
effective_model / effective_reasoning_effort.
thread / session_policy scope which executor session is reused. Default
(empty thread) = a FRESH isolated session per call: independent tasks don't
resume, so they can't inherit stale context or have their workspace edits
reconciled away by a resumed agent. To CONTINUE a prior run (resume — reuses
the agent's context, saving tokens), pass the SAME stable thread string on
each call. session_policy is "auto" (default), "continue", or "new" (force a
brand-new session even for a reused thread). Note: a resumed Antigravity run
may reconcile the workspace to its remembered state, so avoid editing the
workspace out-of-band between two same-thread runs.
Results: both are finalized only at terminal status (changed_files_available
stays false until then). changed_files is the authoritative, run-scoped list of
what THIS run touched — act on it. diff_summary.files mirrors that count, but its
additions/deletions are NOT measured per run and are always 0, flagged by
lines_counted=false — a whole-tree git diff --stat would fold in pre-existing
edits and earlier runs, so no line total is reported rather than a misleading
one. For exact line counts, run git diff over the changed_files yourself.
artifacts is not an inventory of files the run produced: it lists only files the agent explicitly declared for delivery via ACTIONS_JSON.upload_files, which it is prompted to do only when asked to send files. Screenshots and other by-products of the work appear in changed_files, not here.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | read-only | |
| agent | No | auto | |
| model | No | ||
| prompt | Yes | ||
| thread | No | ||
| profile | No | inspect | |
| project | No | ||
| client_id | No | mcp | |
| task_name | No | ||
| workspace | No | . | |
| parent_path | No | /root | |
| timeout_sec | No | ||
| include_stdout | No | ||
| session_policy | No | auto | |
| wait_for_result | No | ||
| reasoning_effort | No | ||
| authorization_request_id | No | ||
| include_subagent_preamble | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden — and it delivers. It discloses the queued-return behavior, that timeout_sec is not the runtime limit, that a pending WORKSPACE_NOT_AUTHORIZED is a human decision rather than a transient failure, that retrying immediately cannot succeed, that resumed Antigravity runs may reconcile the workspace, and that diff_summary.additions/deletions are always 0 with lines_counted=false to avoid misleading numbers. These are exactly the behavioral traits an agent cannot infer from a schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every paragraph earns its place given 18 parameters plus async, authorization, and session semantics; the essential async/wait model is front-loaded. It loses a point for being a dense wall of paragraphs — parameter-by-parameter explanations in a long prose format lack visual scannability for an agent, and the wait_for_result/timeout story is told with some redundancy across the first and third paragraphs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool of this complexity — async lifecycle, authorization gate, session reuse, per-run model overrides, and result-interpretation traps — the description is remarkably complete. It covers the full operational flow (submit → poll → collect, with the authorization detour), the actual runtime cap (settings.task_timeout_sec), and even interprets output semantics (changed_files authoritative, artifacts only via ACTIONS_JSON.upload_files) beyond what the output schema would convey. The four lightly-documented parameters are minor and carry sensible defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it covers most of the 18 parameters in depth, going far beyond names: workspace path resolution against server workspace_root, agent enum values, profile/mode defaults vs. edit-task recommendations, task_name slugification rules, the price_references trap for model, reasoning_effort per-model validity with the MODEL_UNRESOLVED fallback, and thread/session_policy reuse semantics. Minor deduction: client_id, parent_path, include_stdout, and include_subagent_preamble receive no explanation, which with 0% schema coverage leaves small gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Submit a local Fluxion executor as a sub-agent task' names a specific verb and resource, and the submission role is unambiguous against the sibling set (wait_for_authorization, get_task_status, cancel_subagent_run, get_task_result all handle lifecycle stages, not submission). The description goes further by clarifying the async submission semantics, so an agent knows exactly what this entry point does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance with named alternatives: use wait_for_result=true for 'small smoke checks', prefer the default for long/open-ended work, call list_agent_models before choosing a model, use list_projects to resolve configured projects, and call wait_for_authorization instead of retrying on a pending decision. It also states explicit exclusions: do not pass price_references[].id, and do not retry until the wait reports approved. This is exemplary routing and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_authorizationA
Wait for the user's decision on a pending workspace authorization request.
When run_subagent returns error_code=WORKSPACE_NOT_AUTHORIZED with pending=true, the workspace is waiting on a HUMAN: Fluxion has raised a notification and the user must approve it. Retrying the task immediately cannot succeed. Call this tool with the returned authorization_request_id instead of ending your turn to ask the user to report back — they approve while this call is waiting.
Pass wait_ms > 0 to long-poll: the call blocks until the request leaves "pending" or the wait elapses. wait_ms is capped at FLUXION_MCP_STATUS_MAX_WAIT_MS (default 60000 = 60s) to stay under the MCP client's per-call request timeout, so an unanswered request just comes back pending — call again to keep waiting, and tell the user you are waiting on their approval.
Act on status, not on the fact that the call returned:
approved: retry the original run_subagent with the same authorization_request_id (the returned retry_authorization_request_id).
project-allowed: the user granted the workspace permanently; retry the task WITHOUT authorization_request_id.
pending: still undecided; keep waiting or ask the user. Do NOT retry.
denied: the user refused. Do NOT retry and do NOT raise the same request again; report the refusal.
expired / consumed / active / not-found: this request id is finished. Submit a fresh run_subagent without an authorization_request_id if the work is still wanted.
next_action states the same thing in one sentence; should_retry is true only
when retrying will actually be authorized.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_ms | No | ||
| authorization_request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses that the call blocks, that wait_ms is capped, that an unanswered request returns pending, that the agent should act on status rather than return, and that certain statuses mean the request id is finished. It also notes the human-approval dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence earns its place. It front-loads the core purpose, then moves from trigger condition, to polling behavior, to status-specific actions. The bullet list makes the status semantics scannable rather than burying them in prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with no annotations, yet the description covers trigger, blocking behavior, timeout handling, retry rules, and every status outcome. The output schema exists and is supplemented by the explicit next_action/should_retry explanation, so nothing critical is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it fully does. It explains where authorization_request_id comes from (the run_subagent error), and gives detailed semantics for wait_ms: long-polling, capping, and repeated polling on timeout. This goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'Wait for the user's decision on a pending workspace authorization request.' It immediately ties the tool to the run_subagent error condition, so an agent can distinguish this from listing, canceling, or status tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call this tool (after run_subagent returns WORKSPACE_NOT_AUTHORIZED with pending=true), why retrying immediately cannot succeed, and when to keep waiting or stop waiting. It also gives action-by-action retry instructions for each status, which is unusually clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.6.0- Changed
run_subagent1 field changed- added
Input schema / properties / reasoning_effortAdded value: +{ + "default": "", + "title": "Reasoning Effort", + "type": "string" +}
2 tool updates
v1.5.0- Changed
run_subagent2 fields changed- added
Input schema / properties / authorization_request_idAdded value: +{ + "default": "", + "title": "Authorization Request Id", + "type": "string" +} - added
Input schema / properties / client_idAdded value: +{ + "default": "mcp", + "title": "Client Id", + "type": "string" +}
- Added
wait_for_authorization
6 tool updates
v1.2.0- Added
force_cancel_subagent_run - Added
get_fluxion_status - Added
get_task_status - Added
list_agent_models - Added
reconcile_tasks - Added
run_subagent
3 tool updates
v1.0.11- Removed
get_task_status - Removed
list_agent_models - Removed
run_subagent
9 tool updates
v1.0.1- First observed
cancel_subagent_run - First observed
get_project - First observed
get_task_result - First observed
get_task_status - First observed
list_agent_models - First observed
list_projects - First observed
list_subagent_runs - First observed
revert_subagent_run - First observed
run_subagent
TDQS
Each tool targets a distinct operation: submission, status polling, result retrieval, normal vs forced cancellation, reconciliation, revert, project/model lookup, server status, and authorization waiting. The two cancel tools are explicitly staged as normal/force with clear usage rules, so no real ambiguity remains.
Almost all tools follow verb_noun snake_case, but terminology is slightly mixed: run_subagent/list_subagent_runs use 'subagent run' while get_task_status/get_task_result use 'task.' The compound verb in force_cancel_subagent_run and reconcile_tasks' short 'tasks' are minor deviations, not a chaotic pattern.
13 tools is appropriate for a subagent orchestration server: core run lifecycle, recovery/escalation, project/model introspection, and authorization waiting are all covered. No tool feels like filler; each serves a distinct operational need.
The surface covers the full run lifecycle — submit, poll, retrieve result, cancel, force-cancel, revert, and reconcile orphaned runs — plus prerequisites like project/model lookup and human authorization waiting. There are no obvious dead ends or missing operations for the intended workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local MCP server that connects AI coding agents (Claude Code, Codex, Cursor, etc.) on the same machine via a shared message bus, enabling them to chat, delegate tasks, and collaborate privately without cloud or internet.3017MIT
- FlicenseNot gradedqualityAmaintenanceA local MCP server that connects AI coding agents like Claude, Codex, and Gemini, enabling task routing, cross-model debates, and token-efficient context sharing without external APIs.12-
- AlicenseAqualityFmaintenanceMCP server for running external coding agents as background tasks inside Claude Code. Supports multiple backends including Codex, Grok, GLM, DeepSeek, and more.7MIT
- AlicenseAqualityBmaintenanceLocal MCP server that exposes delegation tools for Codex, Claude, and Antigravity CLI, enabling an orchestrator agent to assign tasks to these sub-agents via non-interactive CLI commands.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/superposed-labs/fluxion-bus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server