Skip to main content
Glama

Dell iDRAC MCP

CI Latest release License: MIT

A Model Context Protocol server for the Dell iDRAC 8, the out-of-band management controller in 13th-generation PowerEdge servers (T430, T630, R430, R530, R630, R730, R730xd, ...). It lets an AI assistant answer questions about your server's hardware and health, and, if you allow it, power it on, restart it or change BIOS settings.

It talks directly to the iDRAC's Redfish API over your local network. There is no cloud service, no Dell account and no agent on the server. It works even when the operating system is down or the server is off.

Ships as a one-click .mcpb extension for Claude Desktop, and runs as a plain Node.js server for any other MCP client.

This is an independent community project. It is not affiliated with or endorsed by Dell Technologies.


What you can ask

Is my server healthy? Anything I should worry about? How warm is it inside, and how fast are the fans spinning? How much power is the server drawing right now, and what was the peak? Are any of my disks predicted to fail? What RAID level is the data volume? What happened on the server last night? Show me the event log. Which firmware versions are installed, and is the iDRAC firmware current? Is virtualization enabled in the BIOS? Shut the server down cleanly and tell me when it's off. (needs operator mode) Boot from the network once and restart. (needs operator mode) Turn on the identify LED so I can find the machine. (needs operator mode)

Related MCP server: Redfish MCP Server

Highlights

  • Health at a glance: one call checks CPUs, memory, fans, temperatures, power supplies, voltages, RAID controllers, disks and volumes, and reports only what needs attention, together with recent warnings from the event log.

  • Full inventory: processors, DIMMs, disks with predicted failure and SSD wear, virtual disks, network ports, iDRAC network settings and services, and firmware versions of every component.

  • Logs and jobs: the System Event Log and the Lifecycle Controller log, newest first, filterable by severity or text, and the iDRAC job queue.

  • Settings: BIOS attributes with their allowed values and help text, boot mode and boot order, virtual media, and a full Server Configuration Profile export.

  • Safe by default: three permission modes that mirror the iDRAC roles. Read-only is the default; tools you have not enabled are never even listed.

  • Kind to the iDRAC: one Redfish session per run (no login entry in the Lifecycle log for every request), logout on exit, limited concurrency for the slow iDRAC 8, and no retry loop on a wrong password, so you cannot lock yourself out.

  • Built on real hardware: developed and tested against a PowerEdge T430 running the final iDRAC 8 firmware, including its Redfish quirks (the one $expand syntax it accepts, log service ids that differ from their URIs, ports that are listed but missing).

  • Escape hatch: idrac_get reads any Redfish resource; idrac_raw_request (admin) sends anything.


Requirements

  • A Dell PowerEdge server with iDRAC 8, firmware 2.40 or newer. 2.70 or newer is recommended; 2.86.86.86 is the final iDRAC 8 release.

  • The iDRAC must be reachable over HTTPS (port 443) from the computer running the MCP client.

  • Redfish enabled on the iDRAC. It is on by default (iDRAC Settings → Services → Redfish).

  • Any iDRAC license works (Basic, Express or Enterprise). Virtual media requires Enterprise.

  • Node.js 20 or newer, only for the npx or source install. The .mcpb extension uses the runtime built into Claude Desktop.


Install

Option A — Claude Desktop extension (.mcpb)

  1. Download dell-idrac-mcp-<version>.mcpb from the latest release.

  2. Double-click the file, or open Claude Desktop → Settings → Extensions and drag it in.

  3. Fill in the iDRAC address, user name and password, and choose whether to allow actions or configuration changes.

  4. Start a new chat and ask "Is my server healthy?"

Everything is bundled into one file, so no separate Node.js installation is needed.

The npx examples below use the npm package. Until it is published to npm you can point npx straight at the repository instead: npx -y github:mbgroen/dell-idrac-mcp.

Option B — Claude Code

claude mcp add dell-idrac --scope user \
  --env IDRAC_HOST=192.168.0.80 \
  --env IDRAC_USERNAME=claude \
  --env IDRAC_PASSWORD='your-password' \
  -- npx -y @mbgroen/dell-idrac-mcp

Option C — any other MCP client

Add this to the client's MCP server configuration (Cursor, VS Code, Windsurf, Zed, custom hosts):

{
  "mcpServers": {
    "dell-idrac": {
      "command": "npx",
      "args": ["-y", "@mbgroen/dell-idrac-mcp"],
      "env": {
        "IDRAC_HOST": "192.168.0.80",
        "IDRAC_USERNAME": "claude",
        "IDRAC_PASSWORD": "your-password",
        "IDRAC_PERMISSION_MODE": "read-only"
      }
    }
  }
}

Option D — from source

git clone https://github.com/mbgroen/dell-idrac-mcp.git
cd dell-idrac-mcp
npm install            # also compiles TypeScript
cp .env.example .env   # fill in host, user and password
npm run test:live      # optional: read-only check against your iDRAC
node dist/index.js     # speaks MCP over stdio

Create a dedicated iDRAC user

You can use root, but a dedicated account limits what the assistant can do even if this server's own checks were bypassed, and it makes the assistant's activity easy to recognise in the Lifecycle log.

  1. Open the iDRAC web interface and go to iDRAC Settings → User Authentication → Local Users.

  2. Click a free user ID and choose Configure User.

  3. Enter a user name (for example claude) and a strong password, and enable the user.

  4. Under iDRAC User Privileges, pick the role that matches the permission mode you plan to use:

Permission mode

iDRAC role

Why

read-only

Read Only

Login is all that reading needs.

operator

Operator

Server control (power, LED) and configure privileges.

admin

Administrator

Clearing logs and some configuration changes need it.

