{"ok":true,"name":"flux_build_spec","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","components"],"properties":{"name":{"type":"string","maxLength":63,"minLength":1,"description":"Unique app name: letters, digits, inner hyphens. Not starting with \"flux\" or \"zel\"."},"nodes":{"type":"array","items":{"type":"string"}},"owner":{"type":"string","description":"Flux ID that will own the app. Defaults to the configured or passed key."},"months":{"type":"number","maximum":12,"description":"Term in network months (88000 blocks each). Default 1.","exclusiveMinimum":0},"contacts":{"type":"array","items":{"type":"string"},"maxItems":5},"staticip":{"type":"boolean"},"instances":{"type":"integer","maximum":100,"minimum":1,"description":"Copies on distinct nodes. Default 3."},"components":{"type":"array","items":{"type":"object","required":["image","cpu","ram","hdd"],"properties":{"cpu":{"type":"number","description":"Cores, 0.1 to 15 in 0.1 steps."},"env":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"array","items":{"type":"string"}}]},"hdd":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"GB."},"ram":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"MB, multiple of 100."},"name":{"type":"string","maxLength":63},"image":{"type":"string","description":"Docker image with an explicit tag."},"ports":{"type":"array","items":{"type":"object","required":["containerPort"],"properties":{"port":{"type":"integer","maximum":65535,"minimum":1,"description":"Public port; auto-picked from 31000-39999 when omitted."},"domain":{"type":"string"},"containerPort":{"type":"integer","maximum":65535,"minimum":1}}}},"commands":{"type":"array","items":{"type":"string"}},"dataPath":{"type":"string","description":"Path inside the container to persist. Default \"/data\"."},"repoauth":{"type":"string"},"description":{"type":"string","maxLength":256},"replicateData":{"type":"boolean","description":"Replicate the data path across instances. Default true."}}},"maxItems":10,"minItems":1},"description":{"type":"string","maxLength":256},"geolocation":{"type":"array","items":{"type":"string"},"maxItems":10},"expireBlocks":{"type":"integer","maximum":1056000,"minimum":1,"description":"Exact term in blocks; overrides months."},"fluxIdPrivateKey":{"type":"string","description":"WIF private key of the Flux ID that owns the app. Use a dedicated key from flux_generate_keys, never a main wallet key."},"paymentPrivateKey":{"type":"string","description":"WIF private key of the Flux address that pays. Fund it with only what you intend to spend."}}},"serverUrl":"https://mcp.runonflux.com/mcp","transport":"http","handshake":"ok","host":"mcp.runonflux.com","score":17,"grade":"F","auth":"unknown","lastScannedAt":"2026-10-30T13:18:52.515Z","stale":false,"permalink":"https://agentboardai.app/mcp/mcp.runonflux.com/flux_build_spec","page":"https://agentboardai.app/site/mcp.runonflux.com"}