Skip to main content
Glama
washyu
by washyu

list_available_services

Read-onlyIdempotent

Discover which homelab services are ready for installation. Quickly view available options for automated deployment.

Instructions

List all available homelab services that can be installed

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The core handler function for list_available_services. Instantiates ServiceInstaller, calls get_available_services(), and returns the list of services as JSON content.
    async def handle_list_available_services(arguments: dict[str, Any]) -> dict[str, Any]:
        """Handle list_available_services tool."""
        installer = ServiceInstaller()
        services = installer.get_available_services()
        result_dict = {"available_services": services, "count": len(services)}
        return {"content": [{"type": "text", "text": json.dumps(result_dict, indent=2)}]}
  • Schema definition for list_available_services. Describes it as 'List all available homelab services that can be installed' with no required input parameters (empty object).
    SERVICE_TOOLS: dict[str, dict[str, Any]] = {
        "list_available_services": {
            "description": "List all available homelab services that can be installed",
            "inputSchema": {"type": "object", "properties": {}, "required": []},
        },
  • Registration mapping the tool name 'list_available_services' to the handler function handle_list_available_services in the TOOL_HANDLERS dictionary.
    "list_available_services": handle_list_available_services,
  • Import of handle_list_available_services from service_handlers module into the tool handlers registry.
    from .service_handlers import (
        handle_check_ansible_service,
        handle_check_service_requirements,
        handle_destroy_terraform_service,
        handle_destroy_terraform_service_preview,
        handle_get_service_info,
        handle_get_service_status,
        handle_install_service,
        handle_list_available_services,
  • Listed as a STANDALONE_TOOL (works without external infrastructure) in the OpenAPI REST wrapper, and grouped under 'Services' category in the tools listing at line 174.
    STANDALONE_TOOLS: set[str] = {
        # Service template browsing (reads local YAML files)
        "list_available_services",
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description does not add any additional behavioral context beyond what annotations imply. 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/5

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

The description is a single sentence that immediately states the tool's purpose. It is front-loaded and contains no unnecessary words.

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?

The description is complete for a simple listing tool with no parameters. It tells the agent exactly what will be returned (a list of available services). However, it could be slightly improved by indicating the type of information returned (e.g., names or IDs), but the current level is sufficient.

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

Parameters4/5

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

There are no parameters, so schema description coverage is 100%. The description does not need to add parameter information. With 0 parameters, the baseline score is 4.

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

Purpose5/5

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

The description uses the specific verb 'List' and resource 'available homelab services that can be installed', clearly distinguishing it from sibling tools like install_service and get_service_info. It unambiguously indicates the tool provides a catalog of services available for installation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_service_info or install_service. It does not mention prerequisites, context, or situations where it should not be used.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

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

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

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