IPMI and serial-over-LAN privileges are not used and can stay at No Access. The iDRAC enforces its own privileges as well: if a tool fails with HTTP 403, the account lacks a privilege for that operation.


Permission modes

The server only lists the tools its mode allows, and checks the mode again on every call.

Mode

IDRAC_PERMISSION_MODE

Extension toggle

What it adds

Read-only (default)

read-only

both off

Inventory, health, sensors, logs, jobs, BIOS/boot/virtual media settings, configuration export. Nothing can change.

Operator

operator

Allow power control and other actions

Power on, graceful shutdown or restart, force off, power cycle, NMI; identify LED; one-time boot device; attach or detach virtual media; restart the iDRAC; delete jobs.

Admin

admin

Allow configuration changes

Change BIOS settings (staged in a configuration job), clear the System Event Log, raw Redfish write requests.

Start with read-only. A power action affects everything that runs on the server: the assistant is instructed to confirm before turning it off or restarting it, and Claude Desktop asks for your approval before each tool call unless you turn that off.


Tools

Read-only

Tool

What it does

idrac_status

Connection check: iDRAC firmware (with a note when newer firmware exists), Redfish version, model, service tag, permission mode. Use it first when something fails.

idrac_system_overview

Model, service tag, BIOS and iDRAC versions, power state, health, CPU and memory totals, power draw and inlet temperature.

idrac_health

Checks every subsystem and lists only unhealthy components, plus recent warning and critical events.

idrac_thermal

Fan speeds, temperatures with thresholds, fan redundancy.

idrac_power

Current, average, minimum and peak power, power cap, power supplies, redundancy, optionally voltages.

idrac_processors

CPUs: model, cores, threads, speed, health.

idrac_memory

DIMMs: slot, size, type, speed, manufacturer, part number, health.

idrac_storage

RAID and other controllers, physical disks (predicted failure, SSD wear), virtual disks.

idrac_network_interfaces

Server network ports (MAC, link, speed) and the iDRAC's IP configuration.

idrac_firmware_inventory

Firmware versions of all components, optionally including rollback versions.

idrac_manager_info

iDRAC firmware, time, enabled services and ports (HTTPS, SSH, IPMI, SNMP, ...), NTP, open sessions.

idrac_logs

System Event Log (sel) or Lifecycle log (lclog), newest first, filter by severity or text.

idrac_list_jobs

The iDRAC job queue, or one job by id.

idrac_bios_attributes

BIOS settings by text or name, pending changes, and (with describe) allowed values and help text.

idrac_boot_settings

Boot mode, boot order, one-time boot override and its allowed targets.

idrac_virtual_media

Virtual CD/removable disk state and whether attaching images is supported.

idrac_export_config

Server Configuration Profile export (XML), optionally saved to a file. Includes iDRAC settings that have no other Redfish view, such as the thermal profile.

idrac_get

GET any resource under /redfish/v1, with optional $expand and $select.

Operator

Tool

What it does

idrac_power_action

On, GracefulShutdown, GracefulRestart, ForceOff, ForceRestart, PowerCycle, PushPowerButton, Nmi; optionally waits for the new power state. Firmware without GracefulShutdown gets an ACPI power-button press instead.

idrac_set_identify_led

Identify LED on, blinking or off.

idrac_set_boot_override

One-time (or continuous) boot from PXE, virtual CD, BIOS setup, ...; None clears it.

idrac_virtual_media_insert

Attach an ISO or image from an HTTP(S), NFS or CIFS URL, where the firmware supports it.

idrac_virtual_media_eject

Detach virtual media.

idrac_reset_idrac

Restart the iDRAC (the server keeps running).

idrac_delete_job

Remove a job from the queue, for example a scheduled BIOS change.

Admin

Tool

What it does

idrac_set_bios_attributes

Validate and stage BIOS changes, create the configuration job, and apply at the next reboot or reboot now.

idrac_clear_log

Clear the System Event Log.

idrac_raw_request

Any GET, POST, PATCH or DELETE under /redfish/v1.


Configuration reference

All settings are environment variables. The .mcpb extension sets them from its settings panel.

Variable

Default

Description

IDRAC_HOST

(required)

Host name or IP of the iDRAC. https:// is assumed; a port may be added (10.0.0.5:8443).

IDRAC_USERNAME

(required)

iDRAC user name.

IDRAC_PASSWORD

(required)

iDRAC password.

IDRAC_PERMISSION_MODE

read-only

read-only, operator or admin.

IDRAC_ALLOW_ACTIONS

false

true selects operator mode (used by the extension).

IDRAC_ALLOW_CONFIG

false

true selects admin mode (used by the extension).

IDRAC_VERIFY_TLS

false

Verify the iDRAC's TLS certificate.

IDRAC_TIMEOUT_SECONDS

60

Per-request timeout.

IDRAC_AUTH_MODE

session

session (X-Auth-Token) or basic (HTTP Basic on every request).

IDRAC_MAX_CONCURRENCY

4

Maximum parallel requests to the iDRAC.


Security notes

  • The server connects only to the iDRAC you configure. Nothing is sent anywhere else.

  • In Claude Desktop the password is stored by the app in your operating system's secure storage and passed to the server at start-up. The server never includes it in tool output or logs.

  • The iDRAC's self-signed certificate is accepted by default; this exception applies only to this server's own connection to the iDRAC. Install a trusted certificate and enable Verify TLS certificate to remove it.

  • A rejected login is not retried for 60 seconds, so a wrong password cannot trigger the iDRAC's IP blocking.

  • iDRAC 8 no longer receives security updates. Keep it on a management network or VLAN that is not reachable from the internet.

  • An assistant acts on what it reads. Log messages and asset tags come from the server itself; keep operator and admin modes off unless you need them.

See SECURITY.md for how to report a vulnerability.


