Skip to main content
Glama

English | 简体中文 | 日本語

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 agent
  • Route 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/Feishu
  • See 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 result

Remote 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, or agy

    • Codex: 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.13 through Homebrew when needed.

  • Node 18+ only when rebuilding the Web console frontend locally.

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/fluxion

The 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.app

On 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-desktop

The 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-desktop

Uninstall while preserving configuration and data in a timestamped backup:

~/.local/share/fluxion/scripts/uninstall.sh

Use --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-mcp

The 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.app

desktop/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-scheduler

See 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-gateway

See 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 serve

Routing Codex's own sub-agents is discontinued on Codex 0.149 and later. Codex stopped letting an agent role choose its model_provider (upstream commit 1a6e07a4fe, #39299 — deliberate hardening, with a test that keeps it closed), so a fluxion_worker spawn 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. Use mcp__fluxion__run_subagent instead; 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:

  1. Open Fluxion Preferences → Provider Routing.

  2. Confirm that Provider Gateway is running.

  3. Under Codex Integration, click Install / Repair.

  4. Choose the Codex model used for role capabilities and usage attribution, then install.

  5. 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-terra

See 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, /Applications installation, and development override

  • Usage 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 tools
cancel_subagent_runB

Request cancellation for an active sub-agent run in this MCP process.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
run_idYes
include_outputNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNo
run_idYes
wait_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNoauto
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNo
limitNo
statusNo
projectNo
agent_path_prefixNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoread-only
agentNoauto
modelNo
promptYes
threadNo
profileNoinspect
projectNo
client_idNomcp
task_nameNo
workspaceNo.
parent_pathNo/root
timeout_secNo
include_stdoutNo
session_policyNoauto
wait_for_resultNo
reasoning_effortNo
authorization_request_idNo
include_subagent_preambleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_msNo
authorization_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. 1 tool updatev1.6.0
    • Changedrun_subagent1 field changed
      • addedInput schema / properties / reasoning_effort
        Added value: +{
        +  "default": "",
        +  "title": "Reasoning Effort",
        +  "type": "string"
        +}
  2. 2 tool updatesv1.5.0
    • Changedrun_subagent2 fields changed
      • addedInput schema / properties / authorization_request_id
        Added value: +{
        +  "default": "",
        +  "title": "Authorization Request Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / client_id
        Added value: +{
        +  "default": "mcp",
        +  "title": "Client Id",
        +  "type": "string"
        +}
    • Addedwait_for_authorization
  3. 6 tool updatesv1.2.0
    • Addedforce_cancel_subagent_run
    • Addedget_fluxion_status
    • Addedget_task_status
    • Addedlist_agent_models
    • Addedreconcile_tasks
    • Addedrun_subagent
  4. 3 tool updatesv1.0.11
    • Removedget_task_status
    • Removedlist_agent_models
    • Removedrun_subagent
  5. 9 tool updatesv1.0.1
    • First observedcancel_subagent_run
    • First observedget_project
    • First observedget_task_result
    • First observedget_task_status
    • First observedlist_agent_models
    • First observedlist_projects
    • First observedlist_subagent_runs
    • First observedrevert_subagent_run
    • First observedrun_subagent

TDQS

A3.8/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityActive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    30
    17
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    A 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
    -
  • A
    license
    A
    quality
    B
    maintenance
    Local 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.
    3
    MIT

Latest Blog Posts

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