Security and authorization
Quave ONE evaluates authorization on every MCP request. A client cannot widen the access granted by an OAuth consent screen or MCP key configuration.
| Control | Enforced by | Effect |
|---|---|---|
| OAuth capabilities / MCP-key grants | Quave ONE server | Gates tool discovery and execution. |
| Key enabled status | Quave ONE server | Disabled keys are rejected immediately. |
| Account, role, and environment permissions | Quave ONE server | Applies the same platform authorization as the dashboard. |
| Security level and session duration | MCP client | Controls confirmation and remembered approvals when the client supports them. |
OAuth grants
OAuth grants use one of two server-enforced authorization modes:
- By permissions grants stable Quave ONE capability scopes. Read-only is the default starting selection when the client requested only read access, and the consent screen can show the verified client's full available capability set for an explicit step-up.
- By tools grants an explicit MCP tool allowlist. Quave ONE derives the required capability scopes for the selected tools server-side; unselected tools are not available even if they share a capability.
New OAuth grants do not mix permission mode and tool mode. Connected apps can reduce or revoke the current mode only. To add permissions, add tools, or switch modes, reconnect the client and approve a fresh OAuth request. Conditional or sensitive actions can require a fresh, explicit consent step-up.
MCP-key authorization modes
Every MCP key has one server-enforced mode.
By permissions
By permissions (SCOPES) is the default. The key grants capabilities, and
Quave ONE checks each tool call against them. It preserves the full catalog for
discovery while rejecting an action that is outside the grants.
| Scope | What It Allows | Risk Level | Always Enable? |
|---|---|---|---|
| Read Only | View apps, logs, metrics, and account information | Safe | Yes |
| Read Secrets | View secret environment variables and sensitive data | High Risk | Rarely |
| Write Configurations | Update app configuration, environment variables, and settings | Low Risk | If needed |
| Write Deployments | Deploy, restart, scale, and manage app environments | Medium Risk | If needed |
| Write Dangerous | Delete resources and perform irreversible actions | High Risk | Rarely |
| Manage MCP Keys | Create, update, rotate, reveal, enable, and disable MCP keys with the same or less effective tool access | Critical | Rarely |
| Control Destroy Protection | Enable or disable Prevent destroy on app environments. This controls a safety lock that blocks direct environment deletion and parent app/account deletion, so granting it can both protect resources and remove that protection. | Critical | Rarely |
| Admin | Account-level administrative operations | Critical | Rarely |
By tools
By tools (TOOLS) stores an explicit list of permitted tools. Only selected
tools appear in discovery, and direct calls to an unselected tool are rejected
before its handler runs. A selected tool still requires its normal Quave ONE
account and role checks.
Tool mode is useful when a client should perform a small, fixed workflow. It requires at least one valid tool. Dashboard groups are selection shortcuts; the stored grant is the precise selected-tool list.
Read Only (quave:read) - View apps, logs, metrics, and account information:
list-accounts- Lists all accounts that the authenticated user has access toget-current-account- Gets the current account set for the authenticated userlist-account-events- Lists Quave ONE platform audit/access events for an account. This is platform activity, not application HTTP or ingress access logs.list-apps- Lists all apps for the authenticated userlist-app-envs- Lists all app environments for the authenticated userget-app-env- Gets the full configuration for an app environment including resources, scaling, deployment settings, security, hosts, and pending changes (may also require additional scopes: Read Secrets)get-app-env-status- Gets the current runtime status and health for an app environmentget-app-env-metrics- Gets real-time resource metrics (CPU, memory, container count)get-app-env-history- Gets the deployment history and activity timelineget-app-env-pods- Gets pod-level details for an app environmentget-app-env-metrics-series- Gets historical time-series metrics (CPU, memory) over a time range from Prometheus. Supports time navigation with from/to parameters and configurable resolution.get-app-env-metrics-baseline-summary- Compares a recent window against a longer baseline window for one or more metrics and returns per-metric stats (mean, p50/p95/p99, max, stddev) plus deviation (absolute, percent, z-score) in a single call. Built for anomaly detection — use instead of pulling raw series and computing by hand.get-app-env-log-error-summary- Aggregates error log lines into stable signatures with counts, first/last seen, and a delta vs a prior baseline window — surfacing NEW error patterns that were not present before. Use instead of scrolling raw logs to detect new/regressed errors.list-app-env-variables- Lists environment variables for an app environment. Set showSecrets=true to view secret values (requires quave:read:secrets scope and admin permission). (may also require additional scopes: Read Secrets)list-branch-previews- Lists temporary branch preview environments for an app.check-app-env-cname- Checks if CNAME records are properly configured for region change. All custom hosts must have CNAME records pointing to the ingress URL before changing regions. Not supported for database environments. Use the database-specific tools for supported operations.list-app-env-job-runs- Lists recent JobRun history for a Job app environmentget-app-env-job-run- Gets one JobRun by ID within an app environmentget-app-env-job-run-logs- Retrieves logs for one JobRun with filtering and paginationget-logs- Retrieves logs from an app environment with filtering and searchlist-app-env-backups- Lists database backup files for an app environment. Returns backup metadata only; no secrets are decrypted.list-app-env-volume-backups- Lists customer-safe volume backup recovery points for an app environment. Returns timestamps, snapshot types and sizes, but never storage credentials, object keys or PVC names.get-app-env-backup-overview- Gets a customer-language backup protection summary, retention policy, storage mode and latest validation without exposing schedules, paths or credentials.list-app-env-backup-validations- Lists customer-safe backup validation history for an app environment.preview-app-env-backup-cleanup- Shows the customer-safe retention cleanup outcome without changing backup storage. The newest recovery point is always protected.get-account-backup-overview- Lists customer-safe backup protection, retention, storage mode and aggregate backup usage for every environment in one account.preview-account-backup-cleanup- Previews expired backup data eligible for cleanup across one account. Requires account admin permission; no data is deleted.get-app-env-backup-storage-usage- Gets aggregate database and volume backup storage usage, retention limits and storage mode without exposing bucket names, paths, keys or credentials.list-nodes- Lists infrastructure nodes. Internal Operator users can inspect every configured region; customers only see private regions enabled for their BYOP/Connect account. Returns node name, region, IPs, capacity, and allocatable resources.get-node-metrics-series- Retrieves time-series infrastructure metrics for a specific node from Prometheus. Internal Operator users can query any configured region; customers can query nodes in private regions enabled for their BYOP/Connect account. Supports CPU, memory, disk, network, filesystem, and load metrics.get-account-ingress-metrics-series- Retrieves account-wide nginx ingress time-series metrics from Prometheus, aggregated across every app environment of the account in the chosen region. Supports request rate, success/error rates, status code breakdown, request/response sizes, and P50/P90/P99 latency.get-app-env-ingress-metrics-series- Retrieves nginx ingress time-series metrics from Prometheus for a single app environment (filtered to its k8s service). Supports request rate, success/error rates, status code breakdown, request/response sizes, and P50/P90/P99 latency.get-account-ingress-access-log-summary- Returns aggregated nginx ingress access log buckets for an entire account (namespace), grouped by service/host/path/method/status with count and average/min/max response time. Sourced from the ingress-* Elasticsearch index. For raw individual access log hits use get-logs with type=ACCESS_LOG.get-account-observability-summary- Rollup across every app environment in an account: each env's status plus recent-vs-baseline metric deltas (z-score) in a single call. Use this first for a fast account-wide anomaly sweep, then drill into a specific env with get-app-env-metrics-baseline-summary or get-app-env-log-error-summary. Env count is capped; deep dives should use the per-env tools.get-app-env-ingress-access-log-summary- Returns aggregated HTTP request buckets for a single app environment, grouped by host/path/method/status with count and average/min/max response time. Use this for the same aggregated request data shown in the Requests tab for a Function environment; group Functions by path, method, and status to match that view. Regular apps are sourced from nginx ingress access logs; Functions are sourced from Knative request logs enriched with AppEnvId.list-regions- Lists all available deployment regions with their availability status. Shows which regions are enabled for the account and available for the user based on account tier (Hobby accounts are limited to the Hobby region; Professional accounts unlock all regions). Call this before create-app-env or update-app-env-region to know which regions are available.list-database-presets- Lists regular-user database presets that can be created automatically via the public API (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, ClickHouse). Returns each preset with its name, label, protocol (e.g. mongodb://), isPersistenceOptional flag, available versions (with the default), and per-preset limits (min/max disk MB and max replicas). Call this before create-app or create-app-env on a database to pick the right `dockerPreset`, `dockerPresetVersion`, and to know whether `withPersistence` applies. For database create-app calls, include the standard engine port even though the managed database is provisioned later by create-app-env: MongoDB 27017, PostgreSQL 5432, MySQL 3306, Redis 6379, CouchDB 5984, RabbitMQ 5672, ClickHouse 8123. create-app-env does not take a port. Internal-Operator-only/manual database engines (Elasticsearch, Opensearch, Kafka, etc.) are not returned.list-app-presets- Lists non-database Docker presets that the public API can create (Next.js, Remix, Vite, Vue.js, Express, Node.js variants, Angular, Meteor.js, Custom, Function). Returns each preset with its name, label, hasVersions flag, available versions (with the default), and capability flags (isCustom requires a Dockerfile, isFunction is the serverless preset). Call this before create-app to pick a sensible `dockerPreset` / `dockerPresetVersion`. For database presets use list-database-presets instead.list-solutions- Lists curated Quave ONE solutions available to create. The response contains only safe catalog metadata and never private deployment values.list-members- Lists account members and pending invitations with roles, MFA coverage, and environment-access summary for access review evidence.get-member-env-access- Gets the environment access configuration for a specific member. Shows which environments the member can access, or if they have full access.list-credentials- Lists all account-level credentials (container registries including AWS ECR, basic auth, TLS certificates, ACME wildcards). Returns credential metadata and sync/refresh status without sensitive values.get-credential- Gets details of a specific account-level credential including its type, name, sync status, and non-sensitive metadata. Sensitive fields (passwords, private keys, provider configs) are never returned through the API.list-credential-references- Lists all apps, environments, and hosts that reference a specific credential. Useful before deleting a credential to see what would break.list-agent-automation-options- Lists safe metadata needed to create or edit agent automations: enabled MCP keys, accessible LLM provider keys, contact points, delivery modes, statuses, and common schedules. Does not return secrets.list-agent-automations- Lists agent automations owned by the authenticated user for an account, including schedule, enabled state, next run, and last run summary.get-agent-automation- Gets the full editable configuration for one agent automation owned by the authenticated user.list-agent-automation-runs- Lists automation run history with status, timing, usage, and telemetry summary.get-agent-automation-run- Gets detailed automation run output including transcript, telemetry, deliveries, and optionally tool step details. (may also require additional scopes: Read Secrets)list-llm-provider-keys- Lists personal or account-scoped LLM provider keys without returning API key plaintext.get-llm-provider-key- Gets one LLM provider key metadata record without returning API key plaintext.search-docs- Searches Quave ONE documentation and blog posts using fuzzy matching. Returns relevant pages with excerpts. Use this to find information about deployment, CLI, billing, troubleshooting, and more.read-doc- Reads the full content of a specific documentation page or blog post. Use the path from search-docs results or known documentation paths.list-contact-points- Lists all contact points for an account. Contact points are notification destinations (Slack, PagerDuty, Webhook, Email) used by alerts.get-contact-point- Gets details of a specific contact point including its configuration. Sensitive config fields (like webhook URLs) require admin permission. (may also require additional scopes: Read Secrets)list-alerts- Lists all alerts for an app environment. Shows alert name, metric, threshold, state, and enabled status.get-alert- Gets detailed information about a specific alert including its condition, contact point, and current state.refresh-alert-state- Refreshes the alert state from Grafana. Returns the current state (Normal, Pending, Firing, NoData, Error).
Read Secrets (quave:read:secrets) - View secret environment variables and sensitive data:
get-app-env-backup-download- Returns a time-limited backup download URL and backup decryption material. This is a sensitive operation that requires the quave:read:secrets scope and account admin permission.get-user-token- Retrieves the currently authenticated user profile token (decoded). This is a sensitive operation that requires the quave:read:secrets scope.get-app-env-token- Retrieves the CLI token for a specific app environment (decoded). Requires admin permission on the account that owns the environment.reveal-llm-provider-key- Reveals LLM provider API key plaintext. Requires secret-read scope and emits a secret decrypt audit event.
Write Configurations (quave:write:config) - Update app configuration, environment variables, and settings:
set-current-account- Sets the current account for the authenticated usercreate-account- Creates a new account for the authenticated user. Account names beginning with agent-test create internal test accounts with a 100 zCloud limit, production access to us-5, and staging access to all st-* regions. To add container registry credentials, use the create-credential tool after account creation.update-account- Updates account settings including name. Requires admin permission on the account.set-account-require-mfa- Enable or disable the account-wide two-factor authentication requirement.create-app- Creates a new app within an account. Supports CLI deployments, image deployments, GitHub deployments, and managed database app shells. AI agents should send isCliDeployment: true by default unless the user explicitly provided GitHub repo details; GitHub deployments require gitNamespace, gitRepo, and gitInstallationId. For dockerPreset CUSTOM source builds, dockerfilePath defaults to "Dockerfile" when omitted. Call list-app-presets first to discover non-database presets (Next.js, Meteor.js, Custom, Function, ...) and their versions. For databases, call list-database-presets first, pass isCliDeployment: true plus the standard engine port on create-app, then use create-app-env to provision the cluster. Database creation rules: - Database creation is a two-tool flow: first call create-app with the database dockerPreset, isCliDeployment: true, and the standard engine port; then call create-app-env to provision the managed database cluster in a region. - Do not omit isCliDeployment for database apps. Without isCliDeployment: true, create-app is interpreted as a GitHub deployment and the API will complain about missing gitNamespace/gitRepo/gitInstallationId instead of provisioning a database. - For database create-app calls, include the standard engine port even though the managed database is provisioned later by create-app-env: MongoDB 27017, PostgreSQL 5432, MySQL 3306, Redis 6379, CouchDB 5984, RabbitMQ 5672, ClickHouse 8123. create-app-env does not take a port. - Call list-database-presets first to get the eligible regular-user presets (currently MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, ClickHouse), their versions and defaults, and the per-preset limits (minDiskMb, maxDiskMb, maxReplicas). Internal-Operator-only/manual database engines (Elasticsearch, Opensearch, Kafka, ...) are intentionally not returned. - The chosen region must support automatic DevOps deploy (use list-regions to confirm). - "containers" is the replica count: a positive integer up to maxReplicas. Use containers > 1 only for HA setups. CouchDB currently supports exactly 1 container. - "disk" is the per-replica volume size in MB, and must be between minDiskMb and maxDiskMb. For Redis with withPersistence=false, set disk=0 (warn the user that data is lost on restart). For all other DB presets, disk is mandatory. - "withPersistence" only applies when the preset has isPersistenceOptional=true (currently Redis). Pass true (with disk > 0) or false (cache-only, disk=0). - "dockerPresetVersion" should be set; if omitted, the latest default version is used. - "databaseSettings.redis" (Redis only) supports tlsEnabled, configExtra (key/value, with denylist), and HA components (sentinel must be odd, >= 3 replicas; haproxy >= 1). Only applies when containers > 1. - "databaseSettings.mysql.parameters" (MySQL only) supports max_connections. - "databaseSettings.postgresql.parameters" (PostgreSQL only) supports work_mem, hash_mem_multiplier, max_parallel_workers_per_gather, and effective_cache_size.update-app- Updates app-level configuration including deployment source (build from source vs pre-built image), Docker settings, port, build configuration, and health checks. Changes affect all environments of the app. For persistent storage, use update-app-env-volume on a specific environment. To change the framework, use list-app-presets to discover valid `dockerPreset` and `dockerPresetVersion` values (database presets cannot be set via update-app).create-app-env- Creates a new environment within an app. Configure region, resources, and environment variables. Use list-regions first to see available regions for the account. For database apps, this is the step that provisions the managed cluster; pass zClouds (1, 2, 4, or 8), containers, disk, withPersistence (Redis only), dockerPresetVersion, and optional databaseSettings. Do not pass port or isCliDeployment here; those belong to create-app. Database creation rules: - Database creation is a two-tool flow: first call create-app with the database dockerPreset, isCliDeployment: true, and the standard engine port; then call create-app-env to provision the managed database cluster in a region. - Do not omit isCliDeployment for database apps. Without isCliDeployment: true, create-app is interpreted as a GitHub deployment and the API will complain about missing gitNamespace/gitRepo/gitInstallationId instead of provisioning a database. - For database create-app calls, include the standard engine port even though the managed database is provisioned later by create-app-env: MongoDB 27017, PostgreSQL 5432, MySQL 3306, Redis 6379, CouchDB 5984, RabbitMQ 5672, ClickHouse 8123. create-app-env does not take a port. - Call list-database-presets first to get the eligible regular-user presets (currently MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, ClickHouse), their versions and defaults, and the per-preset limits (minDiskMb, maxDiskMb, maxReplicas). Internal-Operator-only/manual database engines (Elasticsearch, Opensearch, Kafka, ...) are intentionally not returned. - The chosen region must support automatic DevOps deploy (use list-regions to confirm). - "containers" is the replica count: a positive integer up to maxReplicas. Use containers > 1 only for HA setups. CouchDB currently supports exactly 1 container. - "disk" is the per-replica volume size in MB, and must be between minDiskMb and maxDiskMb. For Redis with withPersistence=false, set disk=0 (warn the user that data is lost on restart). For all other DB presets, disk is mandatory. - "withPersistence" only applies when the preset has isPersistenceOptional=true (currently Redis). Pass true (with disk > 0) or false (cache-only, disk=0). - "dockerPresetVersion" should be set; if omitted, the latest default version is used. - "databaseSettings.redis" (Redis only) supports tlsEnabled, configExtra (key/value, with denylist), and HA components (sentinel must be odd, >= 3 replicas; haproxy >= 1). Only applies when containers > 1. - "databaseSettings.mysql.parameters" (MySQL only) supports max_connections. - "databaseSettings.postgresql.parameters" (PostgreSQL only) supports work_mem, hash_mem_multiplier, max_parallel_workers_per_gather, and effective_cache_size.update-app-env-resources- Updates resource allocation for an app environment (zClouds or custom CPU/memory/disk). zClouds accepts only 1, 2, 4, or 8; use custom resources instead when a BYOP account needs another size. "disk" can resize DevOps database storage and regular app local persistent volumes. It is grow-only once applied; shared NFS volumes and stateless apps do not use this disk setting. DevOps databases must stay within the per-preset limits from list-database-presets. For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.update-app-env-autoscaling- Updates autoscaling configuration for an app environment. Not supported for database environments. Use the database-specific tools for supported operations.update-function-config- Updates the scaling and timeout configuration for a function app environment. Configure concurrency, timeouts, and min/max scale. Only available for function apps. Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-job-config- Updates the command, arguments, timeout, retry, TTL, and concurrency overrides for a Job app environment.update-app-env-variable- Adds, updates, or removes environment variables (partial update). Use "variables" to add/update and "variablesToRemove" to delete.patch-json-env-var- Patches a specific field within a JSON-formatted environment variable without sending the entire JSON. Useful for updating large JSON configs like METEOR_SETTINGS. (also requires: Read Secrets)update-app-env-branch- Updates the git branch for an app environment. Changing the branch creates pending build changes. Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-healthcheck- Updates the HTTP health check configuration for an app. Health check settings are shared across all environments of the app. Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-security- Updates security settings for an app environment including ModSecurity WAF, rate limiting, and security context (fsGroup, runAsUser, runAsGroup). Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-allowlist- Manages the IP address allowlist and network control for an app environment. Toggle networkControlEnabled to enable or disable IP restriction enforcement. Add, update, or remove IP addresses/CIDR ranges. When network control is enabled and an allowlist is active, only connections from listed IPs are allowed. Changes trigger an immediate deploy. For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.update-app-env-volume- Configures persistent storage for an app environment. Enable/disable volumes, set the mount path, and toggle NFS shared volumes. When useVolume is enabled without NFS, blue-green deploy is automatically disabled on the app and scaling is limited to 1 container. The environment's region must support volumes. Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-name- Updates the name of an app environment. This is a display name change that may affect CLI deploy targets. For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.add-app-env-host- Adds a custom hostname to an app environment. The hostname must be a valid domain and not already in use in the same region. Hosts are deployed immediately. Not supported for database environments. Use the database-specific tools for supported operations.extend-branch-preview- Extends a branch preview environment by adding a positive TTL to its expiration time.update-app-env-region- Changes the region of an app environment. Requires valid CNAME records for all custom hosts (use check-app-env-cname first). This is a disruptive operation - the environment will be unreachable for ~2 minutes. Use list-regions to see available target regions. Not supported for database environments. Use the database-specific tools for supported operations.update-app-env-backup-retention- Updates the customer-safe backup retention days and storage-size cap for an environment.configure-app-env-backup-storage- Attaches or detaches an existing customer object-storage credential for backups without returning credentials. Cleanup on customer storage requires a separate explicit acknowledgement.create-solution- Creates a curated solution in an account. Each component is created as a normal Quave ONE app environment through the standard creation flow. Requires internal Operator access.create-credential- Creates a new account-level credential, including static Docker registries or AWS ECR registry credentials. Requires the Manage Credentials role. Credentials are encrypted at rest and automatically synced to every region the account uses.update-credential- Updates an existing account-level credential. The type cannot be changed after creation. Sensitive fields left empty on update retain their stored values. Requires the Manage Credentials role.set-default-credential- Promotes a Container Registry credential to the account-wide default. Apps without an explicit registry selection use the default. Only Container Registry credentials support this operation. Requires the Manage Credentials role.sync-credential- Re-pushes a credential to every active region the account uses. For AWS ECR, also generates a fresh short-lived Docker auth token and updates refresh status. Useful when a previous sync failed (shown as Error status) or after editing a credential. Requires the Manage Credentials role.create-agent-automation- Creates an agent automation using the same backend validation as the dashboard UI. The selected MCP key controls what the automation can do.update-agent-automation- Updates an agent automation using the same backend validation as the dashboard UI.toggle-agent-automation- Enables or disables an agent automation without deleting it.create-llm-provider-key- Creates a personal or account-scoped LLM provider key. Account keys require the Manage Credentials role.update-llm-provider-key- Updates a personal or account-scoped LLM provider key. Account keys require the Manage Credentials role.set-default-llm-provider-key- Sets a personal or account-scoped LLM provider key as the default for that scope.test-llm-provider-key- Runs the same one-token LLM provider connectivity probe used by the dashboard UI.create-contact-point- Creates a new contact point for alert notifications. Supported types: slack (requires webhookUrl), pagerduty (requires integrationKey), webhook (requires url), email (requires addresses array).update-contact-point- Updates a contact point name or configuration. Changes are propagated to all deployed Grafana instances.create-alert- Creates a new alert for an app environment. Supports built-in metrics (cpu_percent, memory_percent, cpu_usage, memory_usage and per-pod variants). Requires a contact point for notifications.update-alert- Updates an alert configuration. Can change name, description, metric, threshold, duration, or contact point.toggle-alert- Enables or disables an alert. Disabled alerts do not send notifications.
Write Deployments (quave:write:deploy) - Deploy, restart, scale, and manage app environments:
apply-app-env-changes- Applies pending configuration changes to an app environment (like terraform apply). For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.scale-app-env-containers- Manually scales the number of containers for an app environment. For DevOps databases, "containers" is the replica count capped at the per-preset limit (use list-database-presets to read the current maxReplicas). Use containers > 1 only for HA setups (Redis HA settings only apply when containers > 1; CouchDB currently requires exactly 1). For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.trigger-app-env-build- Triggers a new build for an app environment. This starts the build process to create a new deployment artifact. Not supported for database environments. Use the database-specific tools for supported operations. (may also require additional scopes: Write Configurations)redeploy-app-env- Redeploys an app environment using the current or a specified deployment version. Useful for restarting containers or applying pending configuration changes (e.g. after rotating database credentials in env vars). For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support.start-app-env- Starts a stopped app environment by redeploying its current version. Not supported for database environments. Use the database-specific tools for supported operations.create-branch-preview- Creates a temporary branch preview environment cloned from an existing environment. (also requires: Write Configurations)run-app-env-job- Runs a finite Job app workload, optionally merging environment variables before creating the JobRun (may also require additional scopes: Write Configurations)cancel-app-env-job-run- Cancels a running JobRun and deletes its Kubernetes Job if it has startedrerun-app-env-job-run- Creates a new JobRun from a previous run snapshot, with optional content or command overridesvalidate-app-env-volume-backup- Starts a non-destructive restore validation for a volume backup recovery point. Requires account admin permission and the quave:write:deploy scope.create-app-env-from-volume-backup- Creates a separate environment restored from a volume backup recovery point. Requires account admin permission plus deploy and configuration scopes. (may also require additional scopes: Write Configurations)request-deploy-storage-key- Requests a pre-signed URL for uploading code to deploy. Returns an uploadUrl and storageKey. Step 1 of the code deployment process.notify-code-upload- Notifies that code has been uploaded and triggers the build process. Step 3 of the code deployment process (step 2 is uploading via curl). (may also require additional scopes: Write Configurations)deploy-app-env-image- Deploys a Docker image to an app environment. The app must have useImage=true. The image is deployed directly without a build step. Not supported for database environments. Use the database-specific tools for supported operations. (may also require additional scopes: Write Configurations)run-agent-automation-once- Dispatches one manual run for an agent automation. Optionally waits for the resulting run to finish. (may also require additional scopes: Read Only)
Write Dangerous (quave:write:dangerous) - Delete resources and perform irreversible actions:
rollback-app-env- Rolls back an app environment to a previous version. If no targetContentId is specified, rolls back to the immediately previous deployment. Not supported for database environments. Use the database-specific tools for supported operations.stop-app-env- Stops an app environment, scaling its containers to zero. The environment can be started again later. Not supported for database environments. Use the database-specific tools for supported operations.remove-app-env-host- Removes a hostname from an app environment. You can specify the host by hostId or hostname. Changes are deployed immediately. Not supported for database environments. Use the database-specific tools for supported operations.delete-app- Permanently deletes an app and all its environments, deployments, metrics, and associated data. This action cannot be undone. Environments are destroyed automatically; managed database volumes are retained for the separate PVC cleanup/detach flow.delete-app-env- Permanently deletes an app environment and all its associated data (deployments, metrics, updates). This action cannot be undone. For databases, this is available for automatically provisioned database presets (MongoDB, PostgreSQL, MySQL, Redis, CouchDB, RabbitMQ, or ClickHouse) deployed in a region with DevOps support. Persistent database volumes are retained for the separate PVC cleanup/detach flow.delete-branch-preview- Deletes a branch preview environment only when preview metadata is present.run-app-env-backup-cleanup- Permanently removes expired backup data after an explicit, unexpired cleanup preview confirmation. The newest recovery point is always protected.run-account-backup-cleanup- Permanently removes expired backup data across one account after an explicit unexpired preview confirmation. Requires account admin permission.delete-credential- Permanently deletes an account-level credential. Cannot delete credentials that are still referenced by apps, hosts, or environments. Requires the Manage Credentials role.delete-agent-automation- Deletes an agent automation owned by the authenticated user.delete-llm-provider-key- Deletes a personal or account-scoped LLM provider key. Account keys require the Manage Credentials role.delete-mcp-key- Deletes an MCP key with the same or less effective tool access than the current MCP key. Requires MCP-key management plus dangerous-operation protection. (also requires: Manage MCP Keys)delete-contact-point- Deletes a contact point. Cannot delete if alerts are using this contact point.delete-alert- Permanently deletes an alert. Removes from both MongoDB and Grafana.
Manage MCP Keys (quave:manage:mcp-keys) - Create, update, rotate, reveal, enable, and disable MCP keys with the same or less effective tool access:
list-mcp-keys- Lists MCP keys manageable by the current MCP key and only returns keys with the same or less effective tool access.get-mcp-key- Gets MCP key metadata for a key with the same or less effective tool access than the current MCP key.create-mcp-key- Creates a scope-mode or explicit tool-mode MCP key with the same or less effective tool access than the current MCP key. (may also require additional scopes: Read Secrets)update-mcp-key- Updates an MCP key only when its requested effective tool access is the same or less than the current MCP key.toggle-mcp-key- Enables or disables an MCP key with the same or less effective tool access than the current MCP key.regenerate-mcp-key- Rotates the secret for an MCP key with the same or less effective tool access than the current MCP key. (may also require additional scopes: Read Secrets)reveal-mcp-key- Reveals raw MCP key plaintext for a key with the same or less effective tool access than the current MCP key. Secret-read protection remains required. (also requires: Read Secrets)
Control Destroy Protection (quave:admin:destroy-protection) - Enable or disable Prevent destroy on app environments. This controls a safety lock that blocks direct environment deletion and parent app/account deletion, so granting it can both protect resources and remove that protection.:
set-app-env-prevent-destroy- Enables or disables the protected-environment guard that blocks direct environment deletion and parent app/account deletion until disabled again.
Admin (quave:admin) - Account-level administrative operations:
update-member-env-access- Updates which environments a member can access. Pass an empty array or omit allowedAppEnvIds to grant full access. Requires MANAGE_MEMBERS permission.
Key confirmation settings
Security level
Security level tells a compatible MCP client how aggressively to request confirmation. It is not a server authorization bypass.
| Level | Behavior | Best For |
|---|---|---|
| Strict | Confirm every operation - Maximum security | Critical production accounts |
| Balanced | Recommended - Read auto-approved, writes confirmed | Most users (recommended) |
| Permissive | Minimal confirmations - Trust automation | Development environments |
| Auto | Full automation - Only confirm destructive operations | Trusted automation workflows |
Session duration
Session duration tells a compatible client how long it may remember approvals. The allowed range is 5 minutes to 24 hours, with a 30-minute default. Quave ONE still evaluates the key’s grants and platform permissions on every request.
Secure operating practices
- Give each client or device its own OAuth grant or MCP key.
- Use least privilege: start with read access or a minimal tool allowlist.
- Keep production-changing and secret-reading capabilities separate from normal troubleshooting access.
- Revoke a connected app or disable a key immediately if it is no longer trusted.
- Never put secrets in tool prompts, startup commands, or command arguments; use Quave ONE secret environment variables instead.
The MCP server is remote HTTP only. It validates tool input and forwards authorized requests to Quave ONE; it does not launch local shell commands on your machine.