Troubleshooting

Symptom

What to do

did not return a Redfish service root

IDRAC_HOST must be the iDRAC's address, not the server's OS. Check that Redfish is enabled (racadm set iDRAC.Redfish.Enable 1).

The iDRAC rejected the credentials

Check user name and password, and that the user is enabled. The server waits 60 seconds before trying again.

EHOSTUNREACH on macOS while ping works

macOS asks apps for permission to reach devices on the local network. Allow Claude under System Settings → Privacy & Security → Local Network, then try again.

Timeouts

iDRAC 8 is slow, especially just after it restarts. Raise the timeout. If the iDRAC stays unresponsive, restart it with idrac_reset_idrac or racadm racreset.

HTTP 404 for a resource

Older firmware exposes fewer Redfish resources. Update the iDRAC to 2.86.86.86 (iDRAC web interface → Maintenance → System Update).

HTTP 403

The iDRAC user's role lacks a privilege for this operation. See Create a dedicated iDRAC user.

No power readings

Servers with a cabled, non-redundant power supply (an option on the T430) have no power monitoring. Hot-plug power supplies report readings.

A power cap is shown but the server draws more

iDRAC 8 reports the configured cap value even when power capping is disabled. idrac_power labels it power_cap_setting_watts; whether capping is enabled is in iDRAC Settings → Power Configuration (or ServerPwr.1#PowerCapSetting in idrac_export_config).

Virtual media insert not supported

Older iDRAC 8 firmware exposes virtual media read-only through Redfish; 2.86 supports attaching images. Otherwise use the iDRAC web interface or racadm remoteimage.

Fan speeds cannot be changed

iDRAC 8 has no fan control through Redfish. This server only reads fan data, so it works alongside IPMI-based fan scripts.


Development

npm install
npm run build          # compile TypeScript to dist/
npm run typecheck
npm test               # smoke test + end-to-end test against a mock iDRAC 8
npm run test:live      # read-only test against the iDRAC in .env
npm run inspect        # open the MCP Inspector
npm run bundle         # build dell-idrac-mcp-<version>.mcpb

The mock iDRAC (scripts/mock-idrac.mjs) imitates an iDRAC 8 (firmware 2.86) on a PowerEdge T430: session login, $expand, paged logs with both orderings, actions, PATCH, an SCP export job, and the quirks of the real firmware. Run it on its own with node scripts/mock-idrac.mjs and point IDRAC_HOST at http://127.0.0.1:8443 (user root, password calvin) to try changes without touching real hardware.

Project layout:

src/
  index.ts              MCP server: tool registration, permission checks, shutdown
  config.ts             environment variables and permission modes
  redfish/client.ts     HTTP client: sessions, TLS, concurrency, paging, errors
  redfish/resources.ts  resource discovery and output shaping
  tools/                tool definitions, grouped by area
scripts/                build, tests, mock iDRAC
manifest.json           Claude Desktop extension manifest (tool list synced on build)

Releasing

Versions follow semantic versioning: major for breaking changes, minor for new features, patch for fixes.

  1. Bump version in package.json and add a section to CHANGELOG.md.

  2. Run npm run bundle; it syncs the version and tool list into manifest.json.

  3. Commit, then tag and push: git tag -a v1.1.0 -m "v1.1.0" && git push --follow-tags.

The release workflow runs the tests, builds the .mcpb and an npm tarball, and attaches both with checksums to the GitHub release. It also publishes to npm when an NPM_TOKEN secret is configured.


Compatibility

Controller

Servers

Status

iDRAC 8, firmware 2.70 – 2.86

PowerEdge 13th generation (x30)

Supported. Tested on a PowerEdge T430 with iDRAC 8 2.86.86.86.

iDRAC 8, firmware 2.40 – 2.6x

PowerEdge 13th generation

Should work; some resources (storage, logs, export) may be missing.

iDRAC 9

PowerEdge 14th generation and later

Untested. Uses the same standard Redfish paths, so most read tools are expected to work.

iDRAC 7

PowerEdge 12th generation

Not supported (very limited Redfish).

Reports from other models and firmware versions are welcome. Please open an issue with the output of idrac_status.


License

MIT © mbgroen

Dell, PowerEdge and iDRAC are trademarks of Dell Inc. or its subsidiaries.

Available Tools

18 tools
idrac_bios_attributesBIOS settingsA
Read-onlyIdempotent

Read the current BIOS settings (attribute names and values), filtered by text or exact names, plus any changes pending for the next reboot. With describe=true the allowed values and help text are included (slow the first time).

NameRequiredDescriptionDefault
namesNoExact attribute names to return, e.g. ['ProcVirtualization', 'BootMode'].
searchNoOnly attributes whose name or value contains this text, e.g. 'boot' or 'virtualization'.
describeNoInclude display names, allowed values and help text from the BIOS registry.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and closed-world, so the bar is lower. The description still adds real value beyond them: it discloses that pending changes for the next reboot are included in the response, and warns that describe=true is 'slow the first time' — a performance trait not present in any structured field.

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, zero filler. The core read behavior leads, and the conditional describe behavior with its performance caveat follows in a parenthetical that stays out of the way.

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?

With no output schema and no annotations about return size, the description carries the return-value burden and does say what the payload contains. It doesn't say whether omitting all filters returns every BIOS attribute, which matters for a potentially large read.

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 goes beyond by framing the filters as two modes (free text vs exact names) and by tying describe=true to its cost and to what it adds (allowed values and help text). It stops short of showing how the filters combine.

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

Purpose4/5

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

States a specific verb ('Read') and resource ('current BIOS settings'), and enumerates what comes back: attribute names/values plus pending-for-next-reboot changes. The resource is naturally distinct from siblings like idrac_boot_settings, though no sibling is named explicitly.

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 when the two filter modes apply ('filtered by text or exact names') and when to set describe=true, but it never says when to use this tool over idrac_boot_settings or idrac_get, nor any exclusions. Usage is inferable rather than stated.

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

idrac_boot_settingsBoot settingsA
Read-onlyIdempotent

Show the boot mode (UEFI or BIOS), the boot order, and any one-time boot override with the targets that can be used for it (PXE, virtual CD, BIOS setup, ...).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by enumerating what is returned (boot mode, boot order, override targets such as PXE, virtual CD, BIOS setup), which is not in any structured field.

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

Conciseness4/5

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

A single front-loaded sentence that puts the primary content (boot mode, boot order) ahead of the secondary detail (override targets). Slightly list-dense with the parenthetical examples, but nothing is wasted.

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?

With no input parameters and no output schema, the description must carry the return-value burden, and it does so by naming the three pieces of information returned. Adequate for the tool's simplicity, with only the sibling differentiation left unaddressed.

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 takes zero parameters, so the baseline is 4. The description correctly implies a no-argument inspection call and does not invent parameter semantics that don't exist.

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

Purpose4/5

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

States a specific verb 'Show' and enumerates the exact resources returned: boot mode (UEFI/BIOS), boot order, and one-time boot override with targets. Clear on its own, but does not distinguish itself from the nearby idrac_bios_attributes sibling, which an agent could plausibly confuse with boot configuration.

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?

Usage is only implied by the read-only 'Show' framing; there is no explicit when-to-use or when-to-prefer-idrac_bios_attributes guidance. An agent must infer that this is the boot-configuration inspection call rather than the general BIOS attribute call.

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

idrac_export_configExport configuration (SCP)A
Read-only

Export the Server Configuration Profile: every iDRAC, BIOS, NIC and RAID setting as XML. Useful as a backup, to compare settings, or to read iDRAC settings such as thermal profiles that have no other Redfish view. Runs as a short export job on the iDRAC (no settings change); takes 30-120 seconds.

NameRequiredDescriptionDefault
formatNoExport format. iDRAC 8 supports XML only.XML
targetNoWhich component settings to export.ALL
max_charsNoTruncate the returned text at this size.
save_pathNoAbsolute file path on this computer to save the full export to (the file must not exist yet).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with 'no settings change' while adding genuinely new facts: it runs as a short export job and takes 30-120 seconds, which matters for timeout planning. It does not cover failure modes (e.g. what happens if save_path exists) though that constraint lives in the schema.

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

Conciseness4/5

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

Three compact sentences, front-loaded with what gets exported, then uses, then runtime/cost. No filler, though the thermal-profile clause is slightly parenthetical and could be trimmed.

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?

There is no output schema, but the description characterizes the return payload ('every setting as XML') and the duration, which is the operationally important unknown. Minor gap: it doesn't note that the response may be truncated by max_chars or saved to disk via save_path, leaving that to the schema.

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%, and each parameter's enum and truncation semantics are already documented there. The description contributes only the implicit XML emphasis, so the 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?

States a specific verb and resource ('Export the Server Configuration Profile') and enumerates exactly what is included: 'every iDRAC, BIOS, NIC and RAID setting as XML'. This clearly separates it from sibling readers like idrac_get, idrac_bios_attributes or idrac_thermal, which cover narrow slices.

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?

Gives concrete use cases: backup, settings comparison, and reading iDRAC settings such as thermal profiles that 'have no other Redfish view'. That implicitly routes the agent here over the narrow per-component siblings, but there is no explicit when-not guidance or named alternative.

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

idrac_firmware_inventoryFirmware inventoryA
Read-onlyIdempotent

List firmware versions of the iDRAC, BIOS, Lifecycle Controller, RAID controller, NICs, disks, power supplies and other components. Previous (rollback) versions are hidden unless include_previous is true.

NameRequiredDescriptionDefault
searchNoOnly components whose name or version contains this text.
include_previousNoAlso list rollback and available versions.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish this as a safe, idempotent, closed-world read, so the description doesn't need to re-argue safety. It does add a genuinely non-obvious behavioral fact — that rollback/previous versions are suppressed by default — which an agent would otherwise have to infer from the schema default. It doesn't mention result shape or volume, but with annotations carrying the safety profile this is solid.

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, zero filler, with the coverage scope front-loaded and the non-obvious filtering caveat immediately after. Nothing to trim.

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 two-optional-parameter read tool with no output schema, the description covers what is queried and the key filtering default. It would be slightly stronger if it sketched the returned fields (component name / version) so the agent knows what it can do with the list, but nothing essential to correct invocation is missing.

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% and both parameters are documented in the schema itself, so the baseline applies. The description restates the include_previous default behavior and leaves the `search` parameter ('name or version contains this text') entirely to the schema, adding little beyond structured data.

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?

States a specific verb (List) and a well-defined resource (firmware versions) and enumerates exactly which components are covered — iDRAC, BIOS, Lifecycle Controller, RAID, NICs, disks, PSUs. This clearly separates it from siblings like idrac_bios_attributes (settings) or idrac_storage (hardware detail), which report different data even when they touch the same component.

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?

Usage is implied by the enumeration and there is no competing firmware tool among the siblings, but the description never states when to reach for this versus, say, idrac_system_overview or idrac_health. No exclusions or prerequisites are given.

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

idrac_getRead any Redfish resourceA
Read-onlyIdempotent

GET any Redfish resource on the iDRAC by path, e.g. /redfish/v1/Chassis/System.Embedded.1/Power. Use it for data the dedicated tools do not cover. Responses are returned as JSON and truncated at max_chars.

NameRequiredDescriptionDefault
pathYesRedfish path starting with /redfish/v1 (query strings allowed).
expandNoExpand collection members one level ($expand), if the iDRAC supports it.
selectNoComma-separated properties to return ($select), e.g. 'PowerState,Status'.
max_charsNoTruncate the output at this size.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds the non-obvious behavioral fact that responses are JSON and are silently truncated at max_chars, which is important because truncation can produce incomplete data. It doesn't describe how errors or unsupported $expand/$select are reported.

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

Conciseness5/5

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

Three short sentences, front-loaded with purpose, followed by the routing rule and the output contract. No filler or restatement of the title.

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?

With no output schema, the description carries the burden of describing returns and does so (JSON, truncated). For a generic read tool with rich annotations and fully documented params, what's left out (error semantics, whether truncation is signaled in the response) is minor but noticeable.

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 all four parameters (path, expand, select, max_chars) are already documented with formats and defaults. The description reinforces the path example and the truncation role of max_chars but adds no syntax or constraint information beyond the schema. 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?

States a specific verb and resource ('GET any Redfish resource on the iDRAC by path') and includes a concrete example path. The phrase 'use it for data the dedicated tools do not cover' explicitly positions it relative to the many sibling idrac_* helpers.

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?

Gives a clear selection rule: reach for this when the dedicated tools don't cover the data, which is exactly the fallback role a generic GET plays among 17 domain-specific siblings. It stops short of naming preconditions such as authentication needs or what to do when a path returns an error.

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

idrac_healthHealth checkA
Read-onlyIdempotent

Check every subsystem (CPUs, memory, fans, temperatures, power supplies, voltages, storage) and list only what is not healthy, plus the most recent warning or critical events from the System Event Log.

NameRequiredDescriptionDefault
recent_eventsNoHow many recent warning/critical SEL events to include.
include_storageNoAlso check RAID controllers, disks and volumes (slower).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavior beyond that: results are filtered to non-healthy findings only, and the response includes recent warning/critical SEL events — telling the agent how to interpret an empty result. It doesn't mention latency of the full sweep (the schema notes storage is slower).

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?

A single well-formed sentence that front-loads the covered subsystems and ends with the returned output. No filler and nothing restated from the title.

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?

With no output schema, the description carries the burden of describing return content and does so: unhealthy findings plus recent SEL events. Minor gap — it doesn't state what an all-clear response looks like (e.g., empty list) or how long a full sweep takes, though the schema hints at the storage cost.

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 (recent_events, include_storage) are fully documented in the schema itself. The description gestures at the events portion ('most recent warning or critical events') but adds no semantics beyond the schema, so 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?

States a specific verb and scope: check every subsystem (CPUs, memory, fans, temperatures, power supplies, voltages, storage) and return only unhealthy items plus recent SEL events. This clearly distinguishes it from the per-subsystem siblings (idrac_thermal, idrac_power, idrac_storage) which cover one area each.

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 unhealthy-only filter plus recent warning/critical events establishes a clear triage use case, and 'list only what is not healthy' implicitly steers an agent here rather than to full-inventory siblings. It stops short of explicitly naming alternatives like idrac_status or idrac_logs or stating when not to use it.

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

idrac_list_jobsJob queueA
Read-onlyIdempotent

List the iDRAC job queue (BIOS and RAID configuration jobs, firmware updates, exports) with state and progress, or get one job by id.

NameRequiredDescriptionDefault
limitNoMaximum number of jobs to return (newest first).
stateNoOnly jobs in this state, e.g. Scheduled, Running, Completed, Failed.
job_idNoA specific job id such as JID_123456789012.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and closed-world, so the safety profile is covered. The description adds that results carry state and progress, but says nothing about ordering, pagination behavior, or what happens when job_id is invalid/absent.

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

Conciseness4/5

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

A single front-loaded sentence covering both modes with no filler. Slightly dense — the parenthetical list could read as scope detail rather than example — but nothing is wasted.

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 a fully described 3-parameter schema and annotations covering safety, this is nearly sufficient; the added 'state and progress' note tells the agent what fields matter. Only pagination/ordering and error behavior are left unstated.

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 limit, state and job_id are already fully documented in the schema. The description only hints at the state and job_id modes without adding format or interaction details beyond the schema, so 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?

States a specific verb and resource ('List the iDRAC job queue') and enumerates the job categories it covers (BIOS/RAID config, firmware updates, exports). No sibling tool touches jobs, so the agent can place it instantly.

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 'or get one job by id' clause implies the two modes, so the agent can infer list vs. single-fetch usage. It does not say when to prefer this over alternatives (e.g. logs) or note any prerequisites, leaving usage only implied.

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

idrac_logsEvent logsA
Read-onlyIdempotent

Read recent entries, newest first, from the System Event Log ('sel': hardware events such as sensor alarms, power and memory errors) or the Lifecycle Controller log ('lclog': configuration changes, firmware updates, logins, jobs). Filter by minimum severity or text.

NameRequiredDescriptionDefault
logNoWhich log: 'sel' or 'lclog' (other log ids the iDRAC reports also work).sel
limitNoMaximum number of entries to return.
searchNoOnly entries whose message or message id contains this text.
min_severityNoOnly entries at or above this severity.any

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), and the description adds genuine behavioral context: results are ordered newest-first and scoped to recent entries. It doesn't add pagination behavior or note that filtering happens server-side, keeping it from a 5.

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?

