openstack-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool targets a distinct resource or action: list_* tools cover different collections (servers, flavors, images, networks, security groups, keypairs, volumes), get_server and get_quotas provide single-item or summary detail, check_capacity is specialized for quota feasibility, cloud_info handles context, and get_console_output is uniquely for diagnostics. No two tools overlap in purpose.
Naming Consistency4/5Most tools follow a clear verb_noun convention (list_*, get_*, check_*). The only minor deviation is cloud_info, which uses a noun phrase instead of the verb-first pattern, but it's still descriptive and doesn't cause confusion.
Tool Count5/5With 12 tools, the surface is well-scoped for an OpenStack introspection server. Each tool covers a meaningful piece of the domain (compute, network, storage, quotas) without redundancy or bloat, fitting comfortably within the ideal range.
Completeness2/5The tool set is entirely read-only—no create, update, or delete operations for any resource (e.g., no create_server, delete_volume, update_security_group). While it excels at listing, retrieving, and capacity checking, it lacks lifecycle management capabilities that would be expected from a full OpenStack integration, leaving significant gaps for agents that need to modify infrastructure.
Average 3.9/5 across 11 of 12 tools scored. Lowest: 3.1/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint, which already convey that this is a safe read operation. The description adds the detail about rule counts, which is a small behavioral context, but it doesn't disclose potential rate limits, whether it returns all groups at once, or if it supports pagination. Given the annotations, the description partially complements them but does not go beyond basic expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without excess. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, but the description does not explain the return structure beyond rule counts. Given the simple parameter set and read-only nature, the description is minimally adequate but lacks details on pagination or ordering that could be important. It is complete enough for a basic list operation but not exemplary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate for the parameter 'limit', but it does not mention it at all. The description ignores the limit parameter, leaving the agent without guidance on how to use it (e.g., whether it's for pagination or limiting results). This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists security groups and includes the count of rules each contains, which distinguishes it from sibling tools like list_networks or list_servers. However, it does not explicitly mention the scope (e.g., project-wide or all groups) that could further differentiate it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives, such as get_server for detailed info or list_keypairs. It lacks any mention of filtering, pagination, or context-specific usage, leaving the agent to infer when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety and open-world behavior are covered. The description adds the useful detail that volume size and attachments are returned, but it does not disclose pagination behavior, limit semantics, or any additional operational traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core purpose and key output aspects efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, an output schema, and open-world annotation, the description is largely complete. It names the resource and salient output fields; the main gap is not describing the 'limit' parameter behavior, though the schema partially covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains one optional 'limit' parameter with default null, but schema description coverage is 0%. The description does not explain what 'limit' controls (e.g., maximum number of volumes returned, pagination size), so it fails to compensate for the lack of schema-level descriptive text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List') and resource ('block storage volumes'), and adds specific output details (size and attachments). It distinguishes itself from sibling list tools like list_servers and list_networks by naming the volume resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, no exclusions, and no stated fallback behavior. It only implies usage by naming the resource, which is not enough to satisfy this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already conveyed. The description adds the diagnostic intent but does not disclose any additional behavioral traits such as potential rate limits, output size, or required permissions. Since annotations cover the read-only nature, the description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise — two short sentences packed with purpose and use case. There is no fluff or redundancy. Every part adds value, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 params, output schema present, read-only annotations), the description covers the core action and purpose. However, the lack of parameter documentation is a notable gap in an otherwise complete picture, and the description could benefit from noting that it requires an existing VM identifier.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no explanation of the parameters 'name_or_id' or 'lines'. With schema description coverage at 0%, the description must compensate, and it fails to do so. It does not even hint that one must specify an instance identifier or that the number of lines is configurable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Read the serial console log of an instance' and adds a specific use case ('fastest way to diagnose a VM that boots but is unreachable'). It uses a specific verb (Read) and resource (serial console log of an instance), and the differentiation from sibling tools (like get_server) is implicit but clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-to-use scenario: 'the fastest way to diagnose a VM that boots but is unreachable.' It does not explicitly mention alternatives or when not to use it, but the context is sufficient for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and there's no destructive action, so the description does not need to repeat that. The description adds useful context by specifying that flavors are instance sizes and that the output includes vCPU, RAM, and disk, which goes beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with the verb 'List' and immediately states the resource and key attributes. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple and has an output schema, the description omits any mention of the 'limit' parameter. For a listing tool with an optional limit, the description should at least hint at its purpose (e.g., 'with optional limit on number of flavors returned'). Without that, the description is incomplete for the parameter. However, given it's a simple list and output schema exists, it's otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the 'limit' parameter at all. Schema coverage is 0% (the schema has no description field), so the description must compensate, but it doesn't. An agent would not know what 'limit' does without external knowledge, making this a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List available flavors (instance sizes) with vCPU, RAM, and disk.' It uses a specific verb and resource, and distinguishes itself from sibling tools like list_servers or list_images by focusing on flavors and their attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage: to get a list of flavor options with resource specs. However, it does not explicitly state when to use this over alternatives or any exclusions. Given the simplicity of the tool and the sibling list (cloud_info, list_servers, etc.), the purpose is clear enough, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true and openWorldHint=true, and the description aligns with these, so no contradiction. However, the description does not add behavioral context beyond the annotations, such as whether the list is paginated, sorted, or includes all image details. With openWorldHint=true, the agent might expect filtered results but the description doesn't explain the default visibility of all images. The description adds some value by stating 'bootable' and the filter, but lacks details on return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the primary action. It effectively communicates the core purpose without unnecessary detail. Every word earns its place, and the optional filter is mentioned succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (though not detailed here) and annotations indicating read-only and open-world behavior, the description is sufficiently complete for a simple list operation. The optional name filter is mentioned, and the limit parameter is self-explanatory. The tool is not overly complex, and the description covers the key aspects, though it could explicitly note pagination or output structure, but the output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two optional parameters: name and limit, with 0% description coverage. The description mentions 'filtered by a name substring,' which partially explains the name parameter, but the limit parameter is not explained. Since the schema already provides parameter names, the description adds minimal additional semantics. Baseline 3 is appropriate given the schema exists, but coverage is low, so description should compensate more; it does provide the filter hint, earning a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists bootable images with an optional name substring filter. The verb 'list' and resource 'bootable images' are specific, and the 'optionally filtered' clause adds scope. It is distinguishable from siblings like list_servers, list_flavors, etc., though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—when you need to list bootable images—but does not provide explicit guidance on when not to use it or mention alternatives. For instance, it doesn't clarify that get_server or cloud_info might be used for other image-related queries. The optional filtering is mentioned, but no context on the filter syntax or purpose beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and openWorldHint=true, which already indicate a safe, non-mutating operation. The description adds that it lists key pairs registered in this project, giving context about the scope (project-level). It does not contradict annotations and adds minimal extra value, but since annotations cover the key aspects, a 4 is appropriate for adding the project scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that fully expresses the purpose. No filler words. Perfect front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, annotations declaring read-only and open world, and the description clearly states the purpose, the description is complete enough. An output schema exists, so return values are documented elsewhere. The only minor gap is not specifying whether the list includes all key pairs or just those associated with the current user, but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (vacuously, as there are no properties). The description does not need to explain parameters, and there is nothing missing. Baseline for 0 params is 4, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (SSH key pairs), and scopes it to a project. It is distinct from siblings like list_servers and list_networks because the resource is unique, though it could have been more explicit about the project scope being the current one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving key pair information, but does not provide explicit guidance on when to use this tool versus alternatives. Given the sibling tools are all listing operations for different resources, the resource name alone is sufficient to differentiate, but explicit 'when to use' guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by listing the specific fields returned (flavor, image, key pair, etc.). This clarifies what 'full detail' means. It does not disclose potential errors or edge cases, but for a read-only operation with annotation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core purpose ('Full detail for one instance') and then lists the key fields. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple get-by-identifier operation with an existing output schema and read-only annotations, the description provides sufficient context by listing the returned attributes. It doesn't mention error cases, but that is not critical for such a straightforward read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'one instance' but does not explicitly explain the 'name_or_id' parameter. The parameter name is self-explanatory, and the description implies identification without stating it directly. Since schema coverage is 0%, the description should compensate more but doesn't fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full detail for one instance' and enumerates specific attributes (flavor, image, key pair, security groups, addresses, metadata), making the tool's purpose unambiguous and distinguishing it from list-type siblings like list_servers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for fetching details of a single instance, but does not explicitly state when to prefer this over siblings like list_servers or get_console_output. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds behavioral context beyond annotations by noting that the tool flags external networks and limits to project-scoped networks. This extra detail helps the agent understand what the output will contain without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and resource, and includes a key differentiator ('flagging which are external') with zero wasted words. It is concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema, so the description covers the core action. However, it omits any mention of the 'limit' parameter behavior or what 'external' means exactly, which could leave the agent uncertain about pagination or result interpretation. Given the existence of an output schema, return values are defined, but the missing parameter semantics slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% because the description does not mention the 'limit' parameter at all. With only one optional parameter, the description should compensate by explaining its usage (e.g., 'limits the number of networks returned'), but it provides no parameter information. The parameter name 'limit' is self-explanatory, but the description fails to add any semantic value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb ('List'), the resource ('networks'), and the scope ('available to this project'), and adds a unique detail ('flagging which are external') that distinguishes it from sibling list tools like list_servers or list_images. This clearly defines the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying 'available to this project', which implies the tool is scoped to the current project and should be used when needing network information. It does not explicitly exclude alternatives or mention when not to use it, but the context is unambiguous. No alternative tools are named, but the purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which cover the safety profile. The description adds value by disclosing the filtering behavior (status/name) and the return of IP addresses, but it doesn't discuss pagination, limit semantics, or other operational traits beyond that. Given the annotation coverage, this is a reasonable but not extensive transparency level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and filters, with no redundant or extraneous content. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with an output schema (which likely explains returned fields), the description adequately covers the main purpose and filtering options. The main gap is the unmentioned 'limit' parameter, but overall it is reasonably complete for its complexity and existing structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It clarifies 'status' (with examples ACTIVE, SHUTOFF) and 'name' (substring filter), but it entirely omits the 'limit' parameter, leaving its meaning (likely max results) ambiguous. This partial coverage meets a minimum but leaves a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('instances') along with specific output fields ('status and IP addresses'). It distinguishes itself from sibling tools like 'get_server' by indicating it lists multiple instances rather than retrieving a single one, and it's not tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context by mentioning optional filters for status and name substring, which helps agents know how to narrow results. However, it doesn't explicitly mention when to use this tool instead of alternatives (e.g., get_server) or any exclusion criteria, so it falls short of an explicit 'when-not' guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool's safety is known. The description adds that it reports which operations are enabled, which is a helpful behavioral detail, but it doesn't elaborate on the expected output format, variability, or any other side effects. With annotations covering the core safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary purpose. Every word adds value without redundancy, making it highly concise and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is sufficiently complete. It names the key outputs (cloud, region, project, enabled operations) and the context ('these tools are pointed at'). The low complexity of the tool doesn't warrant further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description has no need to explain them. Schema coverage is 100% (empty schema is fully described). The baseline for zero parameters is 4, and the description doesn't need to compensate for missing parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: identify the cloud, region, and project the tools are pointed at, and report enabled operations. It uses a specific verb ('identify') and resource ('cloud, region, project') and distinguishes itself from sibling tools that focus on individual resources rather than the environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on what the tool is for (checking the environment) but lacks explicit guidance on when to use it versus alternatives or when not to use it. The distinction from siblings is implied by the focus on environment-level info, but no specific exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and openWorldHint=true, so the tool is known to be a safe read operation. The description adds that it reports usage against limits, indicating it returns a comparison. It does not detail pagination or response structure, but with the output schema present and readOnlyHint covering safety, the description adds adequate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. It provides essential information without any superfluous words. Each word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (no parameters, no nested objects) and the presence of an output schema, the description is sufficient. It clearly states what is reported. It might mention whether it covers all regions or projects, but with openWorldHint and low complexity, the description is complete enough for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter schema to clarify. The schema description coverage is 100% (vacuously true). The description does not need to add parameter semantics. Baseline for 0 params is 4, and the description adds value by specifying the scope of the report without needing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Report' and explicitly names the resource 'compute quota usage' and the key attributes measured ('instances, vCPUs, and RAM'). This clearly distinguishes it from sibling tools like list_servers or list_flavors, which list entities rather than report usage against limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this is the tool to check quota usage and limits, which is distinct from capacity check (check_capacity). It does not explicitly state when not to use it or name alternative tools, but the context implies its usage in compute resource planning. Given the sibling set includes check_capacity, some extra clarity could be added, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description aligns with these by describing a read-only check. It adds value by specifying that the tool checks remaining quota, which is not explicitly stated in the annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the main action and includes both parameters. There is no redundancy or extra information, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are handled externally. The description covers the essential scenario (pre-creation check) and is sufficient for a simple tool. It could mention that results may be stale due to openWorldHint, but that is not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description directly explains both parameters: '`count` instances of `flavor`' clarifies that 'count' is the number of instances and 'flavor' is the instance type. Since schema description coverage is 0%, this inline explanation fully compensates and adds meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check whether `count` instances of `flavor` fit inside the project's remaining quota'. It uses a specific verb (check) and resource (capacity/quota), and explicitly distinguishes from sibling tools like get_quotas by focusing on fit rather than just returning quota values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context with the phrase 'before attempting to create them', indicating when to use this tool (pre-creation). However, it does not explicitly mention alternatives or when not to use it, though the context is clear enough for an agent to select it appropriately over similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/abhishekambad-leapswitch/openstack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server