Featureflow MCP Server
OfficialThis server enables AI assistants to manage Featureflow feature flags, projects, and environments programmatically through the Model Context Protocol.
Core Capabilities:
Account Management: Get current user and organization information
Project Management: List, create, view, update, and delete projects with search filtering
Feature Flag Management: Full lifecycle management including create, update, clone, archive/unarchive, and delete with filters for project, archived status, and predefined filters (maintaining, bookmarked, recent)
Feature Control Configuration: View and modify feature settings per environment including enable/disable states, off variants, and targeting rules
Environment Management: Create, list, update, and delete environments with cloning capabilities and safeguards
Targeting System: List and view targeting attributes (user attributes) used for A/B testing rules
API Key Management: List SDK API keys for environments (server and client types)
Self-Hosted Support: Configure for self-hosted Featureflow instances
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Featureflow MCP Serverenable the 'dark-mode' feature in production"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Featureflow MCP Server
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
Log into Featureflow as an administrator
Navigate to Administration → API Tokens
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 |
| Personal Access Token (required) | - |
| API base URL (optional) |
|
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 the currently authenticated user and organization |
Projects
Tool | Description |
| List all projects, optionally filtered by query |
| Get a specific project by ID or key |
| Create a new project |
| Update an existing project |
| Delete a project |
Features
Tool | Description |
| List features with optional filters |
| Get a specific feature by ID or unified key |
| Create a new feature flag |
| Update an existing feature |
| Clone a feature with a new key |
| Archive or unarchive a feature |
| Delete a feature |
Feature Controls
Tool | Description |
| Get feature control settings for an environment |
| Enable/disable features, modify rules |
Environments
Tool | Description |
| List environments for a project |
| Get a specific environment |
| Create a new environment |
| Update an existing environment |
| Delete an environment |
Targets & API Keys
Tool | Description |
| List targeting attributes for a project |
| Get a specific target by key |
| 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 startLicense
MIT - see LICENSE for details.
Links
Featureflow - Feature flag management platform
MCP Protocol - Model Context Protocol specification
Featureflow Documentation - API documentation
Available Tools
22 toolsarchive_featureC
Archive or unarchive a feature flag.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key | |
| archived | Yes | Set to true to archive, false to unarchive |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key of the source feature to clone | |
| newKey | Yes | Key for the cloned feature | |
| name | Yes | Name for the cloned feature |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | The project key where the environment will be created | |
| key | Yes | Unique environment key within the project | |
| name | Yes | Display name for the environment | |
| color | No | Color for the environment (hex code) | |
| production | No | Whether this is a production environment | |
| cloneEnvironmentKey | No | Optional environment key to clone settings from |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | The project key where the feature will be created | |
| key | Yes | Unique feature key within the project (lowercase, no spaces) | |
| name | Yes | Display name for the feature | |
| description | No | Optional description of the feature |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Unique project key (lowercase, no spaces, use hyphens) | |
| name | Yes | Display name for the project |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Environment ID or unified key to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrKey | Yes | The project ID or key to delete |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Environment ID or unified key (e.g., 'myproject:production') |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key (e.g., 'myproject:my-feature') |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key | |
| environmentKey | Yes | Environment key (e.g., 'development', 'production') |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrKey | Yes | The project ID or key |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | Project key | |
| targetKey | Yes | Target key to look up |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| environmentKey | Yes | Environment unified key (projectKey:environmentKey format) | |
| type | No | Optional type filter for API keys |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Optional project key to filter environments |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Project key to filter features | |
| query | No | Search query to match feature key or name | |
| filter | No | Predefined filter type | |
| archived | No | Include archived features (default: false) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional search query to filter projects by name or key |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | Project key |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Environment ID or unified key | |
| name | No | New display name | |
| color | No | New color (hex code) | |
| url | No | Environment URL | |
| production | No | Whether this is a production environment |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key | |
| name | No | New display name for the feature | |
| description | No | New description for the feature |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrUnifiedKey | Yes | Feature ID or unified key | |
| environmentKey | Yes | Environment key | |
| enabled | No | Whether the feature is enabled in this environment | |
| offVariantKey | No | The variant to serve when the feature is disabled |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrKey | Yes | The project ID or key to update | |
| name | Yes | New display name for the project |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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).
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
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
Evaluate and inspect your Hypertune feature flags from your AI assistant.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI agents to CloudBees Unify: feature flags, CI/CD, release orchestration, and security
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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,93927MIT

Unleash MCP Serverofficial
AlicenseAqualityCmaintenanceEnables AI coding assistants to manage Unleash feature flags, including creation, detection, evaluation, and best practices.1159321MIT- AlicenseNot gradedqualityCmaintenanceEnables interaction with PostHog's product analytics platform through natural language, allowing users to manage feature flags, view errors, and access other platform features.1MIT

DevCycle MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI coding assistants like Cursor and Claude to manage DevCycle feature flags directly from the development environment.11,96120MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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