A single front-loaded sentence with the tool's core action and read-order first, followed by the two log options and filters. The parentheticals carry real disambiguating value rather than filler.

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?

With no output schema, the description conveys enough (recent, newest-first entries from two log types, filterable) to call it correctly. It omits entry shape/fields, a minor gap for a read-only log tool.

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 all four parameters including defaults, the 1-200 limit range, and the severity enum. The description only echoes the severity/text filtering, adding little semantic detail beyond the schema — 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?

States a specific verb ('Read recent entries') plus the two concrete resources ('sel' and 'lclog') and even disambiguates what each log contains (hardware events vs configuration changes/firmware/jobs). No sibling tool offers log reading, so the distinction is immediate.

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 of what each log holds gives the agent a clear basis for choosing 'sel' vs 'lclog', and it names the filtering options. It stops short of explicitly comparing against siblings like idrac_health or idrac_status for troubleshooting, so it falls just 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.

idrac_manager_infoiDRAC details and servicesA
Read-onlyIdempotent

Details of the iDRAC itself: firmware, date and time, which network services are enabled (HTTPS, SSH, IPMI over LAN, SNMP, virtual console/media) with their ports, NTP servers and the number of open Redfish sessions.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered structurally. The description adds genuine value beyond that by disclosing the payload's contents (services with ports, NTP, session count), which is the main unknown for a no-output-schema getter. It does not mention auth or permission requirements, keeping it below a 5.

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?

A single sentence, front-loaded with the subject ('Details of the iDRAC itself') followed by a compact enumeration of return fields. No filler, no repetition of the title, and every clause carries payload information.

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?

With no output schema, the description correctly shouldered the burden of explaining return values and did so field by field. For a trivial no-arg read-only getter, that is nearly all the agent needs; only the distinction from sibling info getters remains unaddressed.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No parameter-related claims are needed or missing.

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

Purpose4/5

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

Names the specific resource (the iDRAC controller itself, not the host server) and enumerates the exact data returned: firmware, date/time, enabled network services with ports, NTP servers, and open Redfish session count. An agent can tell this is the management-controller metadata getter. It stops short of explicitly distinguishing itself from overlapping siblings like idrac_firmware_inventory or idrac_network_interfaces.

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?

Usage is only implied — 'Details of the iDRAC itself' hints that this is the place for controller-level metadata rather than host hardware data, but there is no explicit when-to-use statement, no exclusion of near-neighbors, and no prerequisites. The agent must infer selection from the sibling list alone.

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

idrac_memoryMemory modulesA
Read-onlyIdempotent

List memory modules (DIMMs) with slot, size, type, speed, manufacturer, part number and health. Empty slots are hidden unless include_empty is true.

NameRequiredDescriptionDefault
include_emptyNoAlso list empty DIMM slots.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description still adds real behavioral context beyond them: the default filtering rule that empty DIMM slots are suppressed unless include_empty is true, plus the exact result fields. It does not mention pagination or error/auth conditions, but neither is material for a single-flag read.

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, zero filler: the first establishes scope and returned fields, the second covers the one behavioral modifier. Information is front-loaded so an agent can decide after the first clause.

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 one-parameter, read-only list tool with no output schema, the description enumerates the returned fields and the default filtering behavior, which is everything needed to call it correctly and interpret the result. Nothing material is left unspecified.

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 the single parameter is documented, so the baseline is 3. The description adds value beyond the schema by explaining the observable consequence of the flag ('Empty slots are hidden unless include_empty is true'), making the default behavior explicit rather than just restating the flag name.

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

Purpose4/5

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

States a specific verb+resource ('List memory modules (DIMMs)') and enumerates exactly which attributes come back (slot, size, type, speed, manufacturer, part number, health). The resource is unambiguous relative to siblings like idrac_processors or idrac_storage, though no sibling is named explicitly, so it falls just short of a 5.

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?

Usage is only implied: it's clearly a hardware-inventory read, and the include_empty sentence tells you how to see empty slots. There is no explicit when-to-use/when-not or pointer to alternatives such as idrac_system_overview for aggregate hardware summaries, leaving the agent to infer routing.

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

idrac_network_interfacesNetwork interfacesA
Read-onlyIdempotent

List the server's network ports (MAC, link state, speed) and the iDRAC's own network settings (IP address, gateway, DNS servers, host name).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds value by enumerating the data categories returned (MAC, link state, speed, IP, gateway, DNS, host name), which matters because there is no output schema, but it says nothing about pagination, empty results, or failure modes on unreachable controllers.

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

Conciseness4/5

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

A single front-loaded sentence with two parenthetical field lists — no preamble, no repetition, nothing to trim. Slightly dense, but every clause carries information.

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?

With no output schema and no parameters, the description is the only source of return-value information, and it names the concrete fields an agent will get. It falls short of 5 only because it doesn't note the two-part shape of the response (physical ports vs. iDRAC settings object) or behavior when a domain is unreachable.

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 takes zero parameters, so the baseline is 4. The description correctly frames this as a whole-server snapshot rather than implying any filtering argument that an agent might otherwise try to supply.

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

Purpose4/5

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

The description uses a specific verb ('List') on two clearly named resources: the server's physical network ports and the iDRAC's own network configuration. It does not differentiate itself from a likely-overlapping sibling such as idrac_manager_info, which could also expose iDRAC network settings.

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?

Usage is only implied — an agent can infer 'call this when you need MAC/link/speed or IP/gateway/DNS data', but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative sibling for related manager configuration.

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

idrac_powerPower consumption and suppliesA
Read-onlyIdempotent

Current, average, minimum and peak power consumption, power cap, and the power supplies (model, capacity, input voltage, firmware, health) with redundancy. Optionally the voltage sensors.

NameRequiredDescriptionDefault
include_voltagesNoInclude voltage sensors (mostly power-good signals on iDRAC 8).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safe-read profile is covered structurally. The description contributes the data inventory (consumption stats, cap, per-supply model/capacity/voltage/firmware/health, redundancy), which is useful payload context but not behavioral. It doesn't note iDRAC-version variability, latency, or whether data is live vs. cached, which for a controller-status call would matter.

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

Conciseness4/5

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

One dense, front-loaded sentence with no filler; the parenthetical attribute list is efficient. Slightly list-heavy, but every clause maps to returned data.

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?

With no output schema, the description does the important work of enumerating the returned fields, so an agent knows what it will get back. Combined with annotations and a fully documented optional parameter, only the version-dependence of the voltage sensors is left implicit.

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% and the single parameter's own description already explains the iDRAC 8 power-good nuance. The description adds only 'Optionally the voltage sensors,' essentially restating the flag. Baseline 3 is correct when the schema fully carries parameter meaning.

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

Purpose4/5

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

The description enumerates exactly what the tool returns: current/average/minimum/peak power consumption, power cap, power supplies with their attributes, and optional voltage sensors. That is specific enough to separate it from siblings like idrac_thermal or idrac_health. It lacks an explicit verb ('get/read'), but the resource scope is unambiguous.

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?

Usage is only implied by the content: an agent can infer it should call this when it needs power draw or PSU data. There is no explicit statement of when to prefer it over idrac_thermal (temperature) or idrac_health, and no exclusion or prerequisite guidance.

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

idrac_processorsProcessorsA
Read-onlyIdempotent

List the installed CPUs with model, cores, threads, speed and health.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the shape of the returned data (model, cores, threads, speed, health); it says nothing about auth requirements, empty/absent CPU handling, or pagination, which is acceptable given the annotation coverage but not rich.

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

Conciseness5/5

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

One sentence, front-loaded with the action and resource, with the field list as trailing detail. Nothing redundant and nothing padded.

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?

There is no output schema, so the description carries the burden of describing return values — and it does so by naming the five fields an agent will receive. What remains missing is minor: no note on what an empty list means or how health values are expressed.

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 takes zero parameters, so the baseline is 4. The description correctly implies no inputs are needed by framing it as a simple list operation, and the empty schema confirms this with no ambiguity.

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?

States a specific verb and resource (list installed CPUs) and enumerates the exact fields returned, so the agent knows this is a CPU inventory read and can tell it apart from siblings like idrac_memory or idrac_storage purely from the resource noun.

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?

Usage is only implied: the verb 'list' plus the read-only annotations signal a safe inventory call, but the description never says when to pick this over a broader sibling such as idrac_system_overview or idrac_health, nor any preconditions.

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

idrac_statusConnection statusA
Read-onlyIdempotent

Check the connection to the iDRAC and report its firmware, Redfish version, the server model and service tag, and this MCP server's permission mode. Use this first when another tool fails or to confirm the setup works.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description adds the diagnostic framing and the fact that it reports the MCP server's permission mode. Minor gap: it does not say what happens on connection failure (error vs. degraded status), which is the key behavioral outcome for a connectivity check.

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, no filler; the payload of reported fields comes first and the usage trigger follows. Nothing is redundant with the schema or annotations.

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?

No output schema exists, so the description carries the burden of describing return values — and it does, listing the five reported facts. For a zero-parameter diagnostic tool this is sufficient to call 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?

Zero parameters, so the baseline is 4 and no parameter explanation is required. The description correctly focuses on return content instead.

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?

States a specific verb ('check the connection') plus resource (iDRAC) and enumerates exactly what is reported: firmware, Redfish version, server model, service tag, and MCP permission mode. That reported-field list distinguishes it from generic siblings like idrac_system_overview and idrac_manager_info, which collect system or manager data rather than validating connectivity.

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?

Gives explicit usage context: 'Use this first when another tool fails or to confirm the setup works' — a clear diagnostic/first-step trigger. It does not name specific sibling tools or state when-not to use it, but the intended role is unambiguous.

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

idrac_storageStorage controllers, disks and volumesA
Read-onlyIdempotent

List storage controllers (PERC RAID and others), their physical disks (model, size, media type, health, predicted failure, SSD wear) and virtual disks (RAID level, size, state). Can take a while on iDRAC 8.

NameRequiredDescriptionDefault
include_drivesNoInclude physical disks.
include_volumesNoInclude virtual disks / volumes.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description adds genuinely non-obvious operational context — that the call is slow on iDRAC 8 — which an agent can use for timeout planning, plus it enumerates the returned data (health, predicted failure, SSD wear).

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, no filler. The scope and returned field list are front-loaded, and the performance caveat is correctly placed last as a secondary note.

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?

With no output schema, the description carries the burden of describing return values and does so field-by-field, and annotations cover safety. Minor gap: it doesn't note that drives/volumes can be skipped via the flags (e.g., a controllers-only fast path), which would matter given the stated slowness.

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% and both parameters (include_drives, include_volumes) are documented in-schema with defaults, so the description need not repeat them. It says nothing about them, which is acceptable at this coverage level but adds no extra meaning — baseline 3.

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?

Specific verb ("List") plus precise resources (storage controllers, physical disks, virtual disks) and the exact fields returned for each. It is trivially separable from siblings like idrac_processors, idrac_memory, or idrac_network_interfaces without opening any schema.

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?

Usage is only implied by the resource type — an agent infers "call this when you need storage inventory." There is no explicit when-to-use statement, no exclusions, and no pointer to a sibling or alternative (e.g., when to prefer idrac_health for a quick health check).

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

idrac_system_overviewSystem overviewA
Read-onlyIdempotent

One-call summary of the server: model, service tag, BIOS and iDRAC firmware, power state, overall health, CPU and memory totals, current power draw and inlet temperature. A good starting point for most questions.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds real value by disclosing the returned content (a point-in-time snapshot of identity, firmware, power and thermal readings), which is essential since there is no output schema. It does not mention whether values are live vs cached or any cost/latency considerations.

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?

