Skip to main content
Glama
canopy-labs

Featureflip

Official

Delete feature flag

delete_flag
Destructive

Permanently deletes a feature flag across all environments. Fails if other flags depend on it; prefer archiving unless full removal is required.

Instructions

PERMANENTLY delete a flag across all environments. Fails with FLAG_HAS_DEPENDENTS if other flags use it as a prerequisite. Prefer archive_flag unless the flag must be fully removed.

Input Schema

NameRequiredDescriptionDefault
flagYesFlag key or id
projectYesProject key

Output Schema

NameRequiredDescriptionDefault
deletedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.3.0
    • addedInput schema / properties / project / description
      Added value: +"Project key"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "deleted": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "deleted"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.6

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety bar is partly covered; the description goes further by disclosing cross-environment blast radius and a concrete failure condition with its error code (FLAG_HAS_DEPENDENTS if used as a prerequisite). It stops short of covering permissions/auth requirements or whether the deletion is reversible/recoverable via restore_flag.

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

Conciseness5/5

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

Three short sentences, no redundancy: the destructive action and scope lead, the failure mode follows, and the alternative is last. Every sentence earns its place.

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?

For a two-parameter destructive tool with an output schema present (so return values need no explanation), the description covers scope, irreversibility framing, failure mode, and the preferred alternative. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Both parameters ('project', 'flag') carry schema descriptions at 100% coverage, so the schema does the heavy lifting. The description adds no syntax or format detail beyond what the schema already documents, making the baseline 3 appropriate.

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?

States a specific verb and resource ('delete a flag') plus a critical scope qualifier ('PERMANENTLY ... across all environments'), which sharply differentiates it from archive_flag and restore_flag in the sibling list. An agent can select it without opening the schema.

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?

Explicitly names the alternative ('Prefer archive_flag') and states the condition that selects this tool instead ('unless the flag must be fully removed'). Both the when and the when-not are present.

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