{"endpoint":"https://cloud.myhub.host/mcp","transport":"Streamable HTTP","authentication":"OAuth; one organization per connection. hub:read for inspection, hub:write for changes. Organization roles still apply.","tools":[{"name":"hub_whoami","title":"Check Hub login","description":"Show the authenticated account, selected organization and control plane. Connect your account through browser OAuth when authorization is required.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_usage","title":"Read plan and usage","description":"Read the selected organization’s plan, limits, allocation usage and AI Credits in USD. Runtime inventory is not billable compute metering.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_runtime","title":"Inspect runtime and sleep policy","description":"Inspect runtime without waking the app. Pass operation to poll a runtime change until succeeded, failed, expired or unknown. Use hub_app_runtime_set to change sleep policy.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"operation":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_runtime_set","title":"Change sleep policy","description":"Choose exactly one setting: sleepAfter only if every service can pause between HTTP requests, or alwaysOn for background work. Changes affect the entire instance and return an operation ID. Poll hub_app_runtime with operation until succeeded, failed, expired or unknown. Start a sleeping instance before changing policy.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"sleepAfter":{"type":"integer","minimum":5,"maximum":86400},"alwaysOn":{"type":"boolean","const":true}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_suspend","title":"Suspend instance to RAM","description":"Pause all services while retaining RAM and disk. Requests can wake it. Background work pauses too. Waits for completion by default. Set wait=false to return an operation ID; verify it with hub_app_runtime and operation. Linked dependencies may prevent suspension.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"wait":{"description":"Wait for completion; default true.","type":"boolean"}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_apps","title":"List apps","description":"List apps and instances in the selected organization with URLs, access, and release status.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_deploy","title":"Deploy an app","description":"Deploy the pushed branch of a GitHub repository. Returns a release immediately; poll hub_app_status with its number. Changed GitHub sources return deploy_conflict unless replacement is explicitly confirmed with force. Managed Workspace cannot be replaced. Public repositories clone anonymously. Set watch=true for push-to-deploy. Private repositories and push-to-deploy require a GitHub grant and return an install link when needed.","inputSchema":{"type":"object","properties":{"force":{"description":"Confirm changing the GitHub source of an existing app. Only set after the user authorizes replacement of this target. Cannot replace managed Workspace.","type":"boolean"},"name":{"type":"string","minLength":1,"description":"Explicit app name to create or update."},"instance":{"description":"Instance name; default prod.","type":"string"},"public":{"description":"Make a NEW instance public only when requested. Existing access is preserved; use hub_app_access to change it.","type":"boolean"},"branch":{"description":"GitHub branch; defaults to repository default. Only with git.","type":"string"},"path":{"description":"Repository subfolder, only with git.","type":"string"},"watch":{"description":"Redeploy GitHub source on push; omitted preserves the setting for the same repository, otherwise defaults false; watching requires a GitHub grant. Only with git.","type":"boolean"},"git":{"type":"string","minLength":1,"description":"GitHub owner/repository or GitHub URL. Push changes before deploying."}},"required":["name","git"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_status","title":"Check app or release","description":"Read runtime status and URL, or check an exact release number from deploy. A queued/building/starting release is still in progress. A failed or superseded release is terminal; do not report it as a successful deployment.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"release":{"description":"Exact release number returned by deploy.","type":"integer","exclusiveMinimum":0,"maximum":999999999}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_logs","title":"Read recent logs","description":"Return a finite log snapshot, build-first while a release is in progress. Use build and release to investigate a failed release. Output is bounded to the requested trailing lines and 64,000 characters; truncated marks clipped output.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"tail":{"description":"Trailing lines; default 200, maximum 1000.","type":"integer","minimum":1,"maximum":1000},"service":{"description":"Compose service; default the public service.","type":"string"},"build":{"description":"Read the build log instead of runtime output.","type":"boolean"},"release":{"description":"Exact release number returned by deploy.","type":"integer","exclusiveMinimum":0,"maximum":999999999}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_releases","title":"List releases","description":"List release history for one explicit app or instance.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_redeploy","title":"Redeploy an app","description":"Deploy the GitHub branch head again, or rebuild the current uploaded artifact. Returns a release immediately; poll its exact number using hub_app_status.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_access","title":"Read or change access","description":"Omit mode to read access. Set private (owner and invitees), org (organization and invitees), or public (anyone without login) only when the user requested that audience. Applies to the named instance.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"mode":{"type":"string","enum":["private","org","public"]}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_env","title":"List environment names","description":"List environment variable names, build-time flags and update times for the target. Secret values are never returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_env_set","title":"Set environment variables","description":"Set runtime variables, or include them at build time with build=true. Returns changed names and any queued release immediately, never values. This may restart or rebuild the app; poll the returned release number. Use only values authorized for this app.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"values":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]*$"},"additionalProperties":{"type":"string"},"description":"Variable names mapped to their string values. Values are sent securely to Hub and never returned."},"build":{"description":"Make these variables available while building as well as at runtime.","type":"boolean"}},"required":["target","values"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_env_unset","title":"Remove environment variables","description":"Remove the named variables. Returns removed names and any queued release immediately; poll its release number. May restart or rebuild the app.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"names":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]*$"},"description":"Names to remove; no values."}},"required":["target","names"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_rollback","title":"Roll back an app","description":"Create a new release from an earlier release. Omit release to choose the newest successful release older than the serving release. Returns the new release immediately; poll its exact number. Does not roll back database contents or environment variables.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"release":{"description":"Earlier release number to restore; default the newest successful release older than the serving release.","type":"integer","exclusiveMinimum":0,"maximum":999999999}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_start","title":"Start an app","description":"Start an app that was stopped. Inspect hub_app_status afterward to verify its services.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"wait":{"description":"Wait for completion; default true. Set false to return an operation ID to poll with hub_app_runtime.","type":"boolean"}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_stop","title":"Stop an app","description":"Stop the named app instance. This interrupts service until it is started again; existing data is retained.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"wait":{"description":"Wait for completion; default true. Set false to return an operation ID to poll with hub_app_runtime.","type":"boolean"}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_app_restart","title":"Restart an app","description":"Restart the named app instance without rebuilding it. This can briefly interrupt service. Inspect hub_app_status afterward.","inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"description":"Explicit app or app/instance, for example my-app/staging. Defaults to prod only when instance is omitted."},"wait":{"description":"Wait for completion; default true. Set false to return an operation ID to poll with hub_app_runtime.","type":"boolean"}},"required":["target"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"hub_validate","title":"Validate hub.yaml","description":"Validate hub.yaml text without uploading or reading local files. A manifest is optional for auto-detected projects.","inputSchema":{"type":"object","properties":{"manifest":{"type":"string","maxLength":65536,"description":"Contents of hub.yaml; maximum 64 KiB of UTF-8 text."}},"required":["manifest"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["ok"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"execution":{"taskSupport":"forbidden"}}],"resources":[{"name":"hub-deploy-skill","title":"Hub deployment skill","uri":"hub://skills/deploy","description":"A concise deployment workflow using MCP or CLI.","mimeType":"text/markdown"}]}