Skip to main content
Glama
AIops-tools

io.github.AIops-tools/ceph-aiops

Ceph AIops

Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by the Ceph project or any storage vendor. Product and trademark names belong to their owners. MIT licensed.

Governed AI-ops for Ceph — talks to a vanilla ceph-mgr Dashboard REST API (HTTPS :8443, username + password exchanged for a short-lived JWT at POST /api/auth) with a built-in governance harness: unified audit log, token/runaway budget guard, undo-token recording, and descriptive risk tiers. Works against stock ceph-mgr — cephadm, hypervisor-bundled Ceph, or MicroCeph — with no croit and no Kubernetes dependency. Self-contained: no external skill-family dependency.

What it does

The flagship analysis, plus the guarded reads and writes around it:

  • cluster_health — HEALTH_WARN/ERR root-cause analysis. Instead of echoing raw check codes (PG_DEGRADED, OSD_NEARFULL, SLOW_OPS, MON_DOWN, LARGE_OMAP_OBJECTS, …), it turns each active check into plain language: what it means, the likely cause, and the suggested next action. This is the differentiator vs the hobby Ceph MCPs that just proxy ceph -s.

  • Governed destructive ops. The operations operators actually fear — osd_purge, pool_delete, set_pool_size, rbd_image_delete — carry dry-run + double-confirm and a high risk tier; reversible tuning (osd_reweight, throttle_recovery, cluster_flag_set, pool quota/pg_num/ autoscale) records an undo descriptor capturing the prior state.

Related MCP server: OpenShift SRE Copilot

What this tool does, and does not, decide

It delivers Ceph operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the account you connect it with: give it a ceph-mgr Dashboard account with a read-only role and the writes fail at the mgr — the place that actually owns the permission.

So there is no read-only switch, no policy file, no approval gate to configure. The one thing the tool guarantees is that nothing is silent: every call, over MCP and over the CLI alike, lands an audit row in ~/.ceph-aiops/audit.db, and destructive writes still capture their before-state and record an inverse where one exists.

Each tool declares a risk_level, kept in agreement with its [READ]/[WRITE] documentation tag by a test, and carried into the audit row as a descriptive tier — so a reviewer can see at a glance that a row was a high-risk delete. It is a label, not a gate.

What works

  • CLI (ceph-aiops ...): init, overview, health detail/health status, osd tree/df/reweight/out/purge, secret set/list/rm/migrate/rotate-password, doctor, mcp. osd out and osd purge require --dry-run + double confirm.

  • MCP server (ceph-aiops mcp or ceph-aiops-mcp): the full 37 tools (17 read, 18 write, 2 undo), every one wrapped with the bundled @governed_tool harness. The CLI is a convenience subset; the MCP surface is the whole tool.

  • Encrypted credentials: the Dashboard password lives in an encrypted store ~/.ceph-aiops/secrets.enc (Fernet + scrypt) — never plaintext on disk. Unlock with a master password from CEPH_AIOPS_MASTER_PASSWORD (MCP/CI) or an interactive prompt (CLI).

  • Reversibility: reversible writes capture the prior state and record an inverse undo descriptor (e.g. osd_reweight → prior weight, set_pool_quota → prior quota, throttle_recovery → prior backfill/recovery settings).

  • Safety: destructive ops (osd_purge, osd_mark_out, pool_delete, set_pool_size, rbd_image_delete, rbd_snapshot_delete) are high risk with dry_run and CLI double confirmation.

Capability matrix (37 MCP tools)

Group

Tools

Count

R/W

Health

cluster_health (flagship RCA), cluster_status

2

read

OSD

osd_tree, osd_df, osd_perf

3

read

cluster_flag_set (low, undo), osd_reweight (med, undo), osd_mark_in (med, undo)

3

write

osd_mark_out (high, dry-run), osd_purge (high, dry-run)

2

write

PG

pg_summary, pg_dump_stuck, scrub_status

3

read

trigger_scrub (low), trigger_deep_scrub (low)

2

write

Pool

pool_ls, pool_df

2

read

set_pool_quota (med, undo), set_pool_pg_num (med, undo), set_pool_autoscale (med, undo), pool_create (med)

4

write

set_pool_size (high, dry-run), pool_delete (high, dry-run)

2

write

RBD

rbd_ls

1

read

rbd_image_create (med), rbd_snapshot_create (low)

2

write

rbd_image_delete (high, dry-run), rbd_snapshot_delete (high, dry-run)

2

write

CephFS / RGW

cephfs_status, rgw_status

2

read

Cluster-ops

mon_status, mgr_status, slow_ops, capacity_forecast

4

read

throttle_recovery (med, undo)

1

write

Undo

undo_list, undo_apply

2

undo

Totals: 37 tools — 17 read, 18 write, 2 undo.

Quick start

As a Claude Code plugin

One install gives an agent both the skill and the MCP server:

/plugin marketplace add AIops-tools/marketplace
/plugin install ceph-aiops@aiops-tools

