{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_4u39s8hzcmsg","handle":"run-zero","url":"https://wellknown.network/agents/run-zero","links":{"self":"https://wellknown.network/agents/run-zero/record.json","html":"https://wellknown.network/agents/run-zero","markdown":"https://wellknown.network/agents/run-zero/record.md","api":"https://wellknown.network/api/v1/agents/run-zero","status":"https://wellknown.network/api/v1/agents/run-zero/status","claim":"https://wellknown.network/agents/run-zero/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/run-zero/claim.json","badge":"https://wellknown.network/agents/run-zero/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/run-zero/history","tools":"https://wellknown.network/api/v1/agents/run-zero/tools"},"ard":{"identifier":"urn:air:api.run-zero.de:server:run-zero","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"run.zero","summary":"Deploy apps, APIs and Postgres from your AI agent. EU PaaS hosted in Germany, OAuth sign-in.","description":"Deploy apps, APIs and Postgres from your AI agent. EU PaaS hosted in Germany, OAuth sign-in.","publisher":{"name":"de.run-zero","url":null},"homepage":"https://run-zero.de/en/features/mcp","repository":"https://github.com/getitdone-gmbh/run-zero-mcp","version":"1.0.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.run-zero.de/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-11-04T15:24:24.757387Z","publishedAt":"2026-11-04T15:24:24.757387Z","registryName":"de.run-zero/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"media.image-generation","name":"Image Generation","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":1,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.885,"provenance":"derived"},{"slug":"infra.desktop","name":"Desktop Control","confidence":0.569,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.54,"provenance":"derived"}],"categories":["analytics","data","dev","infra","media","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-11-07T05:30:15.606Z","lastProbedAt":"2026-11-07T05:30:15.606Z","statusComputedAt":"2026-11-07T05:33:46.943Z","reliability30d":{"probes":6,"successRate":1,"p50Ms":20,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":6,"ok":6,"authBoundaryOk":0,"serviceOk":6,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-07T05:30:15.606Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":18,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"ff3ca8b7b2056a21a5e2a6143270f48cdc7ecf095e7185e2ec20f7057aa654c0","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-06T21:31:23.024Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":22,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"ff3ca8b7b2056a21a5e2a6143270f48cdc7ecf095e7185e2ec20f7057aa654c0","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-06T13:29:47.310Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":18,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"ff3ca8b7b2056a21a5e2a6143270f48cdc7ecf095e7185e2ec20f7057aa654c0","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-06T04:30:06.490Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"ff3ca8b7b2056a21a5e2a6143270f48cdc7ecf095e7185e2ec20f7057aa654c0","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-05T20:26:24.545Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":33,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"2e23ab60850b28b99eb823112708c8b66b8a4793d7ee5bce2c8ca54805d3435c","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-05T11:24:41.771Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":22,"error":null,"detail":{"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"toolCount":50,"toolsHash":"2e23ab60850b28b99eb823112708c8b66b8a4793d7ee5bce2c8ca54805d3435c","serverName":"run-zero","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"runzero_get_help","description":"Look up structured guidance on platform concepts and conventions. Topics: workflow, files, addons, procfile, domains. Call this whenever you need to understand "},{"name":"runzero_list_apps","description":"List the apps the authenticated user has access to (own + collaborated), newest first — one compact row each (name, slug, url, kind, status, flags). Details of "},{"name":"runzero_get_app","description":"Get one app: slug, status, publish mode, services (URL, replicas, health, env var NAMES), addons, domains. Secret values are never returned."},{"name":"runzero_create_app","description":"Create a new app. Optionally links to a Git repository — if no repo is given, you can attach one later."},{"name":"runzero_list_templates","description":"List the curated template library: finished, deployed page designs (landing pages, shops, portfolios …) that can be adopted as the starting point of a NEW app i"},{"name":"runzero_adopt_template","description":"Create a NEW app as a full copy of a template from runzero_list_templates: app + repo + running instance, owned by the caller. Use this INSTEAD of runzero_creat"},{"name":"runzero_list_services","description":"List the services (runtime processes) of an app with their build source, port, replicas and status."},{"name":"runzero_get_logs","description":"Get the runtime log output of one service (stdout/stderr of its running containers), last N lines."},{"name":"runzero_get_metrics","description":"CPU and memory usage of a service over a time window (default last hour). Returns per-pod current/min/max/avg — CPU in millicores, memory in MiB — not raw time "},{"name":"runzero_screenshot","description":"SEE the deployed page with your own eyes: renders the live URL in a real browser and returns fresh screenshots as images — desktop (1280×800) and/or mobile (390"},{"name":"runzero_rebuild_service","description":"Rebuild a service from the latest commit of its repo branch; on success the new version rolls out to the live URL. Use after an external repo changed; pushes vi"},{"name":"runzero_delete_app","description":"Permanently delete an app with all its services, addons (including database data), secrets and domains. Irreversible: only on an explicit request, and name the "},{"name":"runzero_deploy","description":"Deploy an app. Fetches the repo and checks for run-zero.yaml (or the older itdone.yaml). If found, syncs all services + addons + domains from config. If not, de"},{"name":"runzero_deploy_preview","description":"Preview what a deploy would change without making any changes. Use this before runzero_deploy to verify the diff."},{"name":"runzero_add_service","description":"Add a new service to an app. Clones the repo, builds with buildpacks, and deploys. The web process must listen on $PORT."},{"name":"runzero_delete_service","description":"Permanently delete one service of an app: its running containers, its public URL and its configuration. Irreversible, and it also deletes the persistent volume "},{"name":"runzero_scale_service","description":"Set the replica count of a service (0-10). Scaling to 0 takes the service offline (its URL stops answering) without deleting it; scale up again to bring it back"},{"name":"runzero_volume_status","description":"Show the persistent volume of a service: mount path, size, last backup, the backups that can be restored, and the state of a running or last restore. Volumes ar"},{"name":"runzero_backup_volume","description":"Start a backup of the persistent volume now, on top of the automatic daily one. The service keeps running. It runs in the background; runzero_volume_status list"},{"name":"runzero_restore_volume","description":"Replace the data on the persistent volume with a backup. The service stops, the current data is backed up first, the backup is unpacked, and the service starts "},{"name":"runzero_set_secrets","description":"Set one or more environment variables for an app or a specific service. Existing keys are overwritten; other keys are preserved. Affected services are redeploye"},{"name":"runzero_list_secrets","description":"List the secret keys for an app (values are never returned). Includes both app-wide and per-service secrets."},{"name":"runzero_delete_secret","description":"Delete a single secret from an app or a service. Affected services are redeployed automatically."},{"name":"runzero_list_builds","description":"List recent build records for an app. Returns kpack Build status (success/failed/running) per service. To WAIT for a build to finish, use runzero_wait_for_build"},{"name":"runzero_list_versions","description":"Earlier versions of a service that can be put back online, newest first. Each entry has an `image` (pass it to runzero_activate_version or runzero_preview_versi"},{"name":"runzero_preview_version","description":"Show an earlier version under a SECOND address without touching the live site — use this whenever the user wants to look before deciding. Returns a url; the pod"},{"name":"runzero_work_url","description":"The URL where this app's UNPUBLISHED changes can be looked at, and a link that opens it (the plain hostname refuses without one). Call this after EVERY change t"},{"name":"runzero_list_releases","description":"What the user has PUBLISHED, newest first, with the sentence they described each change with, and which one visitors see right now. This is the list to use when"},{"name":"runzero_publish","description":"Put the waiting changes on the real site — this is what VISITORS see, so only ever on an explicit request (\"mach das live\", \"veröffentliche das\"), never on your"},{"name":"runzero_restore_release","description":"Put an earlier published state back on the real site. Use the id from runzero_list_releases. This CHANGES what visitors see. It does not touch the code: anythin"},{"name":"runzero_set_publish_mode","description":"Switch between publishing every change immediately (auto) and collecting changes on a preview until the user releases them (manual). Explain the consequence bef"},{"name":"runzero_activate_version","description":"Put an earlier version back online — this CHANGES what visitors see. Only do this when the user explicitly asks to go back; never on your own initiative after a"},{"name":"runzero_wait_for_build","description":"Wait server-side until the newest build of an app is finished AND the new version is serving traffic — use this INSTEAD of polling runzero_list_builds, sleeping"},{"name":"runzero_get_build_logs","description":"Get the full log stream for a specific build (all kpack steps concatenated). Use runzero_list_builds first to find the build id."},{"name":"runzero_push_files","description":"Push changes into the app's Git repository as ONE atomic commit (create, patch, and delete in a single push). CHANGING an existing file? Use `edits` — an exact-"},{"name":"runzero_list_files","description":"List all files in the app's Git repository (platform-managed repos only). Optionally filter by path prefix."},{"name":"runzero_read_file","description":"Read a file from the app's Git repository (platform-managed repos only), UTF-8. Returns at most 250 lines per call (a note at the end says how to continue) — re"},{"name":"runzero_upload_assets","description":"Get the dashboard upload link for an app so the USER can upload binary assets (icons, images, fonts) via drag & drop — real bytes, nothing travels through the m"},{"name":"runzero_list_users","description":"List the end-users of an app's login realm (requires the app's keycloak addon). Returns id, username, email and enabled state."},{"name":"runzero_create_user","description":"Create an end-user in the app's login realm. Returns the generated password ONCE if none is given — relay it to the user, it cannot be retrieved later."},{"name":"runzero_delete_user","description":"Permanently delete an end-user (account, sessions, login data) from the app's login realm. Irreversible; to only block the login use runzero_set_user_enabled."},{"name":"runzero_reset_user_password","description":"Replace an end-user's password in the app's login realm; the old one stops working at once. Returns the new password ONCE (generated if none given)."},{"name":"runzero_set_user_enabled","description":"Enable or disable (block) an end-user in the app's login realm. A disabled user cannot log in but is not deleted."},{"name":"runzero_list_identity_providers","description":"List external login providers (Google, GitHub, …) configured on the app's login realm. Secrets are never returned."},{"name":"runzero_create_identity_provider","description":"Add an external login provider (Google, GitHub, Microsoft, generic OIDC/SAML) to the app's login realm, so end-users can sign in with it. You need an OAuth clie"},{"name":"runzero_generate_image","description":"Generate an image with AI (FLUX) and commit it into the app's repo. Costs credits. Use for hero images, backgrounds, illustrations. The file is committed at the"},{"name":"runzero_db_query","description":"Run one SQL statement against an app's PostgreSQL addon (owner/admin only). Read-only by default: the statement runs in a READ ONLY transaction that is rolled b"},{"name":"runzero_describe_addon","description":"Show exactly which environment variables an addon injects into an attached service, straight from the platform (the source of truth — use this instead of guessi"},{"name":"runzero_get_legal_profile","description":"Get the user's saved legal profile (their Impressum details: name/company, address, contact, and for a company the representative, register and VAT id). Read th"},{"name":"runzero_set_legal_profile","description":"Save or update the user's legal profile so it is reused across their apps and the legal pages can be regenerated. Send only what the user actually provided; omi"}],"package":null,"toolSurface":{"id":"ts_epwk84us26zd","endpointId":"ep_8yxhjcd492dn","hash":"ff3ca8b7b2056a21a5e2a6143270f48cdc7ecf095e7185e2ec20f7057aa654c0","toolCount":50,"serverName":"run-zero","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-06T04:30:06.491Z","lastSeenAt":"2026-11-07T05:30:15.614Z","observations":4,"hiddenText":{"level":"none","total":0,"tools":0,"kinds":[],"findings":[]},"toolNames":["runzero_get_help","runzero_list_apps","runzero_get_app","runzero_create_app","runzero_list_templates","runzero_adopt_template","runzero_list_services","runzero_get_logs","runzero_get_metrics","runzero_screenshot","runzero_rebuild_service","runzero_delete_app","runzero_deploy","runzero_deploy_preview","runzero_add_service","runzero_delete_service","runzero_scale_service","runzero_volume_status","runzero_backup_volume","runzero_restore_volume","runzero_set_secrets","runzero_list_secrets","runzero_delete_secret","runzero_list_builds","runzero_list_versions","runzero_preview_version","runzero_work_url","runzero_list_releases","runzero_publish","runzero_restore_release","runzero_set_publish_mode","runzero_activate_version","runzero_wait_for_build","runzero_get_build_logs","runzero_push_files","runzero_list_files","runzero_read_file","runzero_upload_assets","runzero_list_users","runzero_create_user","runzero_delete_user","runzero_reset_user_password","runzero_set_user_enabled","runzero_list_identity_providers","runzero_create_identity_provider","runzero_generate_image","runzero_db_query","runzero_describe_addon","runzero_get_legal_profile","runzero_set_legal_profile"],"distinctSurfaces":2,"surfacesWithHiddenText":0},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"de.run-zero/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/de.run-zero%2Fmcp","firstSeenAt":"2026-11-05T09:18:32.413Z","fetchedAt":"2026-11-05T09:18:32.413Z","normalizedAt":"2026-11-05T09:18:32.413Z"}]},"firstSeenAt":"2026-11-05T09:18:32.413Z","updatedAt":"2026-11-07T05:34:57.299Z"}