Control Plane OpenAPI MCP Server
OfficialClick 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., "@Control Plane OpenAPI MCP Serversearch for cluster management operations"
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.
Control Plane OpenAPI MCP Server
This MCP (Model Context Protocol) Server provides seamless integration with the Facets Control Plane API through its OpenAPI specification. It enables AI assistants to understand, explore, and interact with the complete Facets Control Plane API, making infrastructure management and API integration more accessible through natural language interactions.
Key Features
Real-time OpenAPI Integration
Automatically fetches and processes the latest OpenAPI specification from Facets Control Plane, ensuring you always have access to current API documentation.Built-in Script Generation Guidance
Includes an MCP prompt that provides step-by-step guidance for creating production-ready scripts that interact with Control Plane APIs, with best practices for authentication, testing, and error handling.Intelligent Operation Filtering
Automatically excludes deprecated operations (17 filtered out of 566 total) to provide clean, relevant results and improved search performance.Advanced Fuzzy Search
Search through 549 active operations and 500+ schemas using natural language queries with intelligent matching across summaries, descriptions, tags, and operation IDs.Comprehensive API Coverage
Access complete operation details including parameters, request bodies, response schemas, and authentication requirements for all Facets Control Plane endpoints.Smart Caching System
Intelligent TTL-based caching minimizes API calls while ensuring fresh data, with configurable cache duration for optimal performance.Detailed Schema Exploration
Explore complex data structures with property listings, type information, and relationship mappings for all API schemas.
Related MCP server: Bauplan MCP Server
Available MCP Tools
Tool Name | Description |
| š Start here! Loads comprehensive API script generation guide - call this tool first before using others. |
| Refreshes the API catalog by fetching the latest OpenAPI specification from the control plane. |
| Search for operations using fuzzy matching across operation IDs, summaries, descriptions, and tags. |
| Search for schemas by name and description to find relevant data structures. |
| Load detailed operation information by its unique operation ID including parameters and responses. |
| Load operation details by specifying the exact API path and HTTP method. |
| Load comprehensive schema details including properties, types, and validation requirements. |
| Make authenticated GET requests to the Control Plane API using the provided path. |
Available MCP Prompts
Prompt Name | Description |
| Provides step-by-step guidance for creating production-ready scripts that interact with Control Plane APIs. |
Prerequisites
The MCP Server requires uv for dependency management and execution.
Install uv with Homebrew:
brew install uvFor other installation methods, see the official uv installation guide.
Installation
Option 1: Install from PyPI (Recommended)
The easiest way to install and use the MCP server is directly from PyPI. This method always uses the latest published version.
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"control-plane-openapi": {
"command": "uvx",
"args": ["control-plane-openapi-mcp"],
"env": {
"CONTROL_PLANE_URL": "https://<customername>.console.facets.cloud",
"FACETS_USERNAME": "<YOUR_USERNAME>",
"FACETS_TOKEN": "<YOUR_TOKEN>",
"FACETS_PROFILE": "default",
"CACHE_TTL": "3600"
}
}
}
}Option 2: Install from Source
If you want to modify the code or contribute to development, clone the repository and run from source.
Clone the repository:
git clone https://github.com/Facets-cloud/control-plane-openapi-mcp.git cd control-plane-openapi-mcpAdd the following to your
claude_desktop_config.json:
{
"mcpServers": {
"control-plane-openapi": {
"command": "uv",
"args": ["run", "--directory", "/path/to/your/cloned/control-plane-openapi-mcp", "control-plane-openapi-mcp"],
"env": {
"CONTROL_PLANE_URL": "https://<customername>.console.facets.cloud",
"FACETS_USERNAME": "<YOUR_USERNAME>",
"FACETS_TOKEN": "<YOUR_TOKEN>",
"FACETS_PROFILE": "default",
"CACHE_TTL": "3600"
}
}
}
}ā ļø Replace <YOUR_USERNAME> and <YOUR_TOKEN> with your actual Facets credentials.
Environment Variables
CONTROL_PLANE_URL: Base URL of the Facets Control Plane (default: demo instance)FACETS_USERNAME: Your Facets username for API authenticationFACETS_TOKEN: Your Facets access token for API authenticationFACETS_PROFILE: Facets profile to use from credentials file (default: "default")CACHE_TTL: Cache time-to-live in seconds (default: 3600)
Authentication
The server supports two authentication methods:
Environment Variables: Set
FACETS_USERNAMEandFACETS_TOKENCredentials File: Configure
~/.facets/credentialswith profile-based credentials
For credential setup, refer to the Facets Authentication Guide.
Usage Highlights
Uses
search_api_operationsandsearch_api_schemasto find relevant endpoints using natural languageUses specific load operations to get detailed parameter and response information
Uses
call_control_plane_apito make actual API calls and get real data from your Facets environmentLeverages the fuzzy search to find operations even with partial or approximate terms
API Coverage
The server provides access to the complete Facets Control Plane API including:
Stack Management: Create, update, delete, and manage infrastructure stacks
Cluster Operations: Deploy, monitor, and manage Kubernetes clusters
Artifact Management: Handle CI/CD artifacts and routing rules
User & Access Control: Manage users, groups, roles, and permissions
Resource Management: Handle cloud resources and configurations
Monitoring & Alerts: Access deployment logs, metrics, and monitoring data
Authentication: OAuth integrations, tokens, and account management
Example Prompts
When using with Claude, try these example prompts:
"Show me all project-related operations in the Facets API"
"What are the required parameters for creating a new project?"
"Find operations related to environment deployments"
"Show me the project schema structure with all its properties"
"Generate a TypeScript interface for the project model"
"Get the current list of projects from my environment"
"Show me details of a specific project named 'my-production-project'"
"What environments are running in my Facets environment?"
"Create an example API call to get project information"
"Find all endpoints that handle artifact routing"
"What authentication methods are available in the API?"Local Development
Setting Up Development Environment
Clone the repository (if not already done):
git clone https://github.com/Facets-cloud/control-plane-openapi-mcp.git cd control-plane-openapi-mcpCreate virtual environment and install dependencies:
uv syncActivate the virtual environment:
source .venv/bin/activate # On macOS/Linux # or .venv\Scripts\activate # On Windows
Testing the MCP Server
# Start the MCP server (will wait for stdin input)
uv run control-plane-openapi-mcp
# Test with custom OpenAPI URL
FACETS_OPENAPI_URL="https://your-instance.com/v3/api-docs" uv run control-plane-openapi-mcpDevelopment Workflow
Make changes to the source code
Test locally using the example scripts
Verify MCP integration with Claude Desktop
Run validation to ensure no regressions
Commit changes with descriptive messages
Project Structure
control_plane_openapi_mcp/
āāā __init__.py # Package initialization
āāā config.py # Configuration and MCP setup
āāā server.py # Main MCP server entry point
āāā tools.py # MCP tool implementations
āāā core/ # Core functionality
āāā models.py # Pydantic data models
āāā spec_loader.py # OpenAPI spec fetching and processing
āāā spec_processor.py # Operation and schema extraction
āāā search.py # Fuzzy search engine
āāā cache.py # TTL-based caching
āāā service.py # Main orchestrating serviceArchitecture
SpecLoader: Fetches and processes OpenAPI specifications with JSON reference resolutionSpecProcessor: Extracts operations and schemas while filtering deprecated endpointsSearchEngine: Provides fuzzy search capabilities with configurable matching thresholdsOpenAPIService: Main service coordinating all components with intelligent cachingSimpleCache: TTL-based caching for performance optimizationMCP Tools: Specialized tools exposing functionality to AI assistants
License
This project is licensed under the MIT License. You are free to use, modify, and distribute it under its terms.
Available Tools
8 toolscall_control_plane_apiA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Make a GET request to the Facets Control Plane API.
Args: path (str): API path to call (e.g., '/cc-ui/v1/stacks/my-stack' or 'cc-ui/v1/stacks')
Returns: str: JSON string containing the API response or error information.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the HTTP method (GET), return format (JSON string), and error handling (returns error information). The <important> prerequisite also adds context about required prior steps. It does not mention auth or rate limits, but the prerequisite likely covers that.
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 compact and front-loaded, with an <important> block immediately stating the prerequisite, followed by a one-sentence description and a simple Args/Returns structure. Every sentence earns its place with no fluff.
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 tool with one parameter and simple GET behavior, the description covers purpose, parameter usage, return value, and the required prerequisite. The presence of an output schema further reduces the need to explain return structure, though the description already says it returns a JSON string.
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 description explains the 'path' parameter with examples ('/cc-ui/v1/stacks/my-stack' or 'cc-ui/v1/stacks'), adding format and context beyond the schema's bare string type. Since schema description coverage is 0%, this fully compensates for the missing parameter documentation.
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 it makes a GET request to the Facets Control Plane API, specifying the verb (GET) and resource (Control Plane API). It also includes a prerequisite hint, distinguishing it from sibling catalog/search tools.
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 gives a clear prerequisite: 'Make sure you have Called FIRST_STEP_get_api_script_guide first before this tool.' This implies when to use the tool (after obtaining the guide) and differentiates it from catalog/search tools, though it does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
FIRST_STEP_get_api_script_guideA
ALWAYS Call this tool first before calling any other tool of this mcp. Loads the API script generation guide that contains comprehensive instructions for creating scripts that interact with Control Plane APIs.
Returns: str: A JSON string containing the content of the API script guide.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It states that the tool returns 'a JSON string containing the content of the API script guide,' which is the core expected behavior. It does not explicitly discuss side effects, but for a guide-loading tool, none are expected. This is more informative than a bare 'get guide' description.
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 highly concise and effectively front-loaded. It begins with a vital directive in a highlighted <important> tag, then gives a one-sentence purpose, and finishes with a clear return type. Every sentence earns its place.
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 simplicity (no parameters, returns a string), the description is fully complete. It specifies the return format and the mandatory first-call position in the workflow. The sibling tools are all different, and no additional 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 tool has zero parameters, so the baseline is 4. The input schema is empty and thus requires no additional explanation. The description appropriately focuses on the return value rather than parameters.
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 'Loads the API script generation guide' and explains what the guide contains (comprehensive instructions for creating scripts that interact with Control Plane APIs). The verb 'loads' and specific resource make it distinct from sibling tools that search or call APIs.
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?
Explicitly instructs the agent to 'ALWAYS Call this tool first before calling any other tool of this mcp.' This strong, unambiguous usage guidance leaves no doubt about when and how to use the tool in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_api_operation_by_operationIdA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Load a specific operation by its operationId.
Args: operation_id (str): The unique operation ID to load.
Returns: str: JSON string containing the complete operation details or null if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations exist, the description carries the behavioral transparency burden. It discloses the return type as 'JSON string containing the complete operation details or null if not found,' which informs the agent about output and failure behavior. The mandatory prerequisite step is also a behavioral trait. However, it does not explicitly state that the operation is read-only or free of side effects, though 'load' implies this.
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 well-structured: a bolded prerequisite, a one-line purpose, and concise Args/Returns documentation. Every sentence contributes necessary information without redundancy. The format is easy to parse and front-loads the critical prerequisite.
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 simple one-parameter load tool, the description covers all necessary context: prerequisite, function, parameter semantics, return format, and null case. The existence of an output schema means the return structure need not be explained further. The description is complete given the tool's simplicity and available metadata.
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 only specifies `operation_id` with type and title, lacking any description (0% coverage). The description compensates by providing an Args block explaining 'The unique operation ID to load.' This adds essential meaning beyond the schema, clarifying the nature and purpose of the parameter.
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 function: 'Load a specific operation by its operationId.' It uses a specific verb 'Load' and identifies the resource (operation) and the key identifier (operationId). This distinguishes it from sibling 'load_api_operation_by_path_and_method', which uses a different identification scheme.
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 gives explicit usage guidance by mandating 'Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool.' This establishes a clear precondition and ordering. It does not explicitly mention alternatives or exclusions, but the prerequisite and phrasing imply it is used when an operationId is known and one needs the full operation details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_api_operation_by_path_and_methodA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Load a specific operation by its path and HTTP method.
Args: path (str): The API endpoint path (e.g., '/cc-ui/v1/stacks/{stackName}'). method (str): The HTTP method (GET, POST, PUT, DELETE, etc.).
Returns: str: JSON string containing the complete operation details or null if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| method | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses the return behavior ('JSON string containing the complete operation details or null if not found') and the prerequisite dependency. However, it does not explicitly state that the operation is read-only, nor does it cover edge behaviors like authentication or error states. This is adequate but minimal for a non-annotated 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 succinct, with a highlighted <important> precondition, then a one-sentence purpose, and clearly separated Args and Returns sections. No extraneous content.
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?
The tool is simple (2 params, no nested objects), and the description covers purpose, parameters, return type, and the prerequisite call. The output schema is present so return values need not be over-explained. Lacks explicit comparison to sibling load_api_operation_by_operationId, but overall it is sufficient for an agent 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 schema provides only type strings with no descriptions (0% coverage). The description compensates by giving a concrete path example and an explicit list of HTTP methods, adding practical meaning to both parameters.
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 states 'Load a specific operation by its path and HTTP method' with a concrete example path. The name and description clearly distinguish it from the sibling load_api_operation_by_operationId which loads by operationId.
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 includes an explicit prerequisite: 'Make sure you have Called FIRST_STEP_get_api_script_guide first before this tool.' This gives clear context for when the tool can be used. It does not explicitly mention when to use this tool vs alternatives, but the method of selection is self-evident from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_api_schema_by_schemaNameA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Load a specific schema by its name.
Args: schema_name (str): The name of the schema to load (e.g., 'Stack', 'ErrorDetails').
Returns: str: JSON string containing the complete schema details or null if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| schema_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of transparency. It discloses the return behavior (JSON string or null if not found) and the prerequisite. However, it does not explicitly state whether the operation is read-only or describe any side effects, which is a notable gap for a tool with no annotations.
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 well-structured with an important note, an Args section, and a Returns section. The important note is essential but styled with an HTML-like tag that adds visual noise. Overall, every sentence earns its place and the content is appropriately sized.
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 simple tool with one parameter and no annotations, the description is fairly complete. It explains the prerequisite, parameter semantics, and return format. The output schema exists, so detailed return values are not required, but the description still summarizes the return behavior adequately.
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 parameter schema has no description coverage (0%), but the description fully compensates by explaining schema_name as 'The name of the schema to load (e.g., 'Stack', 'ErrorDetails')'. This provides type, meaning, and concrete examples, adding clear value beyond the bare 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 'Load a specific schema by its name,' with a specific verb and resource. It distinguishes itself from sibling tools like load_api_operation_by_operationId, as it targets schemas rather than operations. The tool name and description align well.
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?
Provides an explicit prerequisite: 'Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool.' This gives clear context for when to use the tool. However, it does not explicitly mention alternatives or when not to use it, so it lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_api_catalogA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Refresh the API catalog by fetching the latest OpenAPI specification.
Returns: str: Success message confirming the catalog has been refreshed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the refresh action, the fetching of the latest OpenAPI specification, and the return of a success message. However, it omits potential side effects like overwriting existing catalog data and failure modes if the prerequisite is not met, leaving some 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 concise and front-loaded with an important prerequisite instruction. Every sentence contributes meaning, and the structure is clear and efficient.
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 zero-parameter tool, the description covers the action, return value, and a key prerequisite, which is largely complete. It could improve by mentioning error cases or side effects, but given the simplicity of the tool, it is sufficiently contextualized.
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 tool has zero parameters, so the description does not need to explain parameter semantics. The baseline for zero-param tools is 4, and no additional parameter information is required.
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 refreshes the API catalog by fetching the latest OpenAPI specification. This is a specific verb+resource and distinguishes it from sibling tools that search or load API operations/schemas.
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 explicitly instructs that FIRST_STEP_get_api_script_guide must be called first, establishing a clear prerequisite context. However, it does not mention when not to use this tool or provide alternative options, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_operationsA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Search for operations across the OpenAPI specification using fuzzy matching.
Note: Only searches through active (non-deprecated) operations.
Args: query (str): Search query to match against operation summaries, descriptions, tags, and operation IDs.
Returns: str: JSON string containing matching operations with their details.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the fuzzy matching behavior, the restriction to active operations, and the return format (JSON string). It does not mention error handling or no-result behavior, but covers the core behavioral traits for a search 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 concise and well-structured: a prominent prerequisite warning, a clear purpose sentence, a note about active operations, and an Args/Returns section. Every sentence earns its place with no 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 simplicity (one parameter) and the presence of an output schema, the description provides sufficient context: prerequisite, search scope, active-operation filter, and return format. It could mention how to interpret the returned JSON, but that is likely covered by the output schema.
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 only lists 'query' with no description (0% coverage). The description compensates fully by explaining that the query matches operation summaries, descriptions, tags, and operation IDs, adding meaningful semantic context beyond the schema itself.
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 'Search for operations across the OpenAPI specification using fuzzy matching,' combining a specific verb (search), resource (operations), and scope. It distinguishes from sibling tools like search_api_schemas and load_api_operation_by_operationId by focusing on cross-specification search rather than schema lookup or direct loading.
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 explicitly requires calling FIRST_STEP_get_api_script_guide first, giving a clear usage prerequisite. It also notes the restriction to active (non-deprecated) operations, which sets an important boundary. However, it does not explicitly compare against alternative search/load tools, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_schemasA
Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool. Search for schemas across the OpenAPI specification using fuzzy matching.
Args: query (str): Search query to match against schema names and descriptions.
Returns: str: JSON string containing matching schemas with their details.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full disclosure burden. It discloses the fuzzy matching behavior and the return format as a JSON string. However, it does not explicitly state read-only status, permissions, or failure behavior if the prerequisite is not met, leaving some 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 concise and well-structured: it opens with an important prerequisite, then a one-sentence purpose, followed by Args and Returns sections. No redundancy or unnecessary details are present.
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 simple tool with one parameter and an output schema, the description covers the key aspects: purpose, prerequisite, parameter semantics, and return type. However, it lacks explicit information about the tool's non-mutating nature or limitations, so it is not fully complete.
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 no description for the 'query' parameter, but the description compensates fully by stating: 'query (str): Search query to match against schema names and descriptions.' This clearly explains the parameter's meaning and target.
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 function: 'Search for schemas across the OpenAPI specification using fuzzy matching.' This uses a specific verb (search) and resource (schemas), and the presence of the sibling tool search_api_operations indicates differentiation by resource type.
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 includes a clear prerequisite, 'Make Sure you have Called FIRST_STEP_get_api_script_guide first before this tool,' which provides context for when to use it. However, it does not explicitly mention alternatives or exclusions, such as noting that search_api_operations should be used for operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
call_control_plane_api - First observed
FIRST_STEP_get_api_script_guide - First observed
load_api_operation_by_operationId - First observed
load_api_operation_by_path_and_method - First observed
load_api_schema_by_schemaName - First observed
refresh_api_catalog - First observed
search_api_operations - First observed
search_api_schemas
TDQS
Each tool has a clearly distinct purpose: getting the guide, refreshing the catalog, searching operations/schemas, loading specific operations/schemas, and calling the API. There is no overlap or ambiguity between them.
Naming is inconsistent: 'FIRST_STEP_get_api_script_guide' uses an odd prefix, 'load_api_operation_by_operationId' mixes snake_case with camelCase, and verbs vary (get, refresh, search, load, call). No consistent pattern across the set.
8 tools is well within the ideal range for an API discovery and invocation server. Each tool serves a necessary function without bloat or trivial additions.
The server covers the core workflow: loading the guide, refreshing the catalog, searching and loading operations/schemas, and making GET requests. However, it only supports GET calls and lacks a tool to list all operations/schemas in bulk, which are minor gaps.
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
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to discover, search, and interact with REST APIs by parsing OpenAPI/Swagger specifications with intelligent fuzzy search across endpoints, supporting both local and remote API sources.122MIT

Bauplan MCP Serverofficial
AlicenseBqualityAmaintenanceEnables AI assistants to interact with Bauplan lakehouse operations, including querying tables, schema inspection, branch management, and pipeline execution.3315MIT- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and manage Flowcore resources through a structured API.2399-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with OSDU platform services including search, data management, and schema operations.6Apache 2.0
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/Facets-cloud/control-plane-openapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server