A single front-loaded sentence that leads with the tool's nature and then lists contents; every clause is a concrete returned field and nothing is wasted. The closing 'good starting point' line is the only slightly soft element.

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?

With no output schema, the description carries the burden of describing return values, and it does so by enumerating the fields returned. Adequate for a zero-parameter read tool; a note on value freshness or units would make it fully complete.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The schema is trivially complete at 100% coverage.

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

Purpose4/5

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

States a specific verb+resource ('One-call summary of the server') and enumerates exactly which fields are bundled: model, service tag, firmware versions, power state, health, CPU/memory totals, power draw, inlet temperature. This makes it distinguishable from per-subsystem siblings like idrac_processors or idrac_power by being the aggregate view, though no sibling is named explicitly.

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?

'A good starting point for most questions' implies when to reach for it, but is vague and names no alternatives. It never says when to prefer the narrower siblings (idrac_health, idrac_thermal, idrac_power) instead, leaving that inference to the agent.

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

idrac_thermalFans and temperaturesA
Read-onlyIdempotent

Current fan speeds (RPM) and temperature readings (inlet, exhaust, CPUs) with their warning and critical thresholds and fan redundancy. Read-only: iDRAC 8 offers no Redfish fan-speed control.

NameRequiredDescriptionDefault
include_thresholdsNoInclude temperature thresholds.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotent, but the description adds useful behavioral context: it explains that iDRAC 8 lacks Redfish fan-speed control, so the agent knows writing fan speeds is impossible. It also enumerates what is included (thresholds, redundancy) 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?

Two tight sentences, front-loaded with the primary resource and data content, followed by a concise limitation. No wasted verbiage; every sentence adds value.

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

Completeness4/5

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

For a read-only tool with no output schema, the description adequately specifies what is returned (fan RPM, temperature locations, thresholds, redundancy) and notes the read-only limitation. It could have mentioned return format or granularity, but missing output schema means the description carries enough for invocation.

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% and there is only one parameter (include_thresholds) fully documented in the schema. The description mentions thresholds conceptually but does not clarify the parameter's effect (e.g., default behavior or what happens when false), so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states it returns current fan speeds and temperature readings, including specific data points (inlet, exhaust, CPUs) and metadata (thresholds, redundancy). It does not explicitly differentiate from idrac_health, which likely also reports thermal status, but the scope is unambiguous.

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?

Usage is implied by the content description (this tool provides fan and temperature data), but there is no explicit statement of when to use it versus idrac_health or idrac_power, nor any exclusions. The read-only note adds context but not a usage directive.

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

idrac_virtual_mediaVirtual mediaA
Read-onlyIdempotent

Show the iDRAC virtual media devices (virtual CD/DVD and removable disk): whether an image is attached, which one, and whether this firmware supports attaching images through Redfish.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuine value beyond them by disclosing that the response also reports whether the firmware supports attaching images through Redfish — a capability flag an agent would not otherwise anticipate.

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?

A single sentence with zero waste, front-loaded with the resource and then enumerating the three facts returned. Nothing is padded or restated from the title.

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?

No output schema exists, yet the description enumerates the salient returned facts (attachment presence, which image, Redfish attach support), which is exactly what an agent needs before calling. For a zero-parameter read tool, nothing material is missing.

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 takes no parameters, so the baseline is 4. The description correctly implies a parameterless read with no filtering or selection arguments, and nothing in the text misleads about inputs.

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

Purpose4/5

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

Specific verb ('Show') plus a specific resource ('iDRAC virtual media devices') with a clarifying parenthetical naming the two device kinds (virtual CD/DVD and removable disk). The resource is clearly distinct from siblings like idrac_storage or idrac_boot_settings, though it does not explicitly say how it differs from them.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. Usage is only implied: an agent reads this when it needs current virtual media attachment state. Given the narrow, unambiguous resource, that implied usage is adequate but not instructive.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv1.0.0
    • First observedidrac_bios_attributes
    • First observedidrac_boot_settings
    • First observedidrac_export_config
    • First observedidrac_firmware_inventory
    • First observedidrac_get
    • First observedidrac_health
    • First observedidrac_list_jobs
    • First observedidrac_logs
    • First observedidrac_manager_info
    • First observedidrac_memory
    • First observedidrac_network_interfaces
    • First observedidrac_power
    • First observedidrac_processors
    • First observedidrac_status
    • First observedidrac_storage
    • First observedidrac_system_overview
    • First observedidrac_thermal
    • First observedidrac_virtual_media

TDQS

A3.8/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target clearly distinct iDRAC resources or subsystems, and the generic idrac_get is explicitly positioned as a fallback for uncovered data. There is some potential confusion among idrac_status, idrac_system_overview, and idrac_manager_info, plus mild overlap between health, thermal, and power reporting, but their descriptions provide enough separation.

Naming Consistency4/5

All names use the consistent idrac_ prefix and snake_case, making the set predictable and readable. The only minor inconsistency is that most tools are resource nouns while a few use action-first forms such as idrac_get, idrac_list_jobs, and idrac_export_config.

Tool Count4/5

Eighteen tools is on the heavier side for the 3-15 typical range, but the iDRAC domain is broad and each tool covers a meaningful subsystem or operation. The count is reasonable for comprehensive read-only server diagnostics, though a few reporting tools could arguably be consolidated.

Completeness3/5

The server covers monitoring comprehensively: system overview, hardware inventory, health, thermal, power, logs, jobs, BIOS reads, boot settings, virtual media state, network interfaces, and config export. However, it lacks lifecycle/control operations such as power actions, BIOS setting writes, virtual media attach, job creation/deletion, firmware updates, and iDRAC/user management, leaving notable gaps if an agent needs to change or operate the server.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers