Skip to main content
Glama

Unset Environment Variable or Secret

secrets_unset
DestructiveIdempotent

Deletes one environment variable or secret from an app, like deleting it on the dashboard's Environment page. Takes the app_id from apps_list, the key, and the scope it was set in: app for an entry shared by every environment, environment with environment_id for an entry of that environment only. Call secrets_list (with environment_id) to see which scope a key lives in.

A key that is not set in that scope answers deleted: false and changes nothing. A key set for every environment cannot be deleted through scope: environment: the call is refused and says so, and nothing is deleted.

Removing an override: when the key overrides a variable Meridian manages (managed_variables_list reports it overridden; the variables of a ready add-on, such as REDIS_HOST, and the DB_HOST, DB_PORT and DB_SSL_CA of a database reached over TCP count too), deleting it gives that variable back to Meridian, and restores_managed lists the environments where it happens. When override_value is same, the app keeps the same value and the call goes through. When it is different or unknown (always unknown for an add-on or database transport variable), the app would run with another value, so the call is refused until you pass confirm: true. This holds when a key set for every environment takes over from the deleted one too: restores_managed is then empty.

The change reaches the app at its next deploy: environments_list reports config_pending_deploy.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "app_id": "<app_id>",
      "key": "<key>",
      "scope": "<scope>"
    },
    "name": "secrets_unset"
  }
}

Input Schema

NameRequiredDescriptionDefault
keyYesThe variable name to delete. Uppercased and normalized.
scopeYesWhere the key is set: `app` for every environment, `environment` for `environment_id` only.
app_idYesThe app uuid returned by `apps_list`.
confirmNoPass `true` to delete a key that overrides a variable Meridian manages with a different (or uncomparable) value: the app then runs with another value from its next deploy.
environment_idNoRequired when `scope` is `environment`: the environment uuid from `environments_list`.
organization_idNoAn organisation uuid or slug. When supplied, `app_id` is resolved within that organisation and may be a slug instead of a uuid, mirroring the Meridian web app.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint and idempotentHint, but the description adds far more: exact refusal behavior, that refused calls delete nothing, the `restores_managed` outcome for overriding-managed-variable keys, the `same`/`different`/`unknown` `override_value` gate on `confirm`, and that changes only reach the app at the next deploy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the paragraphs follow a logical order: what it deletes, how to choose scope, refusal cases, override restoration, deploy timing. It is long, and the override paragraph buries key facts in a multi-clause parenthetical, but little of it is padding for a destructive tool with conditional refusals.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description documents observable return signals (`deleted: false`, `restores_managed`, `config_pending_deploy`) and covers the refusal paths an agent must anticipate. For a 6-parameter destructive tool, an agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a 3 is the floor, and the description earns above it by explaining the `scope`/`environment_id` coupling and the real condition under which `confirm` becomes mandatory, including the always-`unknown` case for add-on and database transport variables.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource ('Deletes one environment variable or secret from an app') and anchors it to a familiar analogue (the dashboard's Environment page). Nothing in the tool's name or the sibling list is needed to understand what it removes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states how to pick the correct scope, routes the agent to `secrets_list` with `environment_id` to discover a key's scope, and defines what to do when `confirm` is required. It also spells out two distinct when-not cases: a key not set in that scope, and an every-environment key attempted through `scope: environment`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources