Skip to main content
Glama
featureflow

Featureflow MCP Server

Official
by featureflow

Featureflow MCP Server

npm version License: MIT

An MCP (Model Context Protocol) server for Featureflow feature flag management. This enables AI assistants like Claude to interact with your Featureflow instance to manage feature flags, projects, environments, and more.

Quick Start

1. Create a Personal Access Token

  1. Log into Featureflow as an administrator

  2. Navigate to AdministrationAPI Tokens

  3. Click Create Token and copy the token (starts with api-)

2. Configure in Cursor

Add to your ~/.cursor/mcp.json:

{
  "mcpServers": {
    "featureflow": {
      "command": "npx",
      "args": ["-y", "featureflow-mcp"],
      "env": {
        "FEATUREFLOW_API_TOKEN": "api-your-token-here"
      }
    }
  }
}

3. Restart Cursor

Press Cmd+Shift+P → "MCP: Restart Servers" or restart Cursor.

That's it! You can now ask Claude to manage your feature flags.

Related MCP server: Unleash MCP Server

Configuration

Environment Variable

Description

Default

FEATUREFLOW_API_TOKEN

Personal Access Token (required)

-

FEATUREFLOW_API_URL

API base URL (optional)

https://beta.featureflow.io/api

Self-Hosted Featureflow

If you're running a self-hosted Featureflow instance:

{
  "mcpServers": {
    "featureflow": {
      "command": "npx",
      "args": ["-y", "featureflow-mcp"],
      "env": {
        "FEATUREFLOW_API_URL": "https://your-instance.com/api",
        "FEATUREFLOW_API_TOKEN": "api-your-token-here"
      }
    }
  }
}

Available Tools

Account

Tool

Description

get_current_user

Get the currently authenticated user and organization

Projects

Tool

Description

list_projects

List all projects, optionally filtered by query

get_project

Get a specific project by ID or key

create_project

Create a new project

update_project

Update an existing project

delete_project

Delete a project

Features

Tool

Description

list_features

List features with optional filters

get_feature

Get a specific feature by ID or unified key

create_feature

Create a new feature flag

update_feature

Update an existing feature

clone_feature

Clone a feature with a new key

archive_feature

Archive or unarchive a feature

delete_feature

Delete a feature

Feature Controls

Tool

Description

get_feature_control

Get feature control settings for an environment

update_feature_control

Enable/disable features, modify rules

Environments

Tool

Description

list_environments

List environments for a project

get_environment

Get a specific environment

create_environment

Create a new environment

update_environment

Update an existing environment

delete_environment

Delete an environment

Targets & API Keys

Tool

Description

list_targets

List targeting attributes for a project

get_target

Get a specific target by key

list_api_keys

List SDK API keys for an environment

Example Usage

Once configured, you can ask Claude things like:

  • "Who am I logged in as in Featureflow?"

  • "List all my Featureflow projects"

  • "Create a feature called 'new-checkout' in the 'webapp' project"

  • "Enable the 'dark-mode' feature in production"

  • "What features are currently enabled in staging?"

  • "Disable 'beta-feature' in all environments"

Development

# Clone the repository
git clone https://github.com/featureflow/featureflow-mcp.git
cd featureflow-mcp

# Install dependencies
npm install

# Build
npm run build

# Run locally
FEATUREFLOW_API_TOKEN=api-xxx npm start

License

MIT - see LICENSE for details.

Available Tools

22 tools
archive_featureC

Archive or unarchive a feature flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key
archivedYesSet to true to archive, false to unarchive

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'archive or unarchive' implies a state change rather than deletion, it doesn't specify whether this requires special permissions, if archiving is reversible, what happens to associated data, or if there are rate limits. This is inadequate for a mutation tool with zero annotation coverage.

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?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, with every word contributing to understanding the core purpose.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks information about behavioral consequences, error conditions, return values, or how archiving interacts with other operations. Given the complexity of state management and sibling tools, more context is needed for safe and effective use.

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?

The schema description coverage is 100%, so the input schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or edge cases, resulting in the baseline score for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('archive or unarchive') and the resource ('a feature flag'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'delete_feature' or 'update_feature', which might also modify feature flag states.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, distinguish from deletion operations, or explain the implications of archiving versus other state changes, leaving the agent to infer usage context from tool names alone.

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

clone_featureC

Clone an existing feature with a new key and name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key of the source feature to clone
newKeyYesKey for the cloned feature
nameYesName for the cloned feature

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool clones a feature but doesn't explain what cloning entails (e.g., whether it copies all settings, permissions, or dependencies), potential side effects, or any constraints like rate limits or authentication needs. This is a significant gap for a mutation tool.

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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is insufficient. It doesn't cover behavioral aspects, return values, or usage context, leaving critical gaps for an agent to understand how to invoke it correctly.

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?

The input schema has 100% description coverage, clearly documenting all three parameters. The description mentions 'new key and name' but doesn't add meaningful semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Clone') and resource ('an existing feature'), specifying what the tool does. It mentions the key parameters (new key and name) but doesn't explicitly differentiate from sibling tools like 'create_feature' or 'update_feature', which is why it doesn't reach a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'create_feature' or 'update_feature'. It lacks context about prerequisites, use cases, or exclusions, leaving the agent to infer usage from the name alone.

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

create_environmentB

Create a new environment for a project. Optionally clone settings from an existing environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesThe project key where the environment will be created
keyYesUnique environment key within the project
nameYesDisplay name for the environment
colorNoColor for the environment (hex code)
productionNoWhether this is a production environment
cloneEnvironmentKeyNoOptional environment key to clone settings from

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a new environment but lacks details on permissions required, whether the operation is idempotent, error conditions, or what happens upon success (e.g., returns an environment object). For a creation tool with zero annotation coverage, this is a significant gap in transparency.

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?

The description is a single, efficient sentence that front-loads the core action ('Create a new environment') and adds the optional feature concisely. There is no wasted verbiage, making it easy to parse quickly.

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

Completeness3/5

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

Given the tool's complexity (creation with optional cloning), lack of annotations, and no output schema, the description is minimally adequate. It covers the basic purpose but misses behavioral details like permissions or return values. It's complete enough to understand what the tool does but not how to use it effectively in context.

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?

Schema description coverage is 100%, so the schema already documents all six parameters thoroughly. The description adds minimal value by implying that 'cloneEnvironmentKey' clones settings from an existing environment, but this is already covered in the schema's description. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Create') and resource ('new environment for a project'), making the purpose unambiguous. It also mentions the optional cloning feature, which adds specificity. However, it doesn't explicitly differentiate from sibling tools like 'create_project' or 'clone_feature', keeping it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_project' for projects or 'clone_feature' for cloning features. It mentions optional cloning but doesn't specify when cloning is appropriate or any prerequisites, leaving usage context implied at best.

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

create_featureC

Create a new feature flag in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesThe project key where the feature will be created
keyYesUnique feature key within the project (lowercase, no spaces)
nameYesDisplay name for the feature
descriptionNoOptional description of the feature

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a creation operation, implying mutation, but doesn't cover critical aspects like required permissions, whether the feature is enabled by default, if it's reversible (e.g., via 'archive_feature' or 'delete_feature'), rate limits, or what the response contains. For a mutation tool with zero annotation coverage, this is a significant gap.

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?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain behavioral traits (e.g., permissions, defaults, reversibility) or what the tool returns, leaving significant gaps for an AI agent to understand how to use it effectively in context with sibling tools.

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?

Schema description coverage is 100%, so the schema fully documents all 4 parameters (projectKey, key, name, description) with their types and constraints. The description adds no additional semantic context beyond implying these parameters are needed for creation, which is already evident from the schema. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('new feature flag in a project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'clone_feature' or 'update_feature', which would require more specificity about what distinguishes creation from cloning or updating.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing project), exclusions (e.g., not for modifying existing features), or refer to sibling tools like 'clone_feature' or 'update_feature' for different scenarios.

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

create_projectC

Create a new project in the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesUnique project key (lowercase, no spaces, use hyphens)
nameYesDisplay name for the project

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Create a new project' which implies a write/mutation operation, but doesn't disclose behavioral traits like required permissions, whether creation is idempotent, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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?

The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded with the core purpose, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

Given this is a mutation tool (creating a project) with no annotations and no output schema, the description is incomplete. It doesn't address what the tool returns, error conditions, or important behavioral context needed for safe invocation. The 100% schema coverage helps with parameters, but overall context is inadequate for a creation operation.

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?

Schema description coverage is 100%, with both parameters ('key' and 'name') well-documented in the schema. The description doesn't add any parameter semantics beyond what the schema already provides (e.g., it doesn't explain relationships between parameters or provide usage examples). Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('new project in the organization'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives like 'clone_feature' or 'create_feature' that might also create resources, missing explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'clone_feature', 'create_feature', and 'create_environment' that also create resources, there's no indication of when to choose 'create_project' over these, nor any prerequisites or exclusions mentioned.

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

delete_environmentB

Delete an environment. Cannot delete the last environment in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesEnvironment ID or unified key to delete

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions a constraint ('Cannot delete the last environment'), which adds some context, but fails to address critical aspects like whether deletion is permanent or reversible, what permissions are required, or what happens to associated resources. For a destructive tool with zero annotation coverage, this is a significant gap.

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?

The description is extremely concise with just two sentences, front-loading the core action and following with a critical constraint. Every word earns its place, with no redundancy or unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity as a destructive operation with no annotations and no output schema, the description is insufficient. It lacks details on behavioral outcomes, error conditions, or return values, leaving the agent with incomplete information for safe and effective use.

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?

The input schema has 100% description coverage, with the parameter 'idOrUnifiedKey' clearly documented. The description doesn't add any meaning beyond what the schema provides, such as examples or format details, so it meets the baseline score of 3 where the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('an environment'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'delete_feature' or 'delete_project' beyond the resource name, which prevents a perfect score.

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

Usage Guidelines3/5

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

The description provides an implied usage guideline by stating 'Cannot delete the last environment in a project,' which suggests when not to use it. However, it lacks explicit guidance on when to use this tool versus alternatives like 'archive_feature' or 'update_environment,' and doesn't mention prerequisites or dependencies.

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

delete_featureA

Delete a feature flag. Requires production editor or admin permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key to delete

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by specifying permission requirements, which is crucial for a destructive operation. However, it lacks details on whether deletion is permanent, if there are confirmation prompts, rate limits, or what happens to associated data. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

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?

The description is extremely concise and front-loaded, consisting of just two sentences that efficiently convey the core action and a critical constraint. Every word earns its place, with no wasted text or redundancy, making it easy for an AI agent to parse quickly.

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

Completeness3/5

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

Given the tool's complexity as a destructive operation with no annotations and no output schema, the description is somewhat incomplete. It covers the basic purpose and permissions but misses details on permanence, side effects, error handling, or return values. For a delete tool, this could lead to uncertainty about irreversible actions, though the permission hint adds some context.

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?

Schema description coverage is 100%, with the single parameter 'idOrUnifiedKey' well-documented in the schema. The description does not add any additional meaning or context about the parameter beyond what the schema provides. According to the rules, with high schema coverage (>80%), the baseline score is 3 even with no param info in the description, which applies here.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('a feature flag'), making the purpose immediately understandable. It distinguishes from siblings like 'archive_feature' by specifying permanent deletion rather than archiving. However, it doesn't explicitly contrast with other destructive siblings like 'delete_environment' or 'delete_project'.

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

Usage Guidelines3/5

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

The description provides some guidance by mentioning permission requirements ('Requires production editor or admin permissions'), which helps determine when the tool can be used. However, it doesn't explicitly state when to use this versus alternatives like 'archive_feature' (for reversible removal) or clarify if deletion is permanent versus recoverable. No explicit exclusions or detailed context about alternatives is provided.

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

delete_projectB

Delete a project. This will also delete all features and environments in the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrKeyYesThe project ID or key to delete

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds crucial context beyond the basic 'delete' action by stating that deletion cascades to 'all features and environments in the project', which is valuable for understanding side effects. However, it doesn't cover other behavioral traits like permissions required, irreversibility, or error conditions, leaving gaps for a mutation tool.

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?

The description is extremely concise and front-loaded, consisting of two sentences that efficiently convey the core action and critical side effect. Every word earns its place, with no redundant or vague language, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool's complexity as a destructive mutation with no annotations and no output schema, the description is minimally adequate. It covers the cascading deletion effect, which is essential context, but lacks details on permissions, confirmation steps, or return values. For a high-stakes delete operation, more completeness would be beneficial, but it meets the basic threshold.

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?

The input schema has 100% description coverage, with the parameter 'idOrKey' well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or validation rules. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't detract either.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('a project'), making the purpose unambiguous. It distinguishes this tool from siblings like 'archive_feature' or 'delete_feature' by specifying it deletes projects, not features. However, it doesn't explicitly differentiate from 'update_project' or 'get_project' in the same sentence, which keeps it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing project ID/key, or compare it to siblings like 'archive_feature' for non-destructive options. There's no explicit when/when-not usage context, leaving the agent to infer based on the name alone.

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

get_environmentC

Get detailed information about a specific environment by ID or unified key (projectKey:environmentKey).

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesEnvironment ID or unified key (e.g., 'myproject:production')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('get'), but does not specify whether it requires authentication, rate limits, error handling, or the format of the returned 'detailed information.' This is inadequate for a tool with no annotation coverage.

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?

The description is a single, efficient sentence that is front-loaded with the core purpose. It wastes no words and directly communicates the essential information without unnecessary elaboration, making it easy to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain what 'detailed information' includes, how errors are handled, or any behavioral traits, leaving significant gaps for the agent to understand the tool's full context and usage.

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?

The schema description coverage is 100%, with the parameter 'idOrUnifiedKey' fully documented in the schema. The description adds minimal value by mentioning the parameter in context ('by ID or unified key'), but does not provide additional semantics beyond what the schema already states, such as examples or constraints.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get detailed information about a specific environment by ID or unified key.' It specifies the verb ('get'), resource ('environment'), and scope ('specific'), but does not explicitly differentiate it from sibling tools like 'get_project' or 'get_feature' beyond the resource name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when to use it over 'list_environments' for a single environment or how it relates to other 'get_' tools for different resources, leaving the agent to infer usage from context alone.

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

get_featureB

Get detailed information about a specific feature by ID or unified key (projectKey:featureKey).

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key (e.g., 'myproject:my-feature')

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't confirm safety aspects like whether it requires authentication, has rate limits, or what happens on errors. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational traits.

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?

The description is a single, efficient sentence that front-loads the core purpose and includes essential parameter information. There's no wasted language, and it directly addresses what the tool does and how to identify the feature, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but not complete. It covers the basic purpose and parameter format but lacks behavioral details (e.g., error handling, authentication needs) and usage context relative to siblings. For a simple read operation, this is minimally viable but could be more informative.

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?

The schema description coverage is 100%, with the parameter 'idOrUnifiedKey' fully documented in the schema. The description adds minimal value by mentioning the parameter format ('ID or unified key') and an example ('myproject:my-feature'), but doesn't provide additional semantic context beyond what's already in the schema. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get detailed information') and resource ('about a specific feature'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_feature_control' or 'list_features', which would require more specific language about scope or detail level.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list_features' (for multiple features) or 'get_feature_control' (for control-specific data). It mentions the parameter format but doesn't clarify context or prerequisites for usage, leaving the agent to infer based on tool names alone.

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

get_feature_controlB

Get the feature control configuration for a specific feature and environment. Shows enabled state, rules, and variant assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key
environmentKeyYesEnvironment key (e.g., 'development', 'production')

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions what information is returned ('enabled state, rules, and variant assignments'), which is helpful, but lacks details on permissions, rate limits, error handling, or whether it's a read-only operation (though 'Get' implies reading). For a tool with no annotations, this is a significant gap in transparency.

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?

The description is concise and front-loaded, consisting of two sentences that efficiently convey the purpose and output. Every sentence earns its place by adding value: the first states what the tool does, and the second specifies the returned data. There is no wasted wording or redundancy.

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

Completeness3/5

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

Given the tool's moderate complexity (2 required parameters, no output schema, and no annotations), the description is adequate but incomplete. It covers the purpose and output details but lacks usage guidelines, behavioral context (e.g., safety, permissions), and does not compensate for the absence of an output schema. It meets minimum viability but has clear gaps.

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?

Schema description coverage is 100%, meaning the input schema already documents both parameters ('idOrUnifiedKey' and 'environmentKey') with descriptions. The description does not add any additional meaning or examples beyond what the schema provides, such as clarifying the format of 'idOrUnifiedKey' or valid values for 'environmentKey'. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get the feature control configuration for a specific feature and environment.' It specifies the verb ('Get'), resource ('feature control configuration'), and scope ('specific feature and environment'), which is precise. However, it does not explicitly differentiate from sibling tools like 'get_feature' or 'update_feature_control', which would be needed for a score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools such as 'get_feature' (which might retrieve general feature info) or 'update_feature_control' (for modifications), nor does it specify prerequisites or exclusions. Usage is implied by the purpose but not explicitly stated.

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

get_projectC

Get detailed information about a specific project by its ID or key.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrKeyYesThe project ID or key

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it retrieves 'detailed information' but doesn't disclose behavioral traits such as required permissions, rate limits, error handling, or what constitutes 'detailed' information. This leaves gaps for a read operation tool.

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?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for a simple tool, with no wasted information.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential return formats, or error cases. For a tool with one parameter but lacking structured output details, more context is needed.

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?

The input schema has 100% description coverage, with 'idOrKey' clearly documented. The description adds minimal value by implying the parameter identifies a 'specific project', but doesn't provide additional context like format examples or constraints beyond the schema.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('detailed information about a specific project'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_projects' or 'get_feature', which also retrieve information but for different resources or scopes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'list_projects' for broader queries or 'get_feature' for related data, nor does it specify prerequisites or exclusions for usage.

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

get_targetC

Get a specific target by its key.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesProject key
targetKeyYesTarget key to look up

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states this is a read operation ('Get'), implying it's non-destructive, but doesn't disclose any behavioral traits such as error handling, authentication needs, rate limits, or what happens if the target doesn't exist. This is a significant gap for a tool with no annotation coverage.

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?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary details.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that likely returns target data. It doesn't explain what 'target' means in this context, what data is returned, or any dependencies on other tools. For a read operation with two required parameters, more context is needed to guide effective use.

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?

Schema description coverage is 100%, so the schema already documents both parameters ('projectKey' and 'targetKey') adequately. The description adds minimal value by implying these keys are used for lookup, but doesn't provide additional semantics beyond what the schema specifies, meeting the baseline for high coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('a specific target'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_feature' or 'get_project' beyond specifying the target resource type, which is a minor gap.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list_targets' or other 'get_' tools. It mentions 'by its key' but doesn't explain prerequisites or contextual usage scenarios, leaving the agent to infer from the tool name alone.

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

list_api_keysC

List API keys for a specific environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentKeyYesEnvironment unified key (projectKey:environmentKey format)
typeNoOptional type filter for API keys

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't address permissions needed, pagination, rate limits, error conditions, or what the output looks like. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized for a simple list operation and front-loads the essential information.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that likely returns a list of API keys. It doesn't explain what information is returned, how results are structured, or any behavioral constraints. For a tool in this context, more detail is needed to help the agent understand what to expect.

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?

Schema description coverage is 100%, so the schema already fully documents both parameters (environmentKey and type). The description adds no additional parameter semantics beyond what's in the schema, such as explaining the format of environmentKey or when to use the type filter. Baseline 3 is appropriate when the schema does all the work.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('API keys'), and specifies the scope ('for a specific environment'). However, it doesn't explicitly differentiate from sibling tools like list_environments or list_features, which would require mentioning what makes listing API keys distinct from those other list operations.

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

Usage Guidelines2/5

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

The description provides minimal context ('for a specific environment') but offers no guidance on when to use this tool versus alternatives like get_environment or other list_* tools. It doesn't mention prerequisites, exclusions, or typical use cases, leaving the agent with insufficient direction.

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

list_environmentsB

List all environments for a project or the entire organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyNoOptional project key to filter environments

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it's a list operation but doesn't disclose behavioral traits like pagination, sorting, rate limits, authentication needs, or what 'all environments' entails (e.g., archived ones). This leaves significant gaps for a tool with potential complexity.

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?

The description is a single, efficient sentence that front-loads the core action ('List all environments') and immediately clarifies scope. There is zero waste, and every word earns its place, making it highly concise and well-structured.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral details like filtering logic. For a list tool with potential organizational scope, more context is needed to guide effective use.

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?

Schema description coverage is 100%, with the parameter 'projectKey' well-documented in the schema as 'Optional project key to filter environments.' The description adds marginal value by mentioning 'for a project or the entire organization,' which aligns with the schema but doesn't provide additional semantics beyond it.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('environments') with scope options ('for a project or the entire organization'). It distinguishes from siblings like 'get_environment' (singular) and 'list_features/projects/targets' (different resources). However, it doesn't explicitly differentiate from all list operations, keeping it at 4 rather than 5.

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

Usage Guidelines3/5

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

The description implies usage context by mentioning 'for a project or the entire organization,' suggesting when to use the optional projectKey parameter. However, it lacks explicit guidance on when to choose this over alternatives like 'get_environment' or other list tools, and no exclusions are provided.

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

list_featuresB

List all features. Can filter by project key, search query, or predefined filters (maintaining, bookmarked, recent).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyNoProject key to filter features
queryNoSearch query to match feature key or name
filterNoPredefined filter type
archivedNoInclude archived features (default: false)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filtering capabilities but fails to describe critical behaviors such as pagination, sorting, default limits, error conditions, or the format of returned data. For a list tool with no annotation coverage, this is a significant gap in transparency.

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?

The description is a single, efficient sentence that front-loads the core action ('List all features') and succinctly enumerates the filtering options. Every word serves a purpose, with no redundant or vague phrasing, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a tool with four parameters and list functionality. It doesn't address behavioral aspects like response format, pagination, or error handling, which are crucial for an AI agent to use the tool effectively. The high schema coverage doesn't compensate for these missing contextual elements.

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?

Schema description coverage is 100%, so the input schema already documents all four parameters thoroughly. The description adds minimal value by listing the filter types ('maintaining, bookmarked, recent') and hinting at the purpose of filtering, but it doesn't provide additional semantic context beyond what the schema offers, aligning with the baseline score.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('all features'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from potential sibling list tools like 'list_projects' or 'list_targets' beyond the resource type, which prevents a perfect score.

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

Usage Guidelines3/5

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

The description implies usage through the mention of filtering options ('Can filter by project key, search query, or predefined filters'), suggesting when this tool might be appropriate. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'get_feature' for single features or how it relates to other list tools, leaving some ambiguity.

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

list_projectsB

List all projects in the organization. Optionally filter by a search query that matches project name or key.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional search query to filter projects by name or key

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool lists projects with optional filtering, but doesn't describe important behaviors like pagination, rate limits, authentication requirements, sorting order, or what 'all projects' means in practice (e.g., archived projects included?). For a list operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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?

The description is perfectly concise with two clear sentences: one stating the core purpose and one explaining the optional parameter. Every word earns its place, and the information is front-loaded with the primary function stated first. No wasted words or unnecessary elaboration.

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

Completeness3/5

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

Given the tool's moderate complexity (list operation with filtering), no annotations, and no output schema, the description is minimally adequate but incomplete. It covers what the tool does and the parameter purpose, but lacks behavioral context (pagination, permissions, etc.) and output format information. For a tool with 1 parameter and 100% schema coverage, it meets basic needs but leaves important operational questions unanswered.

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?

Schema description coverage is 100%, so the schema already fully documents the single optional 'query' parameter. The description adds that the query filters by 'project name or key', which slightly elaborates beyond the schema's 'filter projects by name or key'. However, this is minimal additional value since the schema already provides the essential information.

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

Purpose4/5

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

The description clearly states the action ('List all projects') and resource ('in the organization'), making the purpose immediately understandable. It distinguishes from siblings like 'get_project' (singular retrieval) and 'create_project' (creation), though it doesn't explicitly name these alternatives. The description is specific but could be more precise about sibling differentiation.

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

Usage Guidelines3/5

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

The description implies usage for listing projects with optional filtering, but provides no explicit guidance on when to use this tool versus alternatives like 'get_project' for single project retrieval or 'create_project' for creation. It mentions filtering capability but doesn't specify scenarios where filtering is appropriate versus retrieving all projects.

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

list_targetsC

Get all targets (user attributes) for a project. Targets are used in targeting rules for A/B testing.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesProject key

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it's a read operation ('Get'), but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, error conditions, or what format the targets are returned in. The description adds minimal context about targets being used for A/B testing, but lacks operational details.

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?

Two concise sentences with zero waste. The first sentence states the purpose clearly, and the second adds helpful context about targets' use in A/B testing. It's appropriately sized and front-loaded with the core functionality.

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

Completeness2/5

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

For a read operation with no annotations and no output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., list format, fields included), pagination behavior, or error handling. The context about A/B testing is useful but insufficient for operational understanding.

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?

Schema description coverage is 100%, with the single parameter 'projectKey' documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate since the schema handles parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'all targets (user attributes) for a project', with additional context that targets are used in A/B testing targeting rules. It distinguishes from siblings like 'get_target' (singular) by specifying 'all targets', but doesn't explicitly differentiate from other list_* tools like list_features or list_environments.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'get_target' (singular) or other list_* tools. The description implies usage for retrieving all targets for a project, but lacks context on prerequisites, when not to use it, or comparison to sibling tools.

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

update_environmentC

Update an existing environment's properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesEnvironment ID or unified key
nameNoNew display name
colorNoNew color (hex code)
urlNoEnvironment URL
productionNoWhether this is a production environment

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but fails to mention critical aspects like required permissions, whether changes are reversible, error handling, or rate limits. This is a significant gap for a mutation tool with zero annotation coverage.

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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given this is a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits, error conditions, and output expectations, leaving the agent with insufficient context for safe and effective use.

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?

The schema description coverage is 100%, so the input schema fully documents all 5 parameters. The description adds no additional meaning beyond the schema, such as explaining relationships between parameters or providing usage examples. The baseline score of 3 reflects adequate but minimal value added by the description.

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

Purpose4/5

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

The description clearly states the action ('Update') and the resource ('an existing environment's properties'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'update_feature' or 'update_project', which also update properties of different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing environment ID), exclusions, or comparisons to sibling tools like 'create_environment' or 'delete_environment', leaving the agent with minimal context for decision-making.

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

update_featureC

Update an existing feature's properties like name, description, or variants.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key
nameNoNew display name for the feature
descriptionNoNew description for the feature

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but lacks details on permissions required, whether changes are reversible, rate limits, or what happens to unspecified properties. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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?

The description is a single, efficient sentence that front-loads the core action and key updatable fields. It avoids unnecessary words, though the mention of 'variants' (not in schema) is a minor inefficiency. Overall, it's appropriately sized for its purpose.

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

Completeness2/5

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

Given the tool's complexity (mutation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error conditions, response format, or interaction with sibling tools (e.g., 'archive_feature'). For a mutation tool, this leaves critical gaps for the agent.

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?

Schema description coverage is 100%, so the input schema fully documents all three parameters (idOrUnifiedKey, name, description). The description adds minimal value by listing 'name, description, or variants' as updatable properties, but 'variants' is not in the schema, creating slight confusion. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('an existing feature's properties'), specifying the editable fields (name, description, or variants). It distinguishes from siblings like 'create_feature' (new vs. existing) and 'delete_feature' (modify vs. remove), though not explicitly. However, it doesn't fully differentiate from 'update_feature_control' (which might handle different aspects), keeping it at 4.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives is provided. It implies usage for modifying existing features but doesn't mention prerequisites (e.g., feature must exist), exclusions (e.g., cannot update archived features), or comparisons to siblings like 'update_feature_control'. This leaves the agent without clear decision-making context.

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

update_feature_controlC

Update feature control settings for a specific environment. Can enable/disable the feature, change the off variant, and modify rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUnifiedKeyYesFeature ID or unified key
environmentKeyYesEnvironment key
enabledNoWhether the feature is enabled in this environment
offVariantKeyNoThe variant to serve when the feature is disabled

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what can be changed, not behavioral aspects like permission requirements, whether changes are reversible, impact on existing configurations, or error handling. 'Update' implies mutation but lacks safety or operational context.

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?

Two concise sentences efficiently cover purpose and scope without redundancy. However, it could be more front-loaded by explicitly stating it's for mutating environment-specific feature controls upfront.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't address critical context like what 'rules' entail, response format, error conditions, or how changes propagate, leaving significant gaps for agent understanding.

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?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value by listing updatable fields (enable/disable, off variant, rules), which aligns with schema parameters but doesn't provide additional syntax, format, or constraint details beyond what's already structured.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('feature control settings for a specific environment'), specifying the scope of changes (enable/disable, off variant, rules). It distinguishes from siblings like 'update_feature' by focusing on environment-specific controls rather than general feature properties.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'update_feature' or 'get_feature_control'. The description implies it's for modifying environment-specific settings but doesn't clarify prerequisites, dependencies, or exclusion criteria.

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

update_projectC

Update an existing project's name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrKeyYesThe project ID or key to update
nameYesNew display name for the project

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states this is an update operation but doesn't disclose behavioral traits like required permissions, whether changes are reversible, potential side effects, or error conditions. This is a significant gap for a mutation tool with zero annotation coverage.

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?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is insufficient. It doesn't explain what the update entails beyond the name, potential impacts, or what the return value might be, leaving critical gaps for an agent to use it effectively.

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?

The schema description coverage is 100%, so the schema already documents both parameters ('idOrKey' and 'name') adequately. The description adds no additional meaning beyond implying the tool updates a project's name, which aligns with the schema but doesn't provide extra context like format examples or constraints.

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

Purpose4/5

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

The description clearly states the verb ('update') and resource ('existing project's name'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'update_environment' or 'update_feature' beyond specifying the resource type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_project' or other update tools. It lacks context about prerequisites, such as needing an existing project, or exclusions, leaving the agent to infer usage from the tool name alone.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity, as they target specific resources (feature, environment, project, target, API key) and actions (create, get, list, update, delete, clone, archive). Overlap is minimal, such as 'get_feature' and 'get_feature_control' which serve different levels of detail, and descriptions clarify boundaries effectively.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly (e.g., create_feature, list_environments, update_project). The naming convention is predictable, making it easy for agents to infer functionality and maintain readability across all 22 tools.

Tool Count4/5

With 22 tools, the count is slightly high but reasonable for a feature flag management system, covering CRUD operations for multiple resources (features, environments, projects, targets, API keys). It feels comprehensive rather than bloated, though it borders on the upper limit of typical scoping (3-15 tools).

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for the feature flag management domain, including creation, retrieval, listing, updating, deletion, and specialized operations like cloning and archiving. No obvious gaps exist; agents can perform all core workflows without dead ends, from project setup to feature control updates.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with LaunchDarkly's feature flag platform through AI clients. Supports managing feature flags, AI configs, and their variations with operations like create, update, delete, and targeting configuration.
    29,939
    27
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI coding assistants to manage Unleash feature flags, including creation, detection, evaluation, and best practices.
    11
    593
    21
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with PostHog's product analytics platform through natural language, allowing users to manage feature flags, view errors, and access other platform features.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/featureflow/featureflow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server