The MCP server is fetched with uv and pinned to the package version this plugin declares, so an audit row can be traced back to the code that wrote it. Credentials are still configured with ceph-aiops init — see below.

As a CLI or standalone MCP server

uv tool install ceph-aiops          # or: pipx install ceph-aiops
ceph-aiops init                     # wizard: add a mgr target + store the Dashboard password (encrypted)
ceph-aiops doctor                   # JWT login + mgr-dashboard reachability
ceph-aiops overview                 # HEALTH status + active checks + OSD up/in
ceph-aiops health detail            # decode the active HEALTH_WARN/ERR checks (RCA)
ceph-aiops osd df                   # per-OSD utilization, most-full first, near/backfill-full flags

Run as an MCP server (stdio):

export CEPH_AIOPS_MASTER_PASSWORD=...   # unlock secrets non-interactively
ceph-aiops-mcp

Governance

Every operation — MCP and CLI — passes through the bundled @governed_tool harness. It records; it does not authorize (see above).

  • Audit — every call (params, result, status, duration, risk tier, and any operator-supplied approver/rationale) is logged to ~/.ceph-aiops/audit.db (relocatable via CEPH_AIOPS_HOME). The CLI writes the same row the MCP path does — there is no unaudited entry point.

  • Runaway guard — a safety backstop, not an authorization gate: the same call hammered in a tight loop trips a circuit breaker so a stuck agent can't burn unbounded calls/time. Disable with CEPH_RUNAWAY_MAX=0; optional hard ceilings via CEPH_MAX_TOOL_CALLS / CEPH_MAX_TOOL_SECONDS.

  • Undo recording — reversible writes record an inverse descriptor built from the fetched before-state.

  • Risk tier — a descriptive label on the audit row derived from risk_level; it gates nothing.

Supported scope & limitations

  • Deployments: vanilla ceph-mgr with the dashboard module enabled — cephadm, hypervisor-bundled Ceph, or MicroCeph. No croit, no Kubernetes dependency.

  • Ceph has no ETag / pagination on the Dashboard API, so this tool exposes none — nothing is missing, the upstream API simply doesn't offer them.

  • Validation status: behaviour is exercised against mocked Dashboard responses by the test suite; multi-node rebalance and the write ops have not been run against a live cluster. The cheapest live check is a single-node MicroCeph (snap install microceph → bootstrap → loop-file OSDs) running ceph-aiops doctor; a 3-node Vagrant cluster exercises real rebalance behaviour. See docs/VERIFICATION.md for the full live-verification checklist.

Missing a capability?

RGW multisite, per-daemon config sprawl, NFS-Ganesha exports, orchestrator (cephadm) host management — not here yet. Open an issue or send a PR — feedback and contributions are welcome.

Available Tools

21 tools
cephfs_statusA

[READ] Per-filesystem MDS ranks with the behind-on-trimming backpressure signal.

Surfaces each MDS rank's state, the client/standby counts, and the notorious "MDS behind on trimming" flag that quietly precedes metadata stalls.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

The '[READ]' prefix and description of surfacing status clearly indicate a read-only operation with no side effects. While no annotations are present, the description adequately conveys non-destructive behavior. A higher score would require explicit mention of safety or lack of mutations.

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 paragraphs with a clear header, details, and an 'Args' section. Every sentence adds value without redundancy.

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 lists what information is surfaced (rank state, client/standby counts, flag), which is helpful given no output schema. However, it does not specify the format (e.g., list, dictionary) or whether pagination applies, leaving minor ambiguity for tool invocation.

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

Parameters5/5

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

The only parameter 'target' has zero schema description coverage. The description adds value by explaining it is a Ceph target name from config and that omitting uses the default. This fully compensates for the schema's lack of 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?

Description clearly states it reads per-filesystem MDS ranks with specific status fields including the 'MDS behind on trimming' flag. This distinguishes it from sibling tools like cluster_status or mon_status which cover different subsystems.

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 context for use by highlighting the 'notorious' flag that precedes metadata stalls, implying use when investigating metadata performance. However, it does not explicitly state when to avoid this tool or name alternatives among siblings.

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

mgr_statusA

[READ] Active mgr, its standbys, and the enabled mgr modules.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read operation with no side effects, but lacks details on error handling, authentication, or potential outcomes when target is invalid. Basic transparency but could be improved.

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?

Description is concise with a clear header, explanation of what is retrieved, and parameter documentation. No unnecessary words, though slightly terse. Could benefit from a line break for readability.

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 (1 optional param, no output schema), the description adequately covers what the tool does and its single parameter. It lacks prerequisites or return format hints, but overall sufficient for a straightforward status 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 has 0% description coverage, so description adds value by explaining that 'target' is a Ceph target name from config and can be omitted for default. This provides context beyond the schema's type-only definition.

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 clearly states it is a read operation to retrieve active mgr, its standbys, and enabled modules. The verb 'READ' is explicit, and the resource 'mgr' is specified. It distinguishes from siblings like mon_status or cephfs_status.

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?

Description does not provide explicit when-to-use or when-not-to-use guidance. It implies usage for checking mgr status but no alternatives or exclusions. The context hints at usage for default or specified target, but no comparison to other status tools.

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

mon_statusA

[READ] Monitor quorum: mons in/out of quorum and the monmap epoch.

Call this when health flags MON_DOWN or a clock-skew warn — it shows which monitors are actually holding quorum.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

The description marks itself as [READ] and explains what data it reveals (mons in/out of quorum, epoch). Without annotations, it carries the transparency burden and does so adequately. It does not mention permissions or additional side effects, but for a read-only tool this is sufficient.

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

Conciseness5/5

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

The description is extremely concise: a lead '[READ]' prefix, a brief purpose line, a use-case sentence, and a single parameter line. No wasted words, and the most important 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 (one optional parameter, no output schema, read-only), the description fully covers its purpose, when to use it, and the parameter. It is complete for an agent to decide and invoke 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 description explains the sole parameter 'target' as 'Ceph target name from config; omit for the default.' This adds meaning beyond the minimal schema (which lacks a description). With only one optional parameter, this is clear and sufficient.

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 monitors quorum status (mons in/out of quorum and monmap epoch). It uses a specific verb 'Monitor' and resource 'quorum', and distinguishes from siblings like mgr_status, osd_tree, etc., by focusing on monitor-specific health flags (MON_DOWN, clock-skew).

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 explicitly states when to call: 'when health flags MON_DOWN or a clock-skew warn'. It implies usage context but does not explicitly name alternative tools for comparison, missing a full when-not-to-use guide. However, the guidance is clear and actionable.

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

osd_perfB

[READ] Per-OSD commit/apply latency (slowest first) — find the slow disk.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It marks the tool as read-only with '[READ]' but does not explain what commit/apply latency entails, required permissions, or output format. The description is minimal for a tool with no annotation support.

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 extremely concise with a one-line summary and a one-line parameter explanation. Every sentence serves a purpose with no fluff, making it efficient for an AI agent to parse.

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

Completeness2/5

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

Given the simplicity of the tool (one optional parameter, no output schema), the description is still incomplete. It does not describe the output format or what values (e.g., avg, max latency) are returned. This lack of context could hinder an agent's ability to use the output 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 has 0% description coverage, but the tool description adds a brief explanation of the 'target' parameter ('Ceph target name from config; omit for the default'). This provides some value beyond the schema, but lacks detail on valid values or default behavior.

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 reads per-OSD commit/apply latency, sorted slowest first, to find the slow disk. It uses a specific verb and resource, and is distinct from siblings like osd_df or osd_tree.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description does not mention when not to use it or suggest other tools for similar tasks, which is a gap given the large number of sibling tools.

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

osd_purgeA

[WRITE][risk=high] Purge an OSD (destroy + crush rm + auth del). Irreversible.

Pass dry_run=True to preview. Requires an approver (CEPH_AUDIT_APPROVED_BY). Drain first (osd_reweight 0 → mark out → wait active+clean) before purging.

Args: osd_id: Numeric OSD id (from osd_tree). dry_run: If True, preview without purging. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
osd_idYes
targetNo
dry_runNo

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It explicitly states it is a WRITE operation with high risk, irreversible, and details the actions (destroy, crush rm, auth del). Also mentions need for approver. No contradiction.

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?

Description is concise and well-structured: summary, usage guidelines, parameter explanations. No superfluous text.

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?

Covers prerequisites, risk, preview, approval, and parameters. However, no mention of return values or preview output format. Given high risk, it is very complete but slightly missing output details.

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

Parameters5/5

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

Schema description coverage is 0%, but the description adds an 'Args' section explaining all three parameters: osd_id (from osd_tree), dry_run (preview), target (omit for default). This provides crucial context beyond the schema types.

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 'Purge an OSD (destroy + crush rm + auth del). Irreversible.' This specifies the verb and resource, and distinguishes it from other OSD tools like osd_mark_in/out or osd_reweight. No tautology.

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?

Explicit guidance: 'Pass dry_run=True to preview. Requires an approver... Drain first... before purging.' It mentions prerequisites and alternatives (drain using other tools), and implies when not to use (if not drained or without approver).

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

osd_treeA

[READ] All OSDs: up/in state, weight, host, device class.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It declares a read operation ('[READ]') and lists output fields, but fails to mention any behavioral traits like permissions, idempotency, or potential side effects. Adequate but not detailed.

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?

Extremely concise: two lines plus an args section. Front-loaded with '[READ]' and main purpose. Every sentence earns its place with no redundancy.

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

Completeness3/5

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

Despite no output schema, the description lists key output fields, providing partial completeness. However, it does not mention the tree structure or differentiate from other OSD tools like osd_df, leaving some gaps for a tool with many siblings.

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 description coverage is 0%, so the description compensates by explaining the 'target' parameter: 'Ceph target name from config; omit for the default.' This adds meaningful context beyond the schema's type-only definition.

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 reads all OSDs and lists specific fields (up/in state, weight, host, device class). The verb '[READ]' and resource are specific, and it implicitly distinguishes from mutation tools like osd_mark_in or osd_reweight.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives like osd_df or osd_perf, nor any exclusions or prerequisites. The description only implies a read operation but provides no context for selection.

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

