Skip to main content
Glama
oomchiller

openstack-mcp-server

by oomchiller

List catalog services

list_services
Read-onlyIdempotent

Lists OpenStack services registered in the Keystone catalog to verify available service types; supports filtering by type and project.

Instructions

List services registered in the Keystone catalog. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.

Input Schema

NameRequiredDescriptionDefault
typeNoService type, e.g. compute.
limitNoMaximum items to return (1-100, default 50).
project_idNoProject ID to work in; omit for the default project. Allowed values are listed by get_scope.

Output Schema

NameRequiredDescriptionDefault
itemsYes
limitYesMaximum number of items requested.
completeYesTrue when no more items exist beyond this page.
resourceYesResource type of the items.
project_idYesProject whose session produced the list.
next_markerNoPass as marker to read the next page; null when complete or when the API has no marker paging.
observed_atYesUTC time the list was read.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/idempotentHint annotations by disclosing the authorization requirement ('usually needs more than a project reader role') and decoding the error semantics ('forbidden means the role is missing, not that the list is empty') — a distinction an agent would otherwise misread. It also states the result set is not paged, which shapes how the agent should size and iterate calls.

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

Conciseness5/5

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

Three short sentences, each carrying distinct information: identity, permission/error semantics, and result-set behavior. Purpose is front-loaded and nothing is redundant.

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

Completeness4/5

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

For a read-only list tool with full schema coverage and an output schema, the description covers the non-obvious risks (auth role, forbidden semantics, no pagination). Only minor gaps remain, such as how limit truncates an unpaged result set.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, making 3 the baseline. The description adds a mild clarification that results are not paged and should be narrowed via filters, but it doesn't explain how limit interacts with the unpaged claim or what type values are realistic beyond the schema's 'compute' example.

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

Purpose4/5

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

States a specific verb and resource ('List services registered in the Keystone catalog'), which cleanly separates it from the many list_* siblings such as list_compute_services and list_volume_services. It does not explicitly name those siblings, so differentiation is inferable rather than stated.

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

Usage Guidelines3/5

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

Offers implied guidance ('narrow with filters') and useful prerequisites around role requirements, but never says when to prefer a sibling like list_endpoints or list_compute_services, nor any exclusion condition. Adequate for a straightforward list tool but lacking explicit routing.

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