# Flux Cloud

> Deploy, pay for and manage apps on Flux Cloud, the decentralized cloud. Prices in USD.

- name: io.github.RunOnFlux/flux-cloud-mcp
- version: 0.2.8
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 72/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.RunOnFlux%2Fflux-cloud-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.RunOnFlux%2Fflux-cloud-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "flux-cloud-mcp": {
      "type": "http",
      "url": "https://mcp.runonflux.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-4d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 72/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 15 of 15 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 3 of 15 tools declare all four hints; missing: flux_get_identity (destructiveHint, idempotentHint); flux_generate_keys (destructiveHint, idempotentHint); flux_get_network_info (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 6,120 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 15 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @runonflux/flux-cloud-mcp@0.2.8

- tools: 15, about 6,120 tokens to load them all
- tool set hash: a57ea56acbb731aa65d10b663f1358ff
- tools last changed: 2026-10-16T05:02:05.763Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.RunOnFlux/flux-cloud-mcp.svg)](https://protogrid.dev/servers/io.github.RunOnFlux/flux-cloud-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `flux_get_network_info` changed (annotations)
- 2026-10-16 `flux_cancel_app` changed (annotations)
- 2026-10-16 `flux_control_app` changed (annotations)
- 2026-10-16 `flux_get_app_stats` changed (annotations)
- 2026-10-16 `flux_get_app_logs` changed (description, annotations)
  - before: Fetches the last N log lines of an app (or one component of it) from one of the nodes running it. Requires the owner key.
  - after: Fetches the last N log lines of an app from one of the nodes running it. Requires the owner key. The component is picked automatically when the app has one (private apps are decrypted with the owner key); otherwise the available names are listed.
- 2026-10-16 `flux_list_my_apps` changed (annotations)
- 2026-10-16 `flux_get_app` changed (description, inputSchema, annotations) **meaning changed**
  - before: Looks up any app on the network by name and returns its published specification, expiry, running instances and URLs.
  - after: Looks up any app on the network by name and returns its published specification, expiry, running instances, URLs and a reachability check: probes the shared domain (HTTP) and each instance port (TCP and HTTP) and explains what a 503 means, including when it is expected for non-web apps.
- 2026-10-16 `flux_wait_for_app` changed (annotations)
- 2026-10-16 `flux_deploy_app` changed (annotations)
- 2026-10-16 `flux_quote_app` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.RunOnFlux%2Fflux-cloud-mcp/changes

## Dependencies

- npm @runonflux/flux-cloud-mcp@0.2.8: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://mcp.runonflux.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm @runonflux/flux-cloud-mcp@0.2.8 secrets: FLUX_ID_PRIVATE_KEY, FLUX_PAYMENT_PRIVATE_KEY

## Tools (15)

- `flux_build_spec`: Turns images, ports, resources and a term into a complete, correctly formatted v8 specification, with public ports auto-picked and data replication enabled. Returns the spec plus local validation errors and warnings.
- `flux_cancel_app`: Ends an app early by updating its term so it expires within about an hour. The network then uninstalls it everywhere. With confirm=true this signs and pays the (usually minimal) update; without it, returns the plan.
- `flux_control_app`: restart: restarts containers. redeploy: pulls the image again and recreates containers (hard=true also wipes data). remove: uninstalls from nodes; the registration stays and the network re-spawns it elsewhere, so use flux_cancel_app to stop paying. Scope is one node (nodeIp) or every node running the app (global). Requires the owner key.
- `flux_deploy_app`: Validates the specification on a node, quotes it, and with confirm=true signs it with the Flux ID, broadcasts it and pays the quoted FLUX from the payment address. Without confirm it only returns the plan (price, balance, warnings) and spends nothing. Registers a new name or updates an existing app of the same owner. Then call flux_wait_for_app with the returned txid.
- `flux_generate_keys`: Creates two fresh private keys (WIF): one for the Flux ID that will own apps, one for the address that pays. The response contains the secrets; store them in the MCP server environment as FLUX_ID_PRIVATE_KEY and FLUX_PAYMENT_PRIVATE_KEY, then restart the server. Nothing is stored or sent anywhere by this tool.
- `flux_get_app`: Looks up any app on the network by name and returns its published specification, expiry, running instances, URLs and a reachability check: probes the shared domain (HTTP) and each instance port (TCP and HTTP) and explains what a 503 means, including when it is expected for non-web apps.
- `flux_get_app_logs`: Fetches the last N log lines of an app from one of the nodes running it. Requires the owner key. The component is picked automatically when the app has one (private apps are decrypted with the owner key); otherwise the available names are listed.
- `flux_get_app_stats`: CPU, memory and network stats of the containers of an app on one node. Requires the owner key.
- `flux_get_identity`: Returns the Flux ID (app owner address), the payment address and its spendable FLUX balance with its USD value. Explains what to configure if keys are missing. Never returns private keys.
- `flux_get_network_info`: Node counts by tier, current block height, FLUX/USD rate and the deployment payment address.
- `flux_get_pricing`: Returns the current USD rate card, the live FLUX/USD rate, the pay-in-FLUX discount and instant USD estimates for a few reference sizes. Use flux_quote_app for the exact price of a specific app.
- `flux_list_my_apps`: Lists every app registered by the owner (or a given Flux ID) with expiry and instance counts.
- `flux_quote_app`: Returns the Flux Cloud price for registering the given specification, or for updating it if an app of that name already exists (the unused part of the current term is credited). Price is in USD with the FLUX amount at market rate.
- `flux_validate_spec`: Runs the local rule checks, then asks a FluxOS node to verify the specification exactly as it would at registration (image reachable, architecture, ports, name availability). Returns the node-formatted spec on success.
- `flux_wait_for_app`: Polls the network for up to timeoutSeconds (default 45 to fit hosts with a 60 s tool timeout, max 600). Returns payment confirmations, whether the spec was accepted, and the running instances with URLs. Safe to call repeatedly until done=true.