pg_dump_stuckA

[READ] Stuck PGs (inactive/unclean/stale/undersized/degraded) with implicated OSDs.

Use this when a PG is not recovering — it surfaces the OSD ids to investigate.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.4/5.0
Behavior4/5

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

The description marks the tool as '[READ]' indicating a read-only operation, which is important for behavioral transparency since no annotations are provided. It discloses that the tool returns stuck PGs and 'surfaces the OSD ids', giving insight into the output. No details on return format or side effects, but for a simple diagnostic tool this is sufficient.

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

Conciseness5/5

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

The description is extremely concise with no wasted words. It front-loads the tool's purpose in a single line followed by usage guidance and parameter explanation. Every sentence contributes value, and the structure is logically organized.

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 (one optional parameter, no output schema), the description provides sufficient context: purpose, when to use, parameter meaning, and read-only indication. It does not elaborate on the output format, but the title and description imply a list of PGs with OSD IDs, which is adequate for this diagnostic 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?

The only parameter 'target' is described as 'Ceph target name from config; omit for the default.', which adds meaning beyond the schema's type and default. This helps the agent understand what value to provide. Since schema coverage is 0%, the description fully compensates by explaining the parameter's purpose.

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 stuck PGs with implicated OSDs, using the verb 'dump' and specifying the resource 'Stuck PGs' with qualifiers (inactive/unclean/stale/undersized/degraded). It distinguishes itself from sibling tools like 'pg_summary' or 'osd_tree' by focusing on stuck PGs and implicated OSDs.

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 'Use this when a PG is not recovering — it surfaces the OSD ids to investigate.', providing clear context for when to use the tool. It does not explicitly mention when not to use it or name alternatives, but the usage guidance is clear and actionable.

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

pg_summaryA

[READ] PG state histogram + every PG that is not active+clean.

Call this to answer "are my PGs healthy?" — it counts PGs by state and lists the ones needing attention.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states '[READ]' indicating no side effects and describes the output (histogram + list). However, it does not disclose any permissions needs, performance implications for large clusters, or the exact format of the list. Basic transparency is present but lacks depth.

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?

The description is compact: a one-line title, a sentence explaining usage, and an Args section. It is front-loaded with purpose. While very concise, it could be slightly better organized by separating the Args into a proper list or using bold for emphasis, but it remains efficient and clear.

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

Completeness3/5

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

Given low complexity (1 optional parameter, no output schema), the description explains purpose and parameter adequately. However, it omits details about what 'every PG that is not active+clean' means exactly, potential error conditions, or how the histogram is returned. For a health summary tool, a bit more context about interpretation would improve completeness.

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 sole parameter 'target' has no schema description (0% coverage). The description adds meaning: 'Ceph target name from config; omit for the default.' This tells the agent where the value comes from and that it is optional, effectively compensating for the schema gap.

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 '[READ] PG state histogram + every PG that is not active+clean.' This clearly specifies a read operation and the exact resource being summarized: histogram of PG states and listing of non-healthy PGs. The rhetorical question 'are my PGs healthy?' reinforces the tool's purpose, and it is distinct from siblings like pg_dump_stuck or pool_ls.

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 'Call this to answer "are my PGs healthy?"' which is a clear usage context. It does not provide explicit when-not-to-use or alternatives, but the context and sibling list imply this is the primary summary tool for PG health, making the guidance effective.

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

pool_createA

[WRITE][risk=medium] Create a replicated pool.

Args: pool_name: Name for the new pool. pg_num: Initial placement-group count (default 32). size: Replica count (default 3). application: Pool application tag: "rbd", "cephfs", or "rgw" (default "rbd"). target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
pg_numNo
targetNo
pool_nameYes
applicationNorbd

TDQS

A4.1/5.0
Behavior3/5

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

The description includes a '[WRITE][risk=medium]' tag, which provides some behavioral context. However, it does not disclose side effects, conflict behavior, or permission requirements. Since no annotations are provided, the description partially compensates but leaves gaps.

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, with a clear structure: a header line followed by a list of arguments with explanations. No unnecessary words 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?

The description covers parameters well and the write operation is clear. It does not describe return values, but overall it provides sufficient context for a straightforward creation tool. Minor improvement could be a note on typical output.

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

Parameters5/5

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

The description explains all 5 parameters with details (defaults, application options), providing significant meaning beyond the input schema which has 0% description coverage. This fully compensates for the schema gap.

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 'Create a replicated pool', which is a specific verb and resource. It distinguishes from sibling tools like pool_delete, pool_ls, and set_pool_pg_num, as it is the only creation tool.

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?

No explicit guidance on when to use or when not to use. The purpose is clear but lacks context about prerequisites or scenarios where alternatives are preferable. Usage is implied by the create action.

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

pool_dfA

[READ] Per-pool usage: used/avail bytes, percent, objects, usable capacity.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided. Description includes '[READ]' indicating non-destructive read operation, adding basic behavioral context. No details on auth, rate limits, or side effects, which is acceptable for a simple read tool.

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: first front-loads purpose and output, second explains the parameter. No unnecessary words or repetition. Highly 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?

Given the tool's simplicity (one optional param, read-only), the description fully covers purpose and parameter. Lists return metrics (used/avail bytes, percent, objects, usable capacity) even though no output schema is provided.

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 0%, but description explains the only parameter: 'target: Ceph target name from config; omit for the default.' This adds meaning about what the parameter is and its default behavior, compensating for missing 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?

Description starts with '[READ] Per-pool usage: used/avail bytes, percent, objects, usable capacity.' Clearly states it's per-pool usage and lists specific metrics, distinguishing it from siblings like osd_df (OSD-level) and pool_ls (listing).

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?

No explicit guidance on when to use this tool vs alternatives. Only mentions 'omit for the default' for target parameter, implying usage context but not comparing to other similar tools like osd_df or pool_ls.

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

pool_lsA

[READ] All pools: size/min_size, pg_num, autoscale mode, application, quota.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior4/5

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

The description labels the tool as '[READ]' indicating it is non-destructive and lists the fields returned. However, it lacks additional behavioral context such as performance implications, authorization requirements, or rate limits.

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 extremely concise, with two short sentences that convey the purpose and parameter information without redundancy.

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 and lack of output schema, the description covers the main functionality and output fields. It does not address potential filtering or pagination, but these may not be critical for this operation.

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 only parameter 'target' is described as 'Ceph target name from config; omit for the default.' This adds meaning beyond the schema's type definition, especially since schema description coverage is 0%.

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 starts with '[READ]' and explicitly states 'All pools: size/min_size, pg_num, autoscale mode, application, quota.', clearly identifying it as a read-only listing tool. It distinguishes itself from sibling tools like pool_create, pool_delete, etc.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description mentions an optional 'target' parameter but does not elaborate on scenarios or provide comparisons to sibling tools.

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

rbd_image_createA

[WRITE][risk=medium] Create a new RBD image in a pool.

Args: pool_name: Pool the image lives in (from a pool listing). name: New image name. size_bytes: Image size in bytes. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
targetNo
pool_nameYes
size_bytesYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions [WRITE][risk=medium] but does not describe failure modes (e.g., duplicate name, pool constraints), permissions, or side effects beyond creation. This leaves significant gaps for an agent.

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 extremely concise with a tag line and structured arg list. Every sentence adds value, no redundancy. Front-loaded with risk and action type.

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

Completeness3/5

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

While the description covers purpose and parameters, it omits return values (no output schema) and behavioral context like idempotency or error handling. For a create tool, an agent may need to know what happens on success or failure.

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?

With 0% schema description coverage, the description compensates well by explaining pool_name ('from a pool listing'), name ('New image name'), size_bytes (unit), and target ('omit for the default'). This adds context beyond bare schema names.

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 'Create a new RBD image in a pool' with a specific verb (create) and resource (RBD image). It distinguishes from sibling tools like rbd_image_delete and rbd_ls, and includes a [WRITE][risk=medium] tag for context.

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 intended usage is implicit (create an image), but there is no explicit guidance on when not to use or alternatives among sibling tools. The description lacks when-to-use vs when-not-to-use language.

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

rbd_image_deleteA

[WRITE][risk=high] Delete an RBD image and ALL its data. Irreversible.

Pass dry_run=True to preview. Requires an approver (CEPH_AUDIT_APPROVED_BY).

Args: pool_name: Pool the image lives in. image_name: Image to delete (from rbd_ls). dry_run: If True, preview without deleting. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
pool_nameYes
image_nameYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations exist, so the description fully discloses behavioral traits: WRITE operation, high risk, irreversibility, and requirement for approval. This satisfies the transparency need.

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?

Highly concise and well-structured: a summary line followed by usage notes and a clear argument list. No superfluous 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?

For a deletion tool with no output schema, the description covers the key aspects: action, risk, approval, and parameters. It could mention potential errors (e.g., image in use), but overall it is sufficient.

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

Parameters5/5

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

Schema coverage is 0%, but the description explains all four parameters: pool_name, image_name (from rbd_ls), dry_run, and target (optional with default). It adds meaning beyond the schema names and types.

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 'Delete an RBD image and ALL its data. Irreversible.' It uses a specific verb and resource, and the destructive nature distinguishes it from read-only siblings like rbd_ls.

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 guidance on dry run for preview and mentions the prerequisite of an approver. However, it does not explicitly compare to other delete tools like pool_delete or rbd_snapshot_delete.

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

rbd_snapshot_deleteA

[WRITE][risk=high] Delete an RBD image snapshot. Irreversible.

Pass dry_run=True to preview. Requires an approver (CEPH_AUDIT_APPROVED_BY).

Args: pool_name: Pool the image lives in. image_name: Image the snapshot belongs to. snap_name: Snapshot to delete. dry_run: If True, preview without deleting. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
pool_nameYes
snap_nameYes
image_nameYes

TDQS

A4.4/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It explicitly labels the tool as '[WRITE][risk=high]' and states 'Irreversible.' It also reveals the approval requirement, offering comprehensive transparency about the tool's destructive nature and prerequisites.

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: a header line with risk and action, followed by essential notes on dry_run and approval, then a compact Args list. Every sentence serves a purpose 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?

Given the tool's destructive nature and five parameters, the description covers all critical aspects: operation type, risk, irreversibility, preview option, authorization requirement, and parameter explanations. No output schema is needed as the action only deletes with no meaningful return value.

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?

With 0% schema description coverage, the description compensates by listing all five parameters in the Args section and providing brief, clear explanations (e.g., 'dry_run: If True, preview without deleting'). While types are already in the schema, the descriptions add meaningful context for correct usage.

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 'Delete an RBD image snapshot. Irreversible.' The verb and resource are explicit. While it doesn't explicitly differentiate from siblings like rbd_snapshot_create or rbd_image_delete, the purpose is unmistakable and specific to snapshot deletion.

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 advises using 'dry_run=True to preview' and notes that it 'Requires an approver (CEPH_AUDIT_APPROVED_BY).' These guidelines provide crucial context for safe usage, though it does not explicitly mention when not to use it or list alternative tools.

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

rgw_statusA

[READ] RGW daemons plus a large-omap (unsharded bucket index) scan.

Flags buckets whose index is unsharded/oversized — the LARGE_OMAP signal and the top RGW performance foot-gun. Partial-safe if the bucket call fails.

Args: target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

The description mentions 'Partial-safe if the bucket call fails', which adds behavioral context. However, without annotations, it fails to specify if the tool is read-only, required permissions, or other side effects. The 'READ' tag is informal and not part of annotations.

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?

The description is succinct, with clear sections: a heading, operation description, safety note, and parameters. Each sentence adds value, though the structure could be slightly more formal.

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

Completeness3/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description provides adequate context but lacks information about output format or return values. It mentions 'Flags buckets' but does not detail what the output looks like.

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

Parameters5/5

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

The description explains the only parameter 'target' in detail: 'Ceph target name from config; omit for the default.' This adds significant meaning beyond the schema, which only specifies type and allows null.

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 performs a READ operation on RGW daemons and a large-omap scan to flag oversized unsharded bucket indexes. It distinguishes itself from sibling status tools by focusing specifically on RGW and a known performance issue.

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 checking RGW health and large omap issues, but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. No guidance on prerequisites or scenarios to avoid.

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

set_pool_autoscaleA

[WRITE][risk=medium] Set a pool's PG autoscale mode (on/off/warn). Reversible → prior.

Args: pool_name: Pool name (from pool_ls). mode: Autoscale mode: "on", "off", or "warn". target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
targetNo
pool_nameYes

TDQS

A3.9/5.0
Behavior3/5

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

The description includes [WRITE][risk=medium] indicating it's a potentially risky write operation and notes reversibility. However, it does not detail specific consequences of changing autoscale mode or required permissions, leaving some behavioral ambiguity.

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 extremely concise: one action sentence, a note on reversibility, and three bullet-pointed parameter descriptions. Every element is useful, no waste, properly front-loaded.

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 adequately covers parameters and risk, but omits any mention of the return value or success/failure response. For a simple setter, this is acceptable but could be improved by stating expected output.

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

Parameters5/5

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

With 0% schema coverage, the description compensates fully: explains pool_name source, enumerates allowed mode values ('on', 'off', 'warn'), and clarifies target's default behavior. This adds essential meaning beyond the schema's type-only 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 sets a pool's PG autoscale mode with specific values (on/off/warn), using a specific verb-resource structure. It distinguishes from sibling tools like set_pool_pg_num or set_pool_size by exactly naming the autoscale feature.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives, no prerequisites or exclusions. The description only explains what the tool does, not the context of usage relative to other pool management tools.

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

set_pool_pg_numA

[WRITE][risk=medium] Set a pool's pg_num. Reversible → prior pg_num.

Args: pool_name: Pool name (from pool_ls). pg_num: New placement-group count. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pg_numYes
targetNo
pool_nameYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions '[WRITE]' and 'Reversible → prior pg_num', but fails to disclose important traits such as required permissions, potential data migration, or asynchronous behavior. This is insufficient for a mutation tool.

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 extremely concise, with a one-line summary and a bulleted list of arguments. Every sentence serves a purpose, and there is no redundant or extraneous information.

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

Completeness2/5

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

Given that this is a write operation with no output schema, the description lacks crucial details such as the return value, potential side effects (e.g., data rebalancing), and performance implications. The mention of reversibility is helpful, but overall the description is incomplete for a mutation 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?

The input schema has 0% description coverage, but the tool description provides explanations for all three parameters. It adds context like 'Pool name (from pool_ls)' and 'Ceph target name from config; omit for the default', which aids understanding beyond the raw schema types.

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 'Set a pool's pg_num', which is a specific verb and resource. It distinguishes from sibling tools like set_pool_autoscale, set_pool_quota, and set_pool_size, which modify different pool properties.

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 does not explicitly provide when-to-use or when-not-to-use guidance. However, the tool name and description imply it is for adjusting placement group count, which differentiates it from siblings. No alternatives are mentioned, so the guidance is minimal.

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

set_pool_quotaA

[WRITE][risk=medium] Set a pool's byte/object quota. Reversible → prior quota.

Args: pool_name: Pool name (from pool_ls). max_bytes: New byte quota (0 clears it); omit to leave unchanged. max_objects: New object quota (0 clears it); omit to leave unchanged. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
max_bytesNo
pool_nameYes
max_objectsNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description bears full responsibility. It discloses the write nature ([WRITE]), risk level (medium), and importantly notes reversibility ('Reversible → prior quota'). However, it does not detail required permissions or potential side effects of modifying quotas, but the core behavioral traits are covered.

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 extremely concise, using a compact one-line tag followed by bullet-like parameter explanations. Every sentence adds value with no redundancy. The structure front-loads the key action and risk, making it easy to scan.

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 (no output schema, few parameters), the description is nearly complete. It covers the operation, parameter details, and a prerequisite hint. However, it could mention expected return values or confirmation behavior, but that is not critical for this tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully explain parameters. It does so effectively: pool_name source from pool_ls, max_bytes/max_objects behavior (0 clears, omit unchanged), and target default. This adds significant meaning beyond the raw schema, clarifying default null semantics and usage of 0.

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 'Set a pool's byte/object quota' with a specific verb and resource. It distinguishes this tool from sibling pool modification tools (e.g., set_pool_size, set_pool_autoscale) by focusing on quota management. The [WRITE][risk=medium] tag further clarifies the operation type.

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 context by stating 'Pool name (from pool_ls)' as a prerequisite, but it lacks explicit guidance on when to use this tool versus alternatives like set_pool_size or set_pool_pg_num. No when-not conditions or alternative tool comparisons are provided.

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

set_pool_sizeA

[WRITE][risk=high] Set a pool's replica size — forces mass data movement on a live pool.

Pass dry_run=True to preview. Requires an approver (set CEPH_AUDIT_APPROVED_BY) under the graduated-autonomy policy. Reversible → prior size.

Args: pool_name: Pool name (from pool_ls). size: New replica count. dry_run: If True, preview without changing the size. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYes
targetNo
dry_runNo
pool_nameYes

TDQS

A4.6/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It clearly marks the tool as [WRITE][risk=high], states that it forces mass data movement, mentions reversibility ('Reversible → prior size'), and notes the approval requirement. This provides strong behavioral transparency, though it could mention potential side effects like performance impact.

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. It starts with the core purpose, then lists critical behavioral notes, and ends with clear parameter explanations in a bullet-like format. Every sentence adds 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?

Given the complexity (4 parameters, no output schema, no annotations), the description is remarkably complete. It covers all parameters, explains the approval requirement, dry-run capability, reversibility, and the high-risk nature. An agent has sufficient information to decide when and how to use this tool.

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

Parameters5/5

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

Schema coverage is 0%, so the description must explain all parameters. It does so thoroughly: 'pool_name' is linked to 'pool_ls', 'size' is described as 'New replica count', 'dry_run' is explained with its preview behavior, and 'target' is described as a Ceph target from config. This adds significant meaning beyond the bare schema types.

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 primary action: 'Set a pool's replica size'. It also mentions the consequence ('forces mass data movement on a live pool'), which distinguishes it from siblings like 'set_pool_autoscale' or 'set_pool_quota'. The verb 'Set' and the specific resource 'pool's replica size' make the purpose 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 explains when to use the tool (to set replica size) and provides important usage context: requires an approver under the graduated-autonomy policy and supports a dry-run mode. However, it does not explicitly state when not to use this tool or suggest alternatives, which keeps it from a perfect score.

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

throttle_recoveryA

[WRITE][risk=medium] Tune osd_max_backfills / osd_recovery_max_active.

The #1 tuning ask: turn recovery/backfill down so a recovery storm stops starving client IO (or back up once it's calm). Reversible — records an undo restoring the prior config values.

Args: max_backfills: New osd_max_backfills value; omit to leave it unchanged. recovery_max_active: New osd_recovery_max_active value; omit to leave unchanged. target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
max_backfillsNo
recovery_max_activeNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It states the action is reversible (records undo) and marks risk as medium. However, it does not mention any side effects, authorization needs, or what happens if parameters are set too low/high. The reversibility is a strong point, but more could be said.

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 succinct and well-structured: a risk marker, a one-line summary, a usage context sentence, and a clear parameter list. Every sentence adds value without redundancy. It is appropriately front-loaded.

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 no output schema, the description covers the tool's purpose, when to use it, reversibility, and parameters. It lacks examples of typical values or error conditions, but for the complexity level (a tuning tool), it is fairly complete and aids an AI agent.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden. It explains each parameter: max_backfills, recovery_max_active, and target, noting that omitting leaves the setting unchanged. This adds critical meaning beyond the bare schema.

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 tunes osd_max_backfills and osd_recovery_max_active to control recovery/backfill storms. The verb 'tune' and resource are specific, though it does not explicitly differentiate from sibling tools, most of which are read-only or have different purposes. However, the context (Ceph recovery tuning) helps an AI agent understand its 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 description gives explicit context: use it when a recovery storm is starving client IO or when it's calm (back up). It also notes reversibility, but does not mention when not to use it or list alternative tools. The guidance is clear and actionable.

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

trigger_deep_scrubA

[WRITE][risk=low] Schedule a deep (data-integrity) scrub on a PG.

Args: pgid: Placement group id, e.g. "2.1a" (from pg_summary / scrub_status). target: Ceph target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pgidYes
targetNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. The '[WRITE][risk=low]' prefix provides some behavioral context (write operation, low risk). However, it does not disclose whether the scheduling is asynchronous, what side effects occur (e.g., if a scrub is already in progress), or any confirmation of success.

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 extremely concise, using a simple format with clear labeling. Every sentence adds value: the main action in the first line, then parameter definitions. No extraneous text.

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 scheduling command, the description covers the essential action and parameters. However, it lacks information on the return value or confirmation, and does not mention error conditions or prerequisites. Given the simplicity, it is mostly complete but could be slightly more thorough.

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 0%, so the description must explain parameters. It does so effectively: pgid is a placement group ID with an example ('2.1a') and source context, target is an optional Ceph target name. This adds significant value over the raw 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 schedules a deep (data-integrity) scrub on a PG. The verb 'schedule' and resource 'deep scrub on a PG' are specific, and the 'deep' qualifier distinguishes it from the sibling 'trigger_scrub' (regular scrub).

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 explains the purpose and provides context for the pgid (from pg_summary/scrub_status), guiding the agent on how to obtain the parameter. It implies use for data integrity checks but does not explicitly contrast with 'trigger_scrub' or state when not to use this tool.

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. Dates show when Glama detected each change.

  1. 14 tool updatesv0.3.0
    • Removedcapacity_forecast
    • Removedcluster_flag_set
    • Removedcluster_health
    • Removedcluster_status
    • Removedosd_df
    • Removedosd_mark_in
    • Removedosd_mark_out
    • Removedosd_reweight
    • Removedpool_delete
    • Removedrbd_ls
    • Removedrbd_snapshot_create
    • Removedscrub_status
    • Removedslow_ops
    • Removedtrigger_scrub
  2. 35 tool updatesv0.1.0
    • First observedcapacity_forecast
    • First observedcephfs_status
    • First observedcluster_flag_set
    • First observedcluster_health
    • First observedcluster_status
    • First observedmgr_status
    • First observedmon_status
    • First observedosd_df
    • First observedosd_mark_in
    • First observedosd_mark_out
    • First observedosd_perf
    • First observedosd_purge
    • First observedosd_reweight
    • First observedosd_tree
    • First observedpg_dump_stuck
    • First observedpg_summary
    • First observedpool_create
    • First observedpool_delete
    • First observedpool_df
    • First observedpool_ls
    • First observedrbd_image_create
    • First observedrbd_image_delete
    • First observedrbd_ls
    • First observedrbd_snapshot_create
    • First observedrbd_snapshot_delete
    • First observedrgw_status
    • First observedscrub_status
    • First observedset_pool_autoscale
    • First observedset_pool_pg_num
    • First observedset_pool_quota
    • First observedset_pool_size
    • First observedslow_ops
    • First observedthrottle_recovery
    • First observedtrigger_deep_scrub
    • First observedtrigger_scrub

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct Ceph resource or operation (health, OSDs, PGs, pools, RBD, scrubs, recovery). Even similar tools like osd_df vs osd_perf have clear differentiators (capacity vs latency). No ambiguity.

Naming Consistency5/5

The vast majority follow the snake_case verb_noun pattern (e.g., cluster_health, osd_mark_in, pool_create, rbd_ls). Only minor exceptions like capacity_forecast are still descriptive and fit the pattern.

Tool Count4/5

35 tools is on the higher end but appropriate for comprehensive Ceph management. Each tool serves a distinct purpose; no redundancy. The count reflects the domain's complexity without being excessive.

Completeness4/5

Covers core CRUD and lifecycle for OSDs, pools, RBD images, and health checks. Missing some advanced operations like monitor addition or CephFS volume creation, but the set is sufficient for typical AIOps scenarios.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Ceph storage clusters through natural language, making storage management more accessible and intuitive.
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    AI-powered MCP server for TrueNAS SCALE storage operations with governance and safety features, enabling management of pools, datasets, snapshots, disks, alerts, and services.
    25
    MIT

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/AIops-tools/Ceph-AIops'

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