Skip to main content
Glama
mirastacklabs-ai

MIRASTACK Redfish MCP Server

Official

MIRASTACK Redfish MCP Server

Governed MCP server for DMTF Redfish-compliant BMCs — iDRAC, iLO, XCC, OpenBMC and compatible implementations. Read-only by default: mutating tools are not registered unless you explicitly raise the write mode, and every mutation is a dry-run until confirmed.

Built by MIRASTACK LABS. Apache-2.0.

mirastack-redfish-mcp MCP server

mirastack-redfish-mcp MCP server

Highlights

  • MCP stdio and streamable-http transports via the official Python MCP SDK.

  • Distilled schema metadata from DMTF Redfish-Publications, pinned to release 2026.1.

  • Protocol-correct Redfish behavior: session auth, ETag/If-Match, 202 task polling, and registry-backed error rendering.

  • Safe write controls: tiered registration plus dry-run-first confirmations.

Related MCP server: Redfish MCP Server

Why this exists

A BMC is a pre-OS, out-of-band control plane with authority above normal host-level root access. Giving an autonomous agent BMC access without strong guardrails creates immediate blast-radius risk across power, boot, firmware, and account boundaries. This server forces dangerous actions behind deliberate write-mode elevation, and keeps every mutation dry-run by default so intent can be reviewed before application. The result is a governed operational interface rather than an always-armed remote control. The model can still move fast on diagnostics, but privilege transitions become explicit and auditable.

Installation

pip install mirastack-redfish-mcp

Try it in 60 seconds (no hardware)

Run a local DMTF mockup, start the MCP server in read-only mode, and call a read tool:

docker compose -f examples/mockup/docker-compose.yml up -d
export MIRASTACK_REDFISH_HOST="http://127.0.0.1:18000"
export MIRASTACK_REDFISH_USERNAME="<bmc-username>"
export MIRASTACK_REDFISH_PASSWORD="<bmc-password>"
export MIRASTACK_REDFISH_WRITE_MODE="off"
mirastack-redfish-mcp --transport stdio

Example tool call:

{"tool":"service_info","arguments":{}}

Expected output shape:

{
  "endpoint": "default",
  "service_root": {
    "@odata.id": "/redfish/v1"
  },
  "capabilities": {
    "redfish_version": "..."
  }
}

Discovery mode

The server also starts with zero endpoint credentials and still serves read-only tool discovery (for MCP scanner validation and metadata indexing). In this mode, schema/corpus-backed tools continue to work, while BMC-connected tools return a configuration error that names the required environment variables: MIRASTACK_REDFISH_HOST, MIRASTACK_REDFISH_USERNAME, and MIRASTACK_REDFISH_PASSWORD (or MIRASTACK_REDFISH_PASSWORD_FILE), or MIRASTACK_REDFISH_ENDPOINTS for multi-endpoint setup.

Discovery mode also covers a missing endpoints file. If MIRASTACK_REDFISH_ENDPOINTS points at a path that does not exist - which is how container platforms and MCP directory scanners inject a placeholder - the server logs a warning naming that path on stderr and starts with zero endpoints. A file that does exist but cannot be read or parsed remains a hard startup failure, and a partially configured single endpoint (for example MIRASTACK_REDFISH_HOST without MIRASTACK_REDFISH_PASSWORD) still raises, so a typo can never silently downgrade a configured deployment.

Quick Start (hardware, stdio)

export MIRASTACK_REDFISH_HOST="https://192.0.2.10"
export MIRASTACK_REDFISH_USERNAME="<bmc-username>"
export MIRASTACK_REDFISH_PASSWORD="<bmc-password>"
export MIRASTACK_REDFISH_WRITE_MODE="off"
mirastack-redfish-mcp --transport stdio

Quick Start (streamable-http)

mirastack-redfish-mcp \
  --transport streamable-http \
  --host 127.0.0.1 \
  --port 8000 \
  --path /mcp \
  --stateless-http \
  --json-response

Warning: binding to 0.0.0.0 exposes BMC control to every host that can reach this port. Bind to loopback unless the listener sits behind an authenticating proxy on a trusted management network.

Configuration

Canonical environment variables

Use MIRASTACK_REDFISH_* variables:

  • MIRASTACK_REDFISH_HOST

  • MIRASTACK_REDFISH_USERNAME

  • MIRASTACK_REDFISH_PASSWORD or MIRASTACK_REDFISH_PASSWORD_FILE

  • optional: MIRASTACK_REDFISH_VERIFY_SSL (default: true), MIRASTACK_REDFISH_CA_BUNDLE, MIRASTACK_REDFISH_TIMEOUT_SEC, MIRASTACK_REDFISH_AUTH_MODE

Multi-endpoint configuration

Set MIRASTACK_REDFISH_ENDPOINTS to inline JSON or a YAML/JSON file:

{
  "idrac-prod": {
    "base_url": "https://192.0.2.10",
    "username": "<bmc-username>",
    "password_file": "/run/secrets/idrac_password",
    "verify_ssl": true,
    "read_only": true
  },
  "ilo-lab": {
    "base_url": "https://192.0.2.11",
    "username": "<bmc-username>",
    "password": "<bmc-password>",
    "verify_ssl": true
  }
}

Lab-only override (not recommended for production):

{
  "ilo-lab": {
    "verify_ssl": false
  }
}

Set MIRASTACK_REDFISH_DEFAULT_ENDPOINT to choose the default endpoint.

Compatibility

Legacy bare REDFISH_* environment variables are still read as a fallback, with a one-time deprecation warning per variable.

Tool registration profile

  • MIRASTACK_REDFISH_TOOL_PROFILE=full (default): all toolsets allowed by write mode.

  • MIRASTACK_REDFISH_TOOL_PROFILE=standard: excludes raw write escape hatches.

  • MIRASTACK_REDFISH_TOOL_PROFILE=core: curated 15-tool small-model surface.

  • MIRASTACK_REDFISH_TOOLSETS (comma-separated) overrides profiles with explicit toolsets.

Measured advertised tool-schema payload at MIRASTACK_REDFISH_WRITE_MODE=full: core 20,795 bytes (15 tools), standard 43,669 bytes (33 tools), full 54,745 bytes (40 tools). Re-measure with python3 scripts/check_tool_metadata.py --sizes.

Write Safety Model

  • MIRASTACK_REDFISH_WRITE_MODE=off (default): mutating tools are not registered.

  • MIRASTACK_REDFISH_WRITE_MODE=power: power/reset/boot control tools are registered.

  • MIRASTACK_REDFISH_WRITE_MODE=config: config-tier tools are registered.

  • MIRASTACK_REDFISH_WRITE_MODE=full: full-tier tools are registered.

Every mutating tool accepts confirm:

  • confirm=false: dry-run response (dry_run=true, applied=false) with next_step.

  • confirm=true: action is applied.

Per-endpoint read_only=true overrides global write mode and blocks all writes on that endpoint.

Tier contract

  • Power tier: set_power_state, set_boot_override, reset_manager, cancel_task

  • Config tier: set_bios_attributes, eject_virtual_media, redfish_patch, redfish_post, redfish_delete, redfish_invoke_action

  • Full tier: insert_virtual_media, clear_logs, manage_account, simple_update, reset_to_defaults

Development

python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
make build-index
make verify

The schema index is generated from DMTF Redfish-Publications, pinned to one release for reproducibility. See CONTRIBUTING.md for refresh procedure.

Registry Publishing Notes

  • server.json includes PyPI and OCI package definitions for MCP Registry.

  • This README carries the required marker: mcp-name: ai.mirastacklabs/mirastack-redfish-mcp.

  • Docker image includes the io.modelcontextprotocol.server.name OCI label.

  • Install the official publisher CLI via Homebrew: brew install mcp-publisher.

  • Do not use npx mcp-publisher or pip install mcp-publisher for registry publishing.

Container and directory deployments

The published image puts the console script on PATH, so docker run ... mirastack-redfish-mcp --transport stdio works unchanged.

Some MCP directories ignore the repository Dockerfile and generate their own image from source. If that generated build installs with uv sync, the project lands in a virtualenv at /app/.venv and the console script is not on PATH, so a launcher that spawns the bare name fails with ENOENT. Point the launcher at the absolute path instead:

{
  "buildSteps": ["uv sync"],
  "cmdArguments": ["/app/.venv/bin/mirastack-redfish-mcp", "--transport", "stdio"]
}

A placeholder MIRASTACK_REDFISH_ENDPOINTS path that the platform never creates is safe - the server starts in discovery mode and serves the read-only tool surface.

Contributing

GitHub is a public read-only mirror. Issues are welcome on GitHub, but pull requests opened on GitHub cannot be merged. See CONTRIBUTING.md for accepted contribution paths.

Security

See SECURITY.md.

License

Apache-2.0.

Tool DescriptionsA

Average 4.4/5 across 25 of 25 tools scored.

Server CoherenceA
Disambiguation4/5

Most tools map cleanly to distinct Redfish resources (systems, chassis, managers, thermal, power, sensors, tasks, accounts, virtual media). The escape-hatch tools (redfish_get, redfish_walk, redfish_describe_schema, redfish_list_available_actions) are clearly labeled as fallbacks, and get_thermal/get_power/get_sensors are disambiguated by explicit 'use this for...' guidance. Minor overlap between list_* and get_* pairs is conventional and not confusing.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: list_* for collection resources, get_* for individual resources or derived summaries, and redfish_* for generic/escape-hatch operations. This is a predictable and coherent naming scheme across all 25 tools.

Tool Count4/5

25 tools is at the upper edge of the ideal range, but each covers a distinct Redfish subsystem or capability, so the count feels justified for a comprehensive Redfish server. A few tools could be consolidated (e.g., get_boot_config into get_system), but the granularity offers useful pre-built queries.

Completeness4/5

The read-side Redfish surface is well covered: systems, chassis, managers, health, thermal, power, sensors, inventory, firmware, logs, boot, BIOS, tasks, accounts, and virtual media are all represented. Missing write/action operations (e.g., system reset, boot override, account creation) are acknowledgeable gaps, but the escape-hatch redfish_list_available_actions hints at a design choice to keep the server read-only or rely on generic action calls.

Available Tools

25 tools
get_bios_attributesGet BIOS attributesA
Read-onlyIdempotent

Fetch BIOS attributes and the full BIOS resource for one system. Returns: Object with BIOS attributes, bios_uri, and full BIOS resource payload. Example: get_bios_attributes(system_uri='/redfish/v1/Systems/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
system_uriNoTarget ComputerSystem URI. Omit to auto-select the first system.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds context about the return payload (attributes, bios_uri, full resource), which goes beyond the annotations and clarifies what the caller receives. No contradictions found.

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?

Two concise sentences plus an example, with the core action front-loaded. Every sentence earns its place, and the description is easy to scan.

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

Completeness5/5

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

For a simple two-parameter read-only tool, the description fully explains the return shape and provides an example. The output schema exists, so the description is complete without needing to enumerate return fields further.

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?

The schema already covers both parameters with 100% coverage, so the baseline is 3. The description's example with system_uri='/redfish/v1/Systems/1' gives a concrete format, adding a small increment beyond the schema's textual description.

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 clearly states that the tool fetches BIOS attributes and the full BIOS resource for one system, with a specific verb and resource. It also provides a concrete example, which distinguishes it from broader system tools like get_system or redfish_get.

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

Usage Guidelines4/5

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

The description implies usage for retrieving BIOS-specific information for a single system, and the example demonstrates a typical invocation. While it does not explicitly mention alternatives or when-not-to-use, the context is clear enough from the tool name and description.

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

get_boot_configGet boot override configurationA
Read-onlyIdempotent

Return the Boot section for a system so callers can inspect current override target, mode, and enablement. Returns: Object with system_uri and current boot override configuration block. Example: get_boot_config(system_uri='/redfish/v1/Systems/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
system_uriNoTarget ComputerSystem URI. Omit to auto-select the first system.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already cover the read-only, idempotent, and non-destructive behavior. The description adds contextual value by detailing the return envelope (system_uri and boot configuration block) and providing an example call, which is sufficient given the annotation coverage. No contradictions exist.

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 concise: two sentences plus a compact example. It front-loads the primary purpose and returns information without wasted words.

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

Completeness5/5

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

This is a simple read-only tool with clear annotations, a complete input schema, and an output schema. The description adequately covers purpose, return shape, and example usage. No material gaps are present.

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?

The input schema has 100% description coverage, so the schema already documents both parameters (endpoint and system_uri). The description provides an example using system_uri, but it does not add semantic meaning beyond the schema's existing descriptions. Baseline 3 applies.

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 clearly states the tool returns the Boot section for a system, with the specific purpose of inspecting override target, mode, and enablement. This specific verb+resource combination distinguishes it from siblings like get_system, which returns the entire system resource.

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

Usage Guidelines4/5

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

The description implies the use case ('so callers can inspect...') and gives an example invocation. It does not explicitly name alternatives or exclusions, but the purpose is clear enough for an agent to know when to choose this over broader get_system.

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

get_chassisGet one chassis resourceA
Read-onlyIdempotent

Fetch a single Chassis resource by URI or ID; if omitted, the first chassis member is auto-selected. Returns: Object with resolved uri and full resource payload for one Chassis. Example: get_chassis(uri='/redfish/v1/Chassis/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoExplicit chassis resource URI to fetch.
endpointNoConfigured endpoint name. Omit to use the default endpoint.
chassis_idNoChassis identifier appended to /redfish/v1/Chassis/{chassis_id}.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare read-only and non-destructive behavior. The description adds valuable context beyond annotations: the auto-selection fallback when no URI/ID is given, and the return structure (resolved uri + resource payload).

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?

Two sentences plus a concrete example, all tightly packed with actionable information. No filler or repetition of the schema.

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

Completeness5/5

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

Given the rich annotations, full schema coverage, and presence of an output schema, the description sufficiently covers the tool's purpose, default behavior, and return shape. It is complete for an AI agent to select and invoke the tool.

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?

Schema covers 100% of parameters with clear descriptions, so baseline is 3. The description adds meaning by explaining the relationship between uri and chassis_id as alternative ways to identify the resource, and the auto-selection behavior when both are omitted.

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?

Description uses specific verb 'Fetch' with resource 'Chassis' and scope 'single', and clearly indicates the two modes of selection (URI or ID). It distinguishes from sibling list_chassis by explicitly focusing on a single member.

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

Usage Guidelines4/5

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

Provides clear usage context: specify URI or ID to fetch a specific chassis, or omit to get the first member auto-selected. Does not explicitly mention when not to use it or point to an alternative like list_chassis, but the intended use case is evident.

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

get_component_inventoryGet system component inventoryA
Read-onlyIdempotent

Walk the Processors, Memory, Storage, EthernetInterfaces, and PCIeDevices collections of one system. With include_details true each member is fetched, returning model, manufacturer, serial number, part number, capacity, core count, and MAC address where the vendor reports them. Returns: Object with components keyed by collection name, each carrying uri, count, members (descriptor fields when include_details is true, otherwise URI stubs), and details_truncated. Example: get_component_inventory(system_uri='/redfish/v1/Systems/1', include_details=true)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
system_uriNoTarget ComputerSystem URI. Omit to auto-select the first system.
include_detailsNoTrue fetches each component resource (up to 64 per collection) and returns its model/serial/capacity fields; false returns only member URIs and counts.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description discloses meaningful behavioral details: each member is fetched when include_details is true, vendor-reported fields vary, and the response includes a details_truncated flag. This goes beyond the annotations (readOnlyHint, idempotentHint, etc.) and adds valuable context about what the tool actually does.

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 concise, front-loaded with the primary action, and includes a return structure explanation plus an example. Every sentence contributes information without redundancy.

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

Completeness5/5

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

For a tool of this complexity, the description covers the walk behavior, output structure, optional details, and a usage example. The presence of an output schema further enhances completeness, but the description alone is sufficient for understanding the tool.

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?

Schema coverage is 100% and each parameter is described, but the tool description adds extra meaning by explaining the effect of include_details on the output and providing a concrete usage example. This enhances the parameter semantics beyond the schema alone.

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 states the tool walks the Processors, Memory, Storage, EthernetInterfaces, and PCIeDevices collections of one system, making the purpose explicit and specific. It distinguishes itself from sibling tools like get_system or redfish_walk by describing a distinct aggregated inventory operation.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (to retrieve component inventory for a system) and explains the behavior of include_details. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to select this tool appropriately.

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

get_firmware_inventoryGet firmware inventoryA
Read-onlyIdempotent

Retrieve UpdateService firmware inventory members and return each firmware resource payload. Returns: Object with firmware_inventory_uri and firmware resources under items. Lists are wrapped as {items, total, truncated}. Example: get_firmware_inventory(limit=200)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of firmware inventory members to fetch.
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description goes beyond the readOnlyHint annotation by specifying the return object shape, the wrapping of lists as {items, total, truncated}, and including an example invocation. This gives the agent practical knowledge of what to expect without contradicting the safety hints.

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 concise: a purpose sentence, a return-format note, a list-wrapper clarification, and an example—all in four short sentences. Every piece adds value, with the core purpose front-loaded.

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

Completeness5/5

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

For a simple read-only tool with two optional parameters, an output schema, and complete parameter descriptions, the description covers the functional purpose, return structure, and invocation pattern. No significant gaps remain 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.

Parameters3/5

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

The schema already provides 100% description coverage for both 'limit' and 'endpoint.' The tool description adds only an example using limit=200, which is helpful but does not introduce new meaning beyond what the schema states.

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 opens with 'Retrieve UpdateService firmware inventory members and return each firmware resource payload,' which names a specific verb, resource collection, and service. It clearly distinguishes this from sibling tools like get_component_inventory by targeting firmware inventory from UpdateService.

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

Usage Guidelines4/5

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

The description implicitly establishes when to use this tool: whenever firmware inventory members are needed. It does not explicitly name alternatives or exclusions, but the precise resource reference provides clear context that separates it from other inventory/read tools.

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

get_health_summarySummarize system healthA
Read-onlyIdempotent

Collect health/state rollups for Systems, Chassis, and Managers to provide a quick fleet health summary. Returns: Object with groups keyed by Systems/Chassis/Managers, each a list of per-member health and state rollups. Example: get_health_summary()

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful context about the return shape (groups keyed by Systems/Chassis/Managers) and the rollup nature, going beyond the annotations without contradicting them.

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 two concise sentences and an example, with the purpose front-loaded. Every sentence adds value, and the example call is a useful quick-reference without waste.

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

Completeness5/5

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

The tool has an output schema, and the description explains the return structure clearly. With only one optional parameter and annotations covering safety, the description is fully sufficient to infer usage and expected results.

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?

The schema provides 100% coverage for the single optional 'endpoint' parameter, so the description adds no extra parameter semantics. The example call get_health_summary() is already implied by the schema's default null, so the description does not compensate beyond what the schema offers.

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 a specific verb ('Collect health/state rollups') and names the exact resources (Systems, Chassis, Managers), clearly distinguishing it from sibling tools like list_systems or get_system. The return structure is explicitly described, reinforcing the 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/5

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

The phrase 'quick fleet health summary' provides a clear context for when to use this tool, implying it is for high-level overviews rather than detailed inspection. It does not explicitly name alternatives or exclusions, but the context against the sibling list is sufficient.

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

get_log_entriesGet log service entriesA
Read-onlyIdempotent

Collect entries from a selected LogService with optional severity and timestamp filtering for troubleshooting workflows. Returns: Object with filtered entries and the endpoint plus chosen manager/log-service context. Lists are wrapped as {items, total, truncated}. Example: get_log_entries(log_service_uri='/redfish/v1/Managers/1/LogServices/SEL', severity='Critical', limit=50)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of log entries to return.
sinceNoOptional ISO-8601 timestamp (example: 2026-08-11T12:00:00+00:00). Older entries are skipped.
endpointNoConfigured endpoint name. Omit to use the default endpoint.
severityNoOptional case-insensitive filter applied to LogEntry.Severity. Allowed values: - OK: Informational or operating normally. - Warning: A condition that requires attention. - Critical: A critical condition that requires immediate attention.
manager_uriNoOptional manager URI used to resolve a LogServices collection when log_service_uri is omitted.
log_service_uriNoOptional explicit LogService URI. Omit to auto-select the first manager log service.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context by explaining the return object structure (entries, endpoint, manager/log-service context) and the list wrapper format {items, total, truncated}, which is not present in 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/5

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

Three concise sentences with no fluff: purpose, return format, and a concrete example. The structure is front-loaded and every sentence earns its place.

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

Completeness5/5

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

Given the rich output schema and annotations, the description is complete. It explains what the tool does, what it returns, and provides an example. There is no missing critical information for an agent to select and invoke the tool correctly.

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?

Schema coverage is 100%, so baseline is 3. The description adds value with a concrete example showing log_service_uri, severity, and limit usage, and also mentions 'selected LogService' which maps to the core parameters. This goes beyond just repeating schema descriptions.

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 clearly states the tool collects entries from a LogService with optional filtering, which is a specific verb+resource. It distinguishes itself from generic tools like redfish_get by focusing on log entries and troubleshooting workflows.

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

Usage Guidelines4/5

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

The description provides clear context: 'for troubleshooting workflows' and demonstrates filtering by severity and timestamp. It does not explicitly mention alternatives or exclusions, but the context is sufficient to infer when to use it.

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

get_managerGet one manager resourceA
Read-onlyIdempotent

Fetch one Manager (BMC/iDRAC/iLO/XCC) by URI or ID; if omitted, the first manager member is auto-selected. Returns: Object with resolved uri and full resource payload for one Manager controller. Example: get_manager(uri='/redfish/v1/Managers/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoExplicit manager resource URI to fetch.
endpointNoConfigured endpoint name. Omit to use the default endpoint.
manager_idNoManager identifier appended to /redfish/v1/Managers/{manager_id}.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral details beyond annotations: the auto-selection of the first manager when omitted, and the exact response structure (resolved 'uri' and full 'resource' payload). This enriches transparency without contradicting 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/5

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

Three compact sentences: the first states the core action, the second explains return value, and the third gives an example. No filler, front-loaded with the essential verb+resource, and every sentence earns its place.

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

Completeness5/5

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

With an output schema present, the description need not detail return fields, but it still does so concisely. It covers selection modes, fallback behavior, and an example, making it complete for a simple read-only fetch tool in the context of its sibling tools.

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?

Schema coverage is 100%, so baseline is 3, but the description adds meaning by clarifying the relationship between uri and manager_id, the fallback behavior when both are omitted, and providing a concrete example. This goes beyond the schema's field-level descriptions and helps the agent construct correct calls.

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 begins with a specific verb and resource: 'Fetch one Manager (BMC/iDRAC/iLO/XCC) by URI or ID', clearly distinguishing it from sibling tools like list_managers or redfish_get. It also states the auto-selection fallback and the return shape, leaving no ambiguity about 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/5

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

It provides clear context for when to use the tool: fetching a single manager by URI or ID, with auto-selection if omitted. However, it does not explicitly mention alternatives or when NOT to use it, although the unique behavior of auto-selection and direct resource fetch implicitly guides usage.

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

get_powerGet chassis power dataA
Read-onlyIdempotent

Fetch PowerSubsystem/Power for watts, PSU, power-control, and power-cap telemetry. Prefer this tool for PSU or power-draw requests. Returns: Object with power_uri plus full power resource payload. Example: get_power(chassis_uri='/redfish/v1/Chassis/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
chassis_uriNoTarget chassis URI. Omit to auto-select the first chassis.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the return structure ('Object with power_uri plus full power resource payload') and the telemetry scope, but does not disclose additional behavioral traits like authentication needs or edge-case 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/5

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

The description is two concise sentences plus an example, with no wasted words. The fetch action and resource are front-loaded, and every sentence adds value.

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

Completeness5/5

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

For a simple read-only telemetry tool with strong annotations, an output schema, and a well-documented request schema, the description sufficiently covers purpose, usage, and return format without unnecessary detail.

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 description coverage is 100%, with both parameters ('endpoint' and 'chassis_uri') fully described. The description adds a concrete example call but no new semantic information beyond what the schema already provides, so the baseline-3 score applies.

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 states a specific verb ('Fetch'), a specific resource ('PowerSubsystem/Power'), and enumerates the telemetry types covered (watts, PSU, power-control, power-cap). It also distinguishes the tool from siblings by explicitly recommending it for PSU or power-draw requests.

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

Usage Guidelines4/5

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

The description includes an explicit preference statement: 'Prefer this tool for PSU or power-draw requests.' It clearly indicates when to use the tool, though it does not name specific alternative tools or exclusion scenarios.

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

get_sensorsGet sensor readingsA
Read-onlyIdempotent

Fetch broad cross-domain sensor data from Sensors collection; if absent, fall back to deprecated Thermal inline arrays. Use get_thermal for cooling details and get_power for PSU/power metrics. Returns: Object with sensors_uri and sensors, or fallback plus inline temperatures/fans arrays on services without a Sensors collection. Lists are wrapped as {items, total, truncated}. Example: get_sensors(chassis_uri='/redfish/v1/Chassis/1', limit=100)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sensor members to fetch.
endpointNoConfigured endpoint name. Omit to use the default endpoint.
chassis_uriNoTarget chassis URI. Omit to auto-select the first chassis.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond annotations: fallback to deprecated Thermal inline arrays, the exact return shape (sensors_uri vs fallback), and list wrapping format. This fully discloses 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/5

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

The description is compact and front-loaded, with no wasted sentences. It covers purpose, alternatives, return format, fallback behavior, and an example in just four lines, all of which are necessary.

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

Completeness5/5

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

Given the tool's low complexity (read-only, 3 optional params) and the presence of an output schema, the description is fully sufficient. It explains return formats, fallback conditions, and usage examples, leaving no important gaps.

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?

Schema descriptions cover 100% of parameters, providing a strong baseline. The description contributes an example call showing how chassis_uri and limit are used together, which adds practical parameter semantics beyond the schema definitions.

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 opens with 'Fetch broad cross-domain sensor data from Sensors collection', clearly stating the verb and resource. It also explicitly distinguishes this tool from get_thermal and get_power, preventing ambiguity among sibling tools.

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

Usage Guidelines5/5

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

It gives explicit alternative usage instructions: 'Use get_thermal for cooling details and get_power for PSU/power metrics.' This provides clear when-to-use and when-not-to-use guidance.

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

get_systemGet one computer systemA
Read-onlyIdempotent

Fetch a single ComputerSystem resource by URI or ID; if omitted, the first system member is auto-selected. Returns: Object with resolved uri and full resource payload for one ComputerSystem. Example: get_system(uri='/redfish/v1/Systems/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoExplicit system resource URI to fetch.
endpointNoConfigured endpoint name. Omit to use the default endpoint.
system_idNoSystem identifier appended to /redfish/v1/Systems/{system_id}.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: the auto-selection of the first system member and the return format (resolved URI and full resource payload).

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 concise and front-loaded: a clear action sentence, a return-format sentence, and a concrete example. No filler or redundant information.

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

Completeness5/5

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

For a simple read-only retrieval tool, the description covers purpose, selection behavior, return format, and includes an example. Combined with full schema descriptions, an output schema, and robust annotations, there are no significant gaps.

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?

Schema descriptions cover all parameters (100%), but the description adds meaning by clarifying that the tool works 'by URI or ID', implying uri/system_id are alternatives, and explaining that omitting parameters selects the first system member. This goes beyond the schema's basic parameter descriptions.

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 clearly states the tool fetches a single ComputerSystem resource, by URI or ID, with auto-selection if omitted. This specific verb+resource+method distinguishes it from siblings like list_systems and redfish_get.

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

Usage Guidelines4/5

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

Provides clear context: use when you need one system resource, with explicit URI/ID or automatic selection of the first member. However, it does not explicitly name alternatives like list_systems, so it lacks direct vs-alternative guidance.

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

get_taskGet one task resourceA
Read-onlyIdempotent

Fetch a task by URI or task_id; if omitted, the first task member is returned. Returns: Object with a single task payload under task and the resolved task URI. Example: get_task(task_id='Task42')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoExplicit task resource URI to fetch.
task_idNoTask identifier appended to /redfish/v1/TaskService/Tasks/{task_id}.
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations: the default behavior when no identifier is provided (first task member), the return shape (payload under 'task' and resolved URI), and an example. No contradiction with 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/5

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

The description is concise—two sentences plus an example—and front-loaded with the main purpose. Every clause adds useful information: the fetch behavior, the default case, the return format, and an illustrative call.

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

Completeness5/5

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

Given the simple nature of the tool (3 optional parameters, output schema provided, no nested objects), the description is complete: it covers what the tool does, the key default behavior, and the return structure. The output schema supplements any need for detailed return field documentation.

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?

The input schema fully documents all three parameters with descriptions, so the baseline is 3. The description adds semantic value by clarifying that 'uri' and 'task_id' are alternatives, explaining the default when both are omitted, and providing a concrete example (get_task(task_id='Task42')).

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 clearly states the action ('Fetch a task') and identifies the resource ('task') with explicit mention of the input methods ('by URI or task_id'). It also differentiates from sibling list_tasks by focusing on a single task resource.

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

Usage Guidelines4/5

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

The description implies the use case (fetching a single task when you have a URI or task_id) but does not explicitly mention when not to use it or point to alternatives like list_tasks. The context is clear enough for an agent to infer when to invoke this tool.

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

get_thermalGet chassis thermal dataA
Read-onlyIdempotent

Fetch ThermalSubsystem/Thermal for temperature, fan, and cooling telemetry. Prefer this tool for inlet/exhaust temperature and fan speed requests. Returns: Object with thermal_uri plus full thermal resource payload. Example: get_thermal(chassis_uri='/redfish/v1/Chassis/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
chassis_uriNoTarget chassis URI. Omit to auto-select the first chassis.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the return format ('Object with thermal_uri plus full thermal resource payload') and providing a concrete example call, which helps predict 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/5

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

Three sentences plus an example, no fluff. The first sentence states the core function, the second gives usage preference, and the third describes return payload. Very efficient.

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

Completeness5/5

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

The tool is simple: read-only, two optional params, has output schema. The description covers what it does, when to use it, and what it returns. Annotations cover safety. No missing essential information for an agent to select and invoke correctly.

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?

The input schema covers both parameters with descriptions (endpoint and chassis_uri, both with default behavior). The description's example clarifies usage of chassis_uri but does not add semantic meaning beyond the schema's descriptions. Since schema coverage is 100%, a baseline of 3 applies.

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 a specific verb ('Fetch') and resource ('ThermalSubsystem/Thermal') and clearly lists what telemetry it covers (temperature, fan, cooling). It also distinguishes itself by stating a preference for this tool for inlet/exhaust temperature and fan speed requests, differentiating from sibling tools like get_power or get_sensors.

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

Usage Guidelines4/5

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

The description states 'Prefer this tool for inlet/exhaust temperature and fan speed requests,' giving explicit when-to-use guidance. However, it does not name alternative tools or explicitly state when not to use it, so it stops short of full exclusions.

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

list_accountsList account resourcesA
Read-onlyIdempotent

List AccountService account members and optionally include full account payloads. Returns: Object with AccountService entries under accounts (URIs only or full account resources). Lists are wrapped as {items, total, truncated}. Example: list_accounts(include_details=false)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
include_detailsNoTrue fetches each account resource; false returns only account URIs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The annotations already declare read-only, non-destructive, idempotent behavior. The description adds valuable behavioral details by explaining the return wrapper structure ({items, total, truncated}) and how the include_details parameter changes the output between URIs and full resources. This goes beyond the annotations, though it does not cover potential pagination or auth concerns.

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 two sentences plus an example, with no wasted words. It is front-loaded with the primary action, then the return format, and the example is useful. Every element earns its place.

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 simple read-only list tool with only optional parameters and a rich output schema, the description provides enough context: the object structure, the include_details effect, and an example. It does not explicitly discuss pagination or endpoint selection, but these are already implied by the schema and the tool's simplicity.

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 description coverage is 100%, so both parameters are already well-documented. The description mostly restates the include_details behavior (URIs vs. full resources) and provides an example, adding marginal value beyond the schema. It does not clarify the 'endpoint' parameter beyond what the schema already says.

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 states a specific verb ('List'), a clear resource ('AccountService account members'), and the optional behavior of including full payloads. This clearly distinguishes it from sibling tools that list other resource types (e.g., list_systems, list_managers).

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

Usage Guidelines4/5

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

The description provides clear context about what the tool does and the output format, which helps an agent decide to use it for listing accounts. However, it does not explicitly mention when not to use it or name alternative tools for other resources, so it falls short of a 5.

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

list_chassisList chassis resourcesA
Read-onlyIdempotent

List Chassis members and optionally include full details and status for each chassis. Returns: Object containing collection_uri and chassis items with URIs and optional details. Lists are wrapped as {items, total, truncated}. Example: list_chassis(include_details=false)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
include_detailsNoTrue fetches each member resource; false returns only member URIs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context by detailing the return object structure (collection_uri, chassis items), the wrapping format ({items, total, truncated}), and the effect of include_details. This goes beyond what annotations provide, especially the truncation hint which complements the openWorldHint.

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 compact and front-loaded with the main purpose, followed by return format and a concrete example. Every sentence contributes meaningful information without fluff or repetition of the schema.

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

Completeness5/5

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

For a simple list tool, the description covers the core behavior, return shape, pagination/truncation indicator, and includes a usage example. An output schema exists, so detailed field documentation is already available. The description is complete enough for an agent to select and invoke the tool correctly.

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?

The input schema already fully describes both parameters, including the meaning of include_details and endpoint. The description reiterates include_details in prose and gives an example call, adding slight value but not substantially extending the schema's coverage. Baseline of 3 is appropriate given schema coverage is 100%.

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 clearly states the verb ('List') and resource ('Chassis members'), and specifies the optional behavior ('include full details and status'). It distinguishes itself from sibling tools like get_chassis, which targets a single chassis, and list_systems, which targets a different resource.

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

Usage Guidelines4/5

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

The description provides clear context: this tool lists chassis members and can optionally fetch details. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous in the context of sibling list/get tools, making the intended usage clear.

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

list_endpointsList configured Redfish endpointsA
Read-onlyIdempotent

List all configured endpoints and their auth/read-only settings so callers can choose a valid endpoint value. Returns: Object containing an endpoints list with endpoint names, URLs, and default/read-only flags. Example: list_endpoints()

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare read-only and idempotent behavior. The description adds value by disclosing return structure (endpoints list with names, URLs, and flags) and mentioning auth/read-only settings, which is useful context beyond 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/5

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

The description is two concise sentences plus an example, covering purpose, return format, and usage. Every sentence earns its place with no filler or repetition.

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

Completeness5/5

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

For a zero-parameter list tool with an output schema, the description fully covers what it returns and why. It includes an example and sufficient context 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/5

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

The tool has zero parameters and an empty schema, so the description bears no parameter burden. The baseline for zero params is 4, and the description appropriately focuses on output rather than parameters.

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 states the tool lists all configured endpoints and their auth/read-only settings, with the specific purpose of helping callers choose a valid endpoint value. This is a clear verb+resource combination that distinguishes it from sibling tools that query specific resources.

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

Usage Guidelines4/5

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

The phrase 'so callers can choose a valid endpoint value' provides clear context for when to use this tool—before endpoint-dependent operations. It does not name alternatives or exclusions, but the implied usage is straightforward.

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

list_managersList manager resourcesA
Read-onlyIdempotent

List Manager members (BMC controllers such as iDRAC/iLO/XCC) and optionally include full payloads and status fields. Returns: Object containing collection_uri and managers items with URIs and optional details. Lists are wrapped as {items, total, truncated}. Example: list_managers(include_details=true)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
include_detailsNoTrue fetches each member resource; false returns only member URIs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context on return envelope format ({items, total, truncated}) and the distinction between URI-only and full payload behavior, which goes beyond 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/5

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

The description is concise, front-loaded with the primary action, includes a practical example, and avoids redundant information. Each sentence contributes to understanding the tool's purpose and behavior.

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?

Given the tool's simplicity, full schema coverage, and helpful annotations, the description is nearly complete. It covers purpose, optional details, and return envelope including truncation. The only minor gap is the lack of explicit cross-reference to get_manager for single-item retrieval, but this is not critical.

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 description coverage is 100%, so baseline is 3. The description's example reinforces include_details but does not add meaning beyond the schema's existing parameter descriptions, which already explain the boolean's effect.

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 clearly states the tool 'List Manager members' with a specific verb+resource, identifying BMC controllers (iDRAC/iLO/XCC) and optional detail inclusion. This distinguishes it from the sibling get_manager tool, which retrieves a single manager.

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?

The description implies usage for listing managers but does not explicitly contrast with alternatives like get_manager or state when to use this vs list_systems. No exclusion or alternative guidance is provided, so agents must infer the appropriate context from the tool name and sibling list.

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

list_systemsList computer systemsA
Read-onlyIdempotent

List ComputerSystem members from /Systems; enable include_details for full resource payloads and health snapshots. Returns: Object containing collection_uri and systems items with URIs and optional details. Lists are wrapped as {items, total, truncated}. Example: list_systems(endpoint='default', include_details=true)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
include_detailsNoTrue fetches each member resource; false returns only member URIs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already indicate read-only/idempotent safe operations. The description adds useful behavioral details: return format, pagination wrapper, and the effect of include_details on payload depth, exceeding 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/5

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

The description is concise and well-structured: purpose, parameter guidance, return contract, and an example. Each sentence provides distinct value with no redundancy.

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

Completeness5/5

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

For a straightforward list operation, the description is complete: it covers scope, parameter behavior, response shape, and example usage. The output schema and annotations bear the rest, making this sufficient for confident invocation.

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?

Schema descriptions already cover both parameters. The description adds meaning by specifying that include_details yields 'full resource payloads and health snapshots', enriching the schema's explanation. The endpoint parameter is clarified via the example.

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 clearly states the tool lists ComputerSystem members from /Systems, with a specific verb and resource. It distinguishes from sibling tools like get_system (single resource) and other list_* tools by targeting a specific collection.

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

Usage Guidelines4/5

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

The description includes an example invocation and explains when to use include_details, but does not explicitly contrast with alternatives like get_system. The context is clear enough for selecting this tool for enumeration, though exclusions are not stated.

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

list_tasksList Redfish tasksA
Read-onlyIdempotent

List TaskService task members and optionally include full task resource payloads. Returns: Object with TaskService entries under tasks (URIs only or full task resources). Lists are wrapped as {items, total, truncated}. Example: list_tasks(include_details=true)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
include_detailsNoTrue fetches each task resource; false returns only task URIs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description discloses the return structure ('Object with TaskService entries under tasks'), the list wrapping format ({items, total, truncated}), and the effect of include_details. This adds behavioral context beyond the annotations, which already declare read-only/idempotent/non-destructive.

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 sentences: purpose, return format, and a concrete example. No wasted words; information is front-loaded.

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

Completeness5/5

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

Given the tool's simplicity, full output schema, and rich annotations, the description covers all critical aspects: what it lists, the return shape, truncation behavior, and an example invocation. It is complete for an agent to select and invoke correctly.

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% with both parameters (endpoint and include_details) already well-described. The description reinforces include_details via the example and first sentence but adds no new parameter-level meaning beyond that.

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 a specific verb+resource ('List TaskService task members') and clarifies the optional behavior (including full payloads). It distinguishes itself from sibling tools like get_task by being plural and scoped to TaskService. The example further clarifies intent.

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?

The description implies usage (list all tasks, optionally with details), but it does not explicitly state when to prefer this over sibling tools like get_task, nor does it mention exclusions or alternatives. The example demonstrates usage, providing some contextual guidance.

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

list_virtual_mediaList virtual media devicesA
Read-onlyIdempotent

List VirtualMedia resources for a manager to inspect mounted images and media state. Returns: Object with manager_uri and VirtualMedia resources under virtual_media. Lists are wrapped as {items, total, truncated}. Example: list_virtual_media(manager_uri='/redfish/v1/Managers/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
manager_uriNoTarget manager URI. Omit to auto-select the first manager.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral details beyond annotations, including the exact return object shape (manager_uri, virtual_media) and how lists are wrapped ({items, total, truncated}), plus a concrete example. No contradiction with 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/5

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

The description is three compact, purposeful sentences: one for purpose, one for return format, and one for a usage example. There is no filler or redundant restatement of the tool name.

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

Completeness5/5

Given 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 zero required parameters and an output schema, the description fully covers purpose, output structure, and a usage example. It is complete enough for an agent to select and invoke it correctly without needing further documentation.

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?

The input schema already covers both parameters with clear descriptions (endpoint name, manager URI). The description adds a concrete example using manager_uri with a realistic path format, which helps agents understand the expected value. This lifts it beyond the baseline 3 for 100% schema coverage.

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 a specific verb ('List') and identifies the resource ('VirtualMedia resources for a manager'), clearly distinguishing this from sibling tools like list_systems and list_chassis. It also states the operational purpose ('inspect mounted images and media state'), which makes the tool's function unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to inspect mounted images and media state of a manager. It stops short of explicitly stating when not to use it or naming alternative tools, but the context is strong enough to guide selection among similar list_* tools.

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

redfish_describe_schemaDescribe Redfish schema typeA
Read-onlyIdempotent

Return distilled schema metadata for one Redfish resource type from the bundled index artifact. Full summaries are large, so pass property_name or action_name to retrieve just one definition. Returns: Full summary with URIs, properties, actions, versions, and enum metadata; or one narrowed property/action definition. Example: redfish_describe_schema(resource_type='ComputerSystem', property_name='PowerState')

ParametersJSON Schema
NameRequiredDescriptionDefault
action_nameNoOptional single action to describe instead of the full summary, with or without the leading '#'.
property_nameNoOptional single property to describe instead of the full summary.
resource_typeYesRedfish schema type name such as ComputerSystem or Chassis.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable context about the bundled index artifact (suggesting offline/local data) and the return content, including URIs, properties, actions, versions, and enum metadata. It also notes the potential size of full summaries, which is a practical performance consideration.

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 concise and front-loaded with the main purpose. It efficiently packs the key behavioral notes and an example into four compact sentences, with no wasted words.

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

Completeness5/5

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

Given the tool's simple scope, an output schema, and safe annotations, the description provides sufficient completeness. It clarifies the source (bundled index), narrowing options, return format, and an example, making it fully understandable for an agent.

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?

The input schema already covers all parameters with descriptions. The description supplements this by explaining how property_name and action_name narrow the result, and the example clarifies usage with resource_type and property_name. This adds meaning beyond the schema definitions.

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 clearly states the tool returns distilled schema metadata for one Redfish resource type from the bundled index artifact. It distinguishes itself from sibling tools that focus on endpoint operations or live data access.

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?

It provides helpful guidance on narrowing output with property_name or action_name when full summaries are large, but does not explicitly discuss when to use this tool vs alternatives like redfish_get or list_endpoints. The usage context is implied rather than directly contrasted with siblings.

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

redfish_getRaw Redfish GETA
Read-onlyIdempotent

Escape hatch: use when no typed tool fits. Fetch any Redfish URI directly and apply query options only when the endpoint advertises support. Returns: Object with requested resource, resolved request URI, and query options that were actually applied. Example: redfish_get(uri='/redfish/v1/Systems/1', select='Id,PowerState')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesResource URI to fetch. Relative values are normalized under /redfish/v1.
onlyNoOptional $only expression. Ignored if service does not support only.
expandNoOptional $expand expression. Ignored if service does not support expand.
selectNoOptional $select expression. Ignored if service does not support select.
excerptNoOptional $excerpt expression. Ignored if service does not support excerpt.
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds context by explaining that query options are applied conditionally and detailing the return object (resource, resolved URI, applied query options), which goes beyond 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/5

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

The description is three sentences plus an example, with no wasted words. It front-loads the most important information ('Escape hatch') and efficiently covers purpose, behavior, return value, and usage.

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 covers the tool's role, behavior, return value, and an example. It does not discuss error handling or pagination, but the output schema exists and the tool is positioned as a simple raw GET, so this is adequate for the complexity.

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?

The input schema provides 100% coverage with clear descriptions for each parameter, including the 'Ignored if service does not support' behavior. The description's example adds a concrete usage snippet but does not significantly expand on the schema's semantics, so a baseline score of 3 is appropriate.

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 opens with 'Escape hatch: use when no typed tool fits,' which clearly identifies the tool as a fallback for unhandled cases. 'Fetch any Redfish URI directly' states the specific verb and resource, distinguishing it from the typed getters like get_system and get_chassis.

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

Usage Guidelines5/5

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

The phrase 'use when no typed tool fits' explicitly states the condition for using this tool and implies that typed tools are preferred alternatives. The example demonstrates invocation, and the note about applying query options only when supported adds practical guidance.

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

redfish_list_available_actionsList available actions for resourceA
Read-onlyIdempotent

Prefer this before any unfamiliar write/action call. Combine schema actions with live action metadata (ActionInfo and AllowableValues) for a resource URI. Returns: Object with schema_actions plus live_actions (target URIs, required params, allowable values). Example: redfish_list_available_actions(uri='/redfish/v1/Systems/1')

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesTarget resource URI to inspect for supported actions.
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds value by explaining it combines schema actions with live ActionInfo and AllowableValues, and by summarizing the return structure. This gives useful behavioral context 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/5

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

The description is three sentences, front-loaded with the key guidance, and includes a concrete example. No wasted 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?

Given the output schema and annotations, the description sufficiently covers purpose, return format, and usage context. It might benefit from explicitly stating that it is read-only, but annotations already convey that. Overall, it's complete for an agent to select and invoke the tool.

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?

Schema describes both parameters with 100% coverage, so the description doesn't need to re-explain them. The example call with a concrete URI adds practical semantic value, making the parameter usage clear.

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 clearly states it lists available actions for a resource URI and distinguishes it from sibling get/list tools by focusing on action metadata. The verb 'list available actions' is specific, and the phrase 'prefer this before any unfamiliar write/action call' establishes its unique role.

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

Usage Guidelines4/5

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

The instruction to 'prefer this before any unfamiliar write/action call' explicitly tells the agent when to use it. It does not enumerate when not to use it or name alternatives, but the context is sufficiently clear for a discovery tool.

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

redfish_walkWalk Redfish graphA
Read-onlyIdempotent

Escape hatch: use for topology exploration when typed list/get tools are insufficient. Perform a breadth-first walk over linked @odata.id resources. Returns: Object with nodes (each uri, depth, and type from @odata.type) and visited_count. Example: redfish_walk(start_uri='/redfish/v1', max_depth=2, max_nodes=120)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.
max_depthNoMaximum traversal depth from start_uri.
max_nodesNoMaximum number of nodes to visit before stopping.
start_uriNoRoot URI for traversal. Defaults to /redfish/v1./redfish/v1

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral detail: BFS traversal, returns nodes with uri/depth/type and visited_count, and an example with limits. This goes beyond annotations, but doesn't mention potential large result sizes or network behavior, which would be useful.

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 sentences plus an example, front-loaded with the 'escape hatch' label. Each sentence serves a purpose: usage context, algorithm, return format, and example. No filler or redundancy.

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

Completeness5/5

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

With output schema present and annotations covering safety, the description fills the remaining gaps: when to use (escape hatch), how it works (BFS), what it returns (nodes + visited_count), and a concrete example. For a graph traversal escape hatch, this is complete.

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 the schema already documents each parameter. The description's example (start_uri, max_depth, max_nodes) reinforces usage but doesn't add new semantic meaning. The return description helps infer parameter intent (e.g., depth/nodes limits), but it's not a significant enhancement over the schema.

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 clearly states the tool's function: 'Perform a breadth-first walk over linked @odata.id resources.' The verb 'walk' is specific to graph traversal, and the resource 'Redfish graph' is distinct. It also frames itself as an 'escape hatch' for topology exploration, distinguishing it from typed list/get sibling tools.

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

Usage Guidelines4/5

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

The description explicitly says when to use: 'use for topology exploration when typed list/get tools are insufficient.' This provides usage context and indicates that typed tools are preferred for standard queries. It doesn't name specific sibling tools, but the category 'typed list/get tools' is clear enough. No explicit when-not is given, but the guidance is strong.

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

service_infoGet Redfish ServiceRoot capabilitiesA
Read-onlyIdempotent

Fetch ServiceRoot and protocol feature flags to understand what query options and links the endpoint supports. Returns: Object with service_root, redfish_version, capabilities, links, and resolved endpoint name. Example: service_info(endpoint='default')

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoConfigured endpoint name. Omit to use the default endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds behavioral context by listing the exact return fields (service_root, redfish_version, capabilities, links, resolved endpoint name) and providing an example call, which helps the agent anticipate the result. It does not contradict any annotation.

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 two sentences plus a short example, with the main action front-loaded. Every sentence contributes purpose, return structure, or usage demonstration, with no filler or repetition.

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?

Given the tool is a simple read-only capability query with one optional parameter and an output schema, the description provides sufficient context: what it does, what it returns, and an example. It could be argued that error behavior or edge cases are omitted, but these are less critical for a read-only, idempotent capability-discovery tool. The presence of an output schema reduces the need to explain return values in detail.

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% with a clear description of the endpoint parameter (configured endpoint name, omit to use default). The description's mention of 'resolved endpoint name' and example usage adds minimal new meaning beyond the schema, so it meets the baseline 3 for high schema coverage.

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 states the specific verb 'Fetch' with the resource 'ServiceRoot and protocol feature flags', and clarifies the purpose as understanding supported query options and links. This clearly distinguishes the tool from the many sibling tools like get_system or redfish_get by focusing on capability discovery, not a specific resource fetch.

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

Usage Guidelines4/5

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

The description provides clear context for use ('to understand what query options and links the endpoint supports'), which implies when an agent should invoke this tool. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a full 5.

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Redfish-compliant BMC devices for server management, firmware updates, and hardware monitoring through session-based authentication and standardized API endpoints.
    1
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    Enables AI agents and LLMs to control and monitor Redfish-enabled hardware through power operations, system inventory, event logs, health monitoring, sensor readings, and user account management.
    15
    1
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to monitor and control server hardware (power, thermal, storage, firmware, event logs) via Redfish BMC API on Dell iDRAC, HPE iLO, Lenovo XCC, Supermicro BMC, and others.
    17
    2

View all related MCP servers

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/mirastacklabs-ai/mirastack-redfish-mcp'

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