Skip to main content
Glama
openITCOCKPIT

openITCOCKPIT MCP Server

Official

openITCOCKPIT MCP Server

An MCP server that puts an openITCOCKPIT monitoring instance in front of an LLM client: what is broken and why, what someone already handles, what changed - and, off by default, the tools that act on it.

CAUTION

Use at your own risk. This server lets a language model read and - with write tools enabled - change your monitoring configuration. A model can misunderstand a request or pick the wrong call. Review what it proposes before you approve it, and start with read-only access. The software is provided "as is", without warranty or liability of any kind; see the MIT License.

  • Requires openITCOCKPIT 5.6 or newer (compatibility).

  • 42 tools, 20 read-only and 22 that change something.

  • Write tools are off by default and are not registered until you enable them.

  • Names, never IDs. Tools take hostnames, template names and container paths; the server resolves them.

  • Scope-checked writes. References are validated against the target container before anything is sent, which openITCOCKPIT's own API does not do.

Quickstart

cp .env.example .env          # fill in the two secrets, see Configuration
docker compose up --build

Point your client at http://localhost:8000/mcp with the bearer token from your .env. Compose reads that same file for the published port, so setting OITC_PORT there moves both sides at once.

Three settings matter to start: MCP_AUTH_TOKEN (what clients present to this server), OITC_BASEURL and OITC_APIKEY (what this server presents to openITCOCKPIT). Everything else has a default - all of it.

Related MCP server: Overwatch MCP

What you can ask it

Ask

What answers it

"What is broken right now?"

get_problem_overview - causes separated from their consequences

"Why is db-01 critical?"

get_service_health, investigate_problem

"Is anyone on it already?"

the same tools: downtime and acknowledgement come with the state

"What happened during the night shift?"

get_shift_summary

"Why did I get no alert for web01?"

explain_notification

"Take web01 out until Monday"

schedule_downtime (write)

"Which templates could web-05 use?"

get_allowed_elements_for_container

Every tool by name, with its parameters and what it costs in context: docs/tools.md, generated from the code. What a result looks like and what happens when you write: docs/using-the-tools.md.

Limiting an instance

Running a monitoring instance is not one job, so a surface small enough to be easy would be too small to be useful. Instead the server keeps every tool the work needs and a toolset hands one agent its share: around ten tools, complete for that job and nothing beyond it. A tool that was never registered cannot be called at all.

OITC_TOOLSETS=health          # find things and see how they are doing
OITC_TOOLSETS=operations      # acknowledge, maintenance windows, check now
OITC_TOOLSETS=lifecycle       # take things out of the monitoring, or delete them

The shipped sets are health, operations, lifecycle, patch, reporting, catalog, onboarding, config and provisioning. Sets are defined in a file you can replace: docs/toolsets.md.

Measuring a model

oitc-mcp-eval asks operator questions against your instance and checks whether a model answers them from the tools instead of inventing. It keeps every run in SQLite, so models and changes stay comparable.

oitc-mcp-eval --model your-model --samples 3     # against the configured instance
oitc-mcp-eval --compare                          # newest run of every model
./scripts/eval-throwaway.sh --model your-model   # instance created and removed for you

docs/evals.md.

Documentation

Configuration

every setting, and which secret goes where

Connecting a client

HTTP and stdio, with working examples

Installation

Docker, from source, MCP Registry

Tools

every tool, generated from the code

Working with the tools

result shapes, container scope, read-modify-write

Toolsets

limiting an instance, writing your own set

Skills and prompts

the material served alongside the tools

Measuring a model

the eval, its cases, and reading the results

Security

what this server can reach, and what it refuses

Architecture

how the pieces fit together

Tool design

the rules a new tool follows

openITCOCKPIT API notes

the behaviour this server works around

Versioning

version numbers and compatibility

Development

checks, tests, running from a checkout

Security in one paragraph

The server holds one openITCOCKPIT credential and never sends it to a client. Clients authenticate with their own token; in delegated mode each request carries a short-lived user token instead, and the server acts as that user with their permissions. Write tools stay unregistered until you enable them. The details, including what to give the openITCOCKPIT user: docs/security.md.

License

MIT.

Available Tools

20 tools
explain_notificationExplain NotificationA
Read-onlyIdempotent

Why a host or service did or did not notify: its settings, contacts and state checked the way Naemon checks them - disabled, downtime, soft state, host down, state not subscribed, acknowledged, no contact - and the notifications sent recently. Use it for "why did I get no alert for web01" or "who gets notified for Backup on db01".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHow far back to look for sent notifications.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameNoExact service name on that host. Empty: explain the host itself.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context beyond that by enumerating what Naemon checks — disabled, downtime, soft state, host down, state not subscribed, acknowledged, no contact — and clarifying that recent sent notifications are included. It describes the tool's internal evaluation behavior without contradicting the annotations.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence delivers the core behavior and the detailed reason list, and the second provides concrete usage examples. Every clause earns its place 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 rich annotations, the 100%-covered schema, and the presence of an output schema, the description is complete: it explains the tool's diagnostic purpose, the types of conclusions it can provide, and example use cases. Nothing essential for an agent to select and invoke the tool correctly 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 description coverage is 100%, so the schema already documents all three parameters well. The description adds only indirect value by signaling that the tool can address both host-level and service-level notification questions via the example queries, but it does not add parameter-specific semantics beyond the schema.

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

Purpose5/5

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

The description opens with a precise verb phrase, 'explain why a host or service did or did not notify,' and names the exact resource and diagnostic scope: settings, contacts, state checks, and recent notifications. It further grounds the purpose with concrete example questions, making it unmistakably distinct from the sibling tools in the list.

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 user-facing scenarios: 'why did I get no alert for web01' and 'who gets notified for Backup on db01.' This clearly communicates when to invoke the tool, though it does not explicitly name alternatives or state 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.

find_downtimesFind DowntimesA
Read-onlyIdempotent

Find running and planned downtimes of hosts and services, by host, service or comment. Cancelled and expired ones are left out. Use it for "is web01 in maintenance" or "what is planned for tonight".

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoPart of the host name. Empty: any host.
kindNoWhich downtimes to look at.both
limitNoHow many downtimes to list per kind. The counts cover every match.
commentNoPart of the downtime comment, e.g. a ticket number.
serviceNoPart of the service name. Empty: any service.
running_onlyNotrue: only downtimes in effect now. false: also planned ones.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it filters out cancelled and expired downtimes, and the 'running_only' parameter semantics are clarified by the description's example phrasing. It does not detail pagination or exact return shape, but the output schema exists and the added filtering behavior is valuable.

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 with no filler. The first sentence states the core function and exclusions; the second provides concrete example queries. Every word earns its place, and the most important scoping information is 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?

For a read-only query tool with full schema coverage, an output schema, and safety annotations, the description is nearly complete. It explains what is returned (running and planned downtimes), what is excluded, and how to filter. The only minor gap is that it doesn't explicitly mention the 'limit' parameter's behavior across kinds, but the schema already documents that.

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 100%, so the schema already documents all six parameters. The description adds value by clarifying the overall filtering intent (e.g., 'by host, service or comment') and by giving a real-world example ('is web01 in maintenance') that maps to the host and running_only parameters. This goes slightly beyond the baseline 3 for full schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Find') and resource ('running and planned downtimes of hosts and services'), and explicitly scopes what is excluded ('Cancelled and expired ones are left out'). It also provides concrete example queries ('is web01 in maintenance', 'what is planned for tonight'), which clearly distinguish it from sibling tools like find_hosts or find_services.

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 clear context for when to use the tool via example use cases, and the exclusion of cancelled/expired downtimes implies when it is appropriate. It does not explicitly name alternative tools or state when not to use it, but the examples and scope are sufficient for an agent to select it correctly among siblings.

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

find_hostsFind HostsA
Read-onlyIdempotent

Find hosts by name, state, container or host group, and count them per state. For unreachable hosts it names the down hosts they sit behind. Use it for "which hosts are down" or "how many hosts does tenant X have". For how one known host is doing, use get_host_health.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPart of the host name. Empty: any name.
limitNoHow many hosts to list. The counts always cover every match.
stateNoOnly hosts in these states, e.g. ["down", "unreachable"].
containerNoOnly hosts in this container: its exact name or path, e.g. tenant-a.
hostgroupNoOnly hosts in this host group: its exact name.
in_downtimeNotrue: only hosts in a downtime. false: only hosts outside one.
acknowledgedNotrue: only acknowledged problems. false: only unacknowledged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond the annotations: it yields counts per state and, for unreachable hosts, explicitly names the down hosts they sit behind. This is useful non-obvious behavior that helps the agent interpret results. The only minor gap is that pagination/limit semantics are left to the schema, but that is already documented.

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

Conciseness5/5

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

Three sentences with no filler: the first states the core purpose and the counting/ unreachable behavior, the second gives the canonical question forms, and the third routes to the sibling. The description is front-loaded and every clause earns its place.

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

Completeness5/5

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

For a 7-parameter, all-optional filtering tool with an output schema and safety annotations, the description covers the purpose, typical use cases, and key behavioral quirk (unreachable hosts naming down hosts). Return-value details are handled by the output schema, and parameter details are fully in the input schema. No essential guidance for 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 description coverage is 100%, so every parameter is already meaningfully documented with types, defaults, and exact descriptions (e.g., 'Part of the host name. Empty: any name.'). The tool description adds little to parameter-level semantics beyond the global behavior of counts and unreachable-host handling, which is consistent with the schema. Thus the baseline 3 applies, as the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('Find') and resource ('hosts') and details the filtering dimensions (name, state, container, host group) and the counting behavior. It clearly differentiates from get_host_health by naming the sibling tool and the scenario that selects it, so an agent can distinguish the two without opening schemas.

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?

Explicitly gives the intended use cases ('which hosts are down' or 'how many hosts does tenant X have') and names the alternative for a different scenario ('For how one known host is doing, use get_host_health'). This provides clear when/ when-not guidance and a sibling pointer, leaving little to inference.

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

find_noisy_checksNoisy ChecksA
Read-onlyIdempotent

Checks that cause noise and what to do about each: flapping services, the services that notified most, and problems that have lasted without anyone acknowledging them or scheduling a downtime. Use it for "what is noisy", "why do we get so many alerts" or "what should we clean up".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoThe window for notifications.
limitNoHow many entries to list per finding.
containerNoOnly this container: its exact name or path, e.g. tenant-a.
hostgroupNoOnly hosts of this host group: its exact name.
older_than_hoursNoA problem counts as long-standing after this many hours.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds useful operational context by noting the tool provides 'what to do about each' finding, but it does not disclose any additional behavioral traits beyond that.

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 with no filler: the first defines the output categories, the second maps natural-language queries to the tool. Every phrase earns its place.

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

Completeness4/5

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

The description covers the tool's purpose and likely user intents, while the output schema and fully documented parameters fill in return and filter details. It is complete enough for an agent to select this tool, though it could add a note about optional scoping filters.

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 five parameters are already documented in the schema. The description itself does not mention any parameters, so it adds no semantic value beyond the schema baseline.

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 identifies a specific resource ('checks that cause noise') and enumerates the three concrete findings it returns: flapping services, top notifiers, and unacknowledged long-standing problems. It also distinguishes this tool from siblings by tying it to cleanup and noise-reduction intents, even without naming alternatives.

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 use cases: 'what is noisy', 'why do we get so many alerts', and 'what should we clean up'. It does not name alternative tools or state when not to use it, so it falls short of full routing guidance.

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

find_pending_updatesPending UpdatesA
Read-onlyIdempotent

Hosts with pending updates, with the package names and versions for each.

Covers every update by default; security_only narrows it to the security ones. Naming each package costs one API request, capped by max_packages_per_host; the update count itself is always exact.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 50, maximum 500.
security_onlyNoOnly updates the vendor marks as security relevant. Far shorter, and the one an operator usually means.
max_packages_per_hostNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNoHow to narrow the query when truncated.
countYesNumber of rows in `items`.
itemsYesThe rows, at most `limit` of them.
truncatedYesTrue if openITCOCKPIT held more rows than were returned.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/destructive annotations, the description discloses a non-obvious cost behavior: naming each package costs one API request, capped by max_packages_per_host, while the update count is always exact. This is valuable operational context that annotations alone do not convey.

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 tight sentences cover the tool's output, default behavior, a key parameter, and a cost caveat. The most important information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

With an output schema present, rich annotations, and a description that explains all parameters and behavioral trade-offs, nothing essential is missing for an agent to correctly select and invoke the tool.

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

Parameters4/5

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

The schema documents limit and security_only, but not max_packages_per_host; the description compensates by explaining exactly what max_packages_per_host caps and the cost implication. It also clarifies security_only's semantics beyond the schema description, adding real value.

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

Purpose5/5

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

The description clearly states that the tool returns hosts with pending updates along with package names and versions, which is specific and distinct from sibling tools like find_hosts or find_downtimes. Even though the verb is implied by the tool name, the resource and result shape are unmistakable.

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 clear context on the default behavior (all updates) and how to narrow to security-relevant updates via security_only, which helps the agent decide how to invoke it. It does not explicitly name alternatives, but the scoping and default behavior provide sufficient usage context.

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

find_servicesFind ServicesA
Read-onlyIdempotent

Find services by host, name, state, container, host group or flapping, and count them per state. Use it for "which services are critical", "what runs on host web01" or "which disk checks warn". For how one known service is doing, use get_service_health.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoPart of the host name. Empty: any host.
nameNoPart of the service name. Empty: any service.
limitNoHow many services to list. The counts always cover every match.
stateNoOnly services in these states, e.g. ["warning", "critical"].
flappingNotrue: only services whose state is flapping, counted among up to 100 matches.
containerNoOnly services in this container: its exact name or path, e.g. tenant-a.
hostgroupNoOnly services on hosts of this host group: its exact name.
in_downtimeNotrue: only services in a downtime. false: only services outside one.
acknowledgedNotrue: only acknowledged problems. false: only unacknowledged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds that the result is a filtered listing with per-state counts, which is useful behavioral context beyond the annotations. It leaves output-shape details to the output schema, which is acceptable.

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 compact sentences do all the work: the first gives scope and filter/aggregation behavior, the second gives usage examples and the alternative tool. There is no filler or repetition of schema content.

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 an all-optional, read-only, schema-rich tool, the description covers selection, typical queries, and routing to the correct sibling. Return values are handled by the output schema, so nothing essential 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?

Schema coverage is 100%, so the schema carries most parameter meaning; the baseline is 3. The description adds value by mapping natural-language use cases to filter dimensions and by stating the aggregate per-state counting behavior, which is not visible in the request 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 names a specific action and resource ('Find services') and immediately lists the filter dimensions, plus the per-state count. It distinguishes this list/search tool from the sibling get_service_health, so an agent can tell which call answers a multi-service query.

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

Usage Guidelines5/5

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

It gives explicit example queries ('which services are critical', 'what runs on host web01', 'which disk checks warn') and a direct alternative: use get_service_health when investigating one known service. This is clear when-to-use and when-not-to-use guidance.

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

forecast_metricForecast MetricA
Read-onlyIdempotent

When a measured value reaches its warning or critical threshold, from a straight line through its history. Reports the rate of change, the date and how well the line fits, per metric of the check. Use it for "when will the disk on db01 be full" or "what is filling up".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHow much history the forecast is computed from.
metricNoOnly this metric of the check, by its name. Empty: every metric it records.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameYesExact service name on that host. Required. A name that matches no service is answered with the tools that can find the right one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 non-destructive behavior. The description adds method transparency (straight-line fit), output specifics (rate of change, date, fit quality), and the no-match behavior for hostname/service (from schema). This goes beyond annotations in a useful way.

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

Conciseness3/5

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

The description is short and includes a helpful example, but the first sentence is grammatically broken, reducing clarity. It's still concise, but the structure suffers from the malformed opening.

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 fully described schema, rich annotations, and presence of an output schema, the description is almost complete. It explains method, use cases, and outcomes, and doesn't need to restate return values. The only gap is the awkward phrasing, not missing crucial context.

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 parameters are fully documented in the schema. The description contributes little additional parameter meaning beyond the schema, except implying per-metric results. Baseline 3 is appropriate given high 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?

The description conveys a specific predictive purpose: forecasting when a metric crosses a threshold using a straight-line fit, and it mentions that it reports rate of change, date, and fit quality. It is clear enough, though the first sentence is grammatically incomplete and it doesn't explicitly contrast with sibling tools.

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

Usage Guidelines4/5

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

The description gives concrete use cases ("when will the disk on db01 be full" / "what is filling up"), providing clear context for when to use it. It doesn't mention alternatives or exclusions, but the examples sufficiently guide an agent.

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

get_allowed_elements_for_containerAllowed Elements for ContainerA
Read-onlyIdempotent

List the host templates, contacts, contact groups, timeperiods, host groups, etc. that are actually visible from a given container - i.e. the values a Create* tool for that object_type would accept there. openITCOCKPIT restricts every such reference to the target container's own scope (the container plus its descendants, plus a few legacy tenant-wide exceptions); values outside that scope are rejected. Call this BEFORE a create call whenever you are unsure a name is visible in the target container, instead of guessing and retrying on error. object_type must be one of: host, hosttemplate, servicetemplate, hostgroup, contactgroup, servicetemplategroup, contact. For hostgroup/contactgroup/servicetemplategroup/contact, container_name is the intended parent container (the object being created doesn't have its own container yet) - the result always includes 'legal_parent_containers' (the container types allowed to hold that object type), plus a members list (contacts/servicetemplates/timeperiods) only if container_name already resolves to a legal parent. container_name defaults to the root container if not given.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYesObject type whose allowed elements should be listed. Required.
container_nameNoTarget container path. Empty means the root container.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, open-world behavior. The description goes further by revealing scoping rules (container plus descendants plus legacy exceptions), the rejection of out-of-scope values, and the conditional presence of 'legal_parent_containers' and 'members'. These are real behavioral details not inferable from annotations or 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?

The description is long but front-loads the core purpose and packs genuinely necessary operational detail. Some repetition of object types and edge-case explanation could be tightened, but no sentence is filler.

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?

Combined with the rich annotations, full parameter coverage, and the presence of an output schema, this description fully equips an agent to decide when to call the tool and what to expect. It even preempts the common failure mode of calling create with an invisible name.

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?

Even though schema description coverage is 100%, the description adds substantial meaning: container_name defaults to root, and for group object types it represents the intended parent container rather than the object's own container. It also explains the conditional output shape based on whether container_name resolves to a legal parent. This is far beyond the schema's brief 'Target container path'.

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

Purpose5/5

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

The description uses a specific verb ('List') and names a clear resource: allowed elements visible from a given container for a given object_type. It also enumerates the concrete element types and makes the tool's distinct role obvious even among many read-only sibling tools.

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

Usage Guidelines5/5

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

The description explicitly says to call this tool BEFORE a create call whenever unsure whether a name is visible, and tells the agent not to guess and retry on error. It also clarifies which object_type values are valid and how container_name behaves for different object types, giving concrete routing guidance.

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

get_availability_reportAvailability ReportA
Read-onlyIdempotent

How available a host or service was over a period, computed from its recorded state changes. Reports the percentage with and without agreed maintenance, and how long it spent in each state. Use it for "how available was shop01 last month" or "did we keep the SLA".

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days back from now the report covers.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameNoExact service name on that host. Required. A name that matches no service is answered with the tools that can find the right one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description discloses that the report is computed from recorded state changes rather than live checks, and explains the metrics returned. Since annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, the description adds useful computation/output context beyond the safety profile.

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

Conciseness5/5

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

Three sentences with no filler: purpose, output metrics, and use cases are each given one clear sentence. The most important scoping information is 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 rich input schema, output schema, and annotations together give an agent enough to select and invoke the tool correctly. The main remaining gap is the servicename required/optional inconsistency and the lack of explicit guidance on when to prefer a sibling 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 description coverage is 100%, with each parameter documented, so the main description adds little beyond the example mapping of 'shop01 last month' to hostname/days. There is a notable inconsistency: servicename is described as 'Required' but the schema's required array only lists hostname. This ambiguity prevents a higher score.

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 opens with a specific verb and resource: how available a host or service was over a period, computed from recorded state changes. It further clarifies the report's content (percentage with/without maintenance, time in each state) and gives concrete example queries. It does not explicitly name sibling tools, but the 'over a period' framing separates it from health-style siblings.

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 'Use it for...' sentence provides two concrete scenarios: 'how available was shop01 last month' and 'did we keep the SLA'. This gives clear intended use context, though it does not state when not to use the tool or explicitly mention alternative tools.

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

get_configuration_statusConfiguration StatusA
Read-onlyIdempotent

Whether the monitoring engine runs the configuration as it stands: when it was last exported, what was changed since, what is configured but not monitored yet, and whether an export is running or even possible. Use it before and after a configuration change.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context by detailing what status information is reported, such as whether an export is running or possible, without contradicting the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded, using two sentences to convey purpose, scope, and usage timing. Every phrase contributes meaning, with no filler or repetition of 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?

For a zero-parameter, read-only status tool with a rich output schema and safety annotations, the description fully equips an agent: it explains what status facets to expect and when to call. Nothing essential 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 has zero parameters, so the schema already covers everything; baseline 4 applies. The description adds useful domain context around configuration export and monitoring states but doesn't need to document parameter 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 identifies the tool as a status check on the monitoring engine's configuration, enumerating specific aspects: last export time, pending changes, configured-but-unmonitored items, and export running/possible state. This is specific enough to distinguish it from siblings like get_service_config or get_container_tree.

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 states when to use the tool: before and after a configuration change. It doesn't name alternatives or exclusions, but the unique purpose makes this less necessary.

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

get_container_treeContainer TreeA
Read-onlyIdempotent

Get the organizational structure (containers: tenants, locations, nodes) starting at the given container, including which hosts, host groups and service groups live directly under it. Leave container_name at 'root' for the top-level structure; without access to root that is the top-most containers you can see.

ParametersJSON Schema
NameRequiredDescriptionDefault
container_nameNoroot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful behavioral details beyond those annotations: the tool starts at a given container, returns items living directly under it, and falls back to the top-most visible containers if root is inaccessible.

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

Conciseness5/5

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

The description is two sentences, begins with the verb and resource, and every clause adds useful information. It avoids repetition of schema or annotation details and stays tightly scoped.

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

Completeness5/5

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

The tool has one optional parameter, a defined default behavior, open-world annotations, and an output schema, so the description does not need to explain return values. It fully covers invocation semantics, root handling, direct-children scope, and permission-aware behavior, making it complete for an agent to call correctly.

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%, and the sole parameter has no schema description. The prose compensates by explaining what 'container_name' means ('starting at the given container') and how to use the default 'root' value, including the permission-aware fallback. This is sufficient guidance for the single parameter.

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 identifies the operation ('Get') and the resource ('organizational structure... containers: tenants, locations, nodes'), and specifies what is included: hosts, host groups, and service groups directly underneath. This distinguishes it from the sibling tools, which target monitoring stats, logs, host info, and other specific lists.

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 clear operational context by explaining the special 'root' value and the fallback behavior when root access is unavailable. It does not explicitly compare this tool to alternatives or state when not to use it, but the usage context is clear enough for an agent to invoke it correctly.

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

get_host_healthHost HealthA
Read-onlyIdempotent

How one host is doing: state and since when, what likely explains a problem (a down parent, a downtime, an acknowledgement), which hosts depend on it, its services by state, and recent state changes. Use it for "how is web01", "why is web01 down" or "what does switch01 take down with it".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHow far back to look for state changes and notifications.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail: it reports explanatory factors like down parents, downtime, and acknowledgements, and it explains the no-match behavior. This goes beyond the structured annotations without contradicting them.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core value proposition and followed by concrete example queries. Every clause adds information and there is no redundant or promotional filler.

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 single-host health tool, the description covers the key user intents, the single-host constraint, and the unknown-host behavior. An output schema exists, so the description does not need to enumerate return fields. The context signals and schema fill the remaining details.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters fully described in the schema. The description adds usage context through examples but does not add new meaning beyond the schema's definitions for hostname and hours. This meets the baseline for fully documented parameters.

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

Purpose5/5

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

The description states exactly what the tool does: it provides a single host's state, likely causes of problems, dependent hosts, services by state, and recent changes. The 'one host' scope clearly distinguishes it from broader estate-wide tools, and the example queries make its purpose immediately recognizable.

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?

Explicit use cases are given: 'how is web01', 'why is web01 down', 'what does switch01 take down with it'. It also notes there is no estate-wide form and that unknown hostnames are answered with tool suggestions. It does not explicitly name alternative sibling tools, but the single-host framing and examples provide clear context.

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

get_impactImpactA
Read-onlyIdempotent

What a host or service carries, before you disable, delete or take it out of the monitoring: its services, the hosts that depend on it, and the groups, maps and reports that name it. Use it to say what a change would affect.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameNoExact service name on that host. Empty: the host itself.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context: that a non-matching hostname yields pointers to discovery tools, which is a behavioral nuance not captured in annotations. 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?

The description is a single, dense sentence that front-loads the core purpose and usage context. Every clause serves a purpose—no filler, no redundancy. It efficiently conveys both what and when.

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 (2 params, output schema present, safe annotations), the description covers the essential points: what it returns, when to use it, and behavior on unknown host. Minor gaps like pagination or result format are covered by the output schema. No critical information 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%, so both parameters are documented in the schema. The description adds interpretative context about the tool's output (services, hosts, groups, maps, reports) but doesn't enhance parameter-level meaning beyond what the schema already provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description identifies a specific purpose: retrieving what a host or service carries (its services, dependent hosts, groups, maps, reports) and explicitly frames it as impact analysis for changes. This clearly distinguishes it from the many sibling tools that focus on diagnostics, metrics, or configuration.

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

Usage Guidelines4/5

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

The description states when to use it ('before you disable, delete or take it out of the monitoring') and signals that for unknown hostnames it returns tools to find the correct one. It doesn't name specific alternatives, but provides enough context to guide the agent on appropriate invocation.

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

get_problem_overviewProblem OverviewA
Read-onlyIdempotent

What is broken and what is only a consequence: down hosts and the unreachable hosts and services behind them, the remaining unhandled service problems grouped by service, and what is already in a downtime or acknowledged. Use it first for "what is broken" or "give me an overview".

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsNoHow many problem groups to list.
containerNoOnly this container: its exact name or path, e.g. tenant-a.
hostgroupNoOnly hosts of this host group: its exact name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds behavioral value by explaining that the tool distinguishes root causes from consequences and includes already-acknowledged/downtime items in its overview, which is not visible in annotations or schema.

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 carry the full meaning: the first packs the tool's output categories, the second gives the intended use case. No filler or repetition of schema details; the most important guidance is 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?

For a read-only overview tool with an output schema and fully documented optional parameters, the description covers what it does and when to use it. It does not explain how the parameters shape grouping or filtering, but the schema and output schema fill the remaining operational gaps.

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 describes all three parameters (groups, container, hostgroup) with 100% coverage. The description adds no parameter-specific semantics, but with full schema coverage, the baseline 3 is appropriate.

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

Purpose5/5

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

The description names the tool's function with a specific verb phrase ('What is broken') and enumerates the exact categories it returns: down hosts, unreachable hosts/services, unhandled service problems, and acknowledged/downtime items. This clearly distinguishes it from more targeted siblings like get_host_health or investigate_problem.

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 gives a usage directive: 'Use it first for "what is broken" or "give me an overview".' This establishes when to call it, though it does not name specific alternatives or state when not to use it beyond the 'first' framing.

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

get_service_configService ConfigurationA
Read-onlyIdempotent

How a service is configured and where each value comes from: what it sets itself and what it follows its servicetemplate for. Field names are the ones update_service takes, so a value can be changed by the name it is reported under. It reports the configuration, never the current state or check results.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameYesExact service name on that host. Required. A name that matches no service is answered with the tools that can find the right one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context: it reports configuration rather than live state, explains value origins (self-set vs. service template), and clarifies the response is never current state or check results. No contradiction found.

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 three focused sentences with no filler and the core purpose is front-loaded. Minor awkward phrasing such as 'follows its servicetemplate for' slightly reduces clarity, but overall the structure is efficient.

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 a rich annotation set, a full parameter schema, and an output schema, the description is nearly complete: it covers scope, provenance, and explicit exclusions. It could be slightly more complete by naming a sibling fallback for state/health questions, but this is a minor gap.

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 fully describes both required parameters with 100% coverage, so the description does not need to compensate. It adds indirect context that reported field names match update_service parameters, but this does not significantly deepen understanding of hostname/servicename semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool reports a service's configuration and the provenance of each value (set by the service itself vs. followed from its service template). It also explicitly distinguishes this from current state or check results, which differentiates it from health/status sibling tools.

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

Usage Guidelines4/5

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

The description tells the agent this is for configuration, not state or check results, and notes that field names align with update_service for potential changes. It gives clear exclusions but does not explicitly name an alternative sibling tool or provide an explicit when-to-use statement.

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

get_service_healthService HealthA
Read-onlyIdempotent

How one service is doing: state and since when, what likely explains a problem (its host down, a downtime, an acknowledgement), and recent state changes. Use it for "why is Backup on db01 critical".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHow far back to look for state changes and notifications.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameYesExact service name on that host. Required. A name that matches no service is answered with the tools that can find the right one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds meaningful context about what the tool returns: state, duration, likely explanations, and state changes, which goes beyond the structured 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 carry the entire message: the first defines what the tool reveals, the second gives a concrete invocation scenario. No filler or redundant restatement of the name or schema.

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

Completeness5/5

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

The description, rich parameter schema, and strong annotations together cover the tool's inputs, behavior, and a realistic use case. The output schema exists, and the no-match behavior is documented in the parameter descriptions, so nothing essential is missing for an agent to call this tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, with hostname, servicename, and hours all documented in the input schema. The description does not need to repeat parameter details and only lightly reinforces the time range via "recent state changes," so a baseline 3 is appropriate.

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

Purpose5/5

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

The description states the tool's exact scope: it reports on a single service's state, duration, likely cause, and recent changes. The use case "why is Backup on db01 critical" makes the purpose concrete and distinguishes it from estate-wide or host-level tools.

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

Usage Guidelines4/5

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

The description gives a clear usage scenario with a concrete example. It does not explicitly enumerate when to prefer sibling tools like get_host_health or explain_notification, but the single-service focus and example provide enough contextual guidance.

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

get_shift_summaryShift SummaryA
Read-onlyIdempotent

A handover of the last hours: problems that began, what someone acknowledged or put in a downtime, how many notifications went out, and what is still open from before. Use it for "what happened during the night shift" or "give me a handover".

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHow long the shift was, counted back from now.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare this read-only, idempotent, and non-destructive. The description adds useful context about what the handover covers (acknowledged items, downtimes, notifications, open issues) but does not disclose any additional behavioral traits or caveats beyond that.

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

Conciseness5/5

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

The description is two sentences, front-loads the core purpose with a concrete metaphor ('handover'), and ends with practical usage prompts. 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.

Completeness5/5

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

For a simple, optional-parameter read-only tool with an output schema and full parameter schema coverage, the description covers everything an agent needs to select and invoke it correctly. No prerequisites or additional context seem 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?

The schema provides 100% coverage for the single 'hours' parameter, including its range and meaning. The description only implies a time window ('last hours') and does not add any syntax or formatting details beyond what the schema already provides, so the baseline score of 3 applies.

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 identifies the tool as a shift handover/report aggregating recent problems, acknowledgements, downtimes, notifications, and open items. It is specific enough to stand apart from sibling tools like find_downtimes or explain_notification, though it does not explicitly name any sibling it is not.

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 gives explicit use cases: 'what happened during the night shift' and 'give me a handover.' This tells an agent when to invoke it, but it does not mention when not to use it or point to alternatives.

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

investigate_problemInvestigate ProblemA
Read-onlyIdempotent

What happened around a problem: when it began, whether it happened before and how long it lasted then, which other hosts and services failed in the same minutes, and which configuration changes and exports came before. Works on the current problem, or on the last one when the object is fine again. Use it for "why did web01 go down" or "has Backup on db01 failed before".

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow far back to look for earlier problems.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
servicenameNoExact service name on that host. Empty: investigate the host itself.
around_minutesNoWhat counts as the same time as the start of the problem.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, and the description adds meaningful behavioral context on top: it reports the problem's start time, prior duration, co-failing hosts/services, and preceding configuration changes. It also discloses a fallback behavior for a hostname that matches no host, saying the answer includes tools that can find the right one. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose and followed by concrete invocation examples. Every sentence earns its place: the first defines the tool's scope, the second clarifies the problem-selection behavior, and the third gives reusable use cases. There is no filler or repetition of schema fields.

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 100% input-schema coverage, an output schema, and strong annotations, the description is sufficient for invocation: it explains what the tool looks at, how it chooses the relevant problem, and when to reach for it. A fully complete definition might explicitly mention response shape or more precise failure-query scenarios, but the output schema covers the return contract.

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

Parameters3/5

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

The input schema has 100% parameter coverage, so the schema already documents 'hostname', 'servicename', 'days', and 'around_minutes' clearly. The description's main added value is the hostname note about no estate-wide form, which is also partially restated in the schema. This matches the baseline for a fully schema-covered tool.

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 explains what the tool does: it reconstructs what happened around a problem, including first occurrence, prior occurrences, other failing hosts/services, and relevant configuration changes. It does not use a single explicit verb+resource construction inventor but the concrete list of behaviors and two example questions make the purpose specific. It is distinguishable from the sibling list by its problem-history focus, though it does not name a sibling alternative.

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 example questions for when to use the tool: 'why did web01 go down' or 'has Backup on db01 failed before'. It also states that it works on the current problem or the last one if the object is healthy nowainer, which is useful context. It does not give when-not-to-use conditions or name alternatives, so it stops short of a 5.

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

list_catalogConfiguration CatalogA
Read-onlyIdempotent

List templates, commands, contacts, groups or time periods by name, sorted by name, to find the exact name another tool needs. The total counts every match; items lists the first. Use it for "which service templates exist for disks" or "what is the host group of tenant X called".

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich kind of configuration object to list.
nameNoPart of the name. Empty: every object of the kind.
limitNoHow many objects to list. The total always covers every match.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 non-destructive behavior. The description adds valuable behavioral details beyond that: results are sorted by name, 'total counts every match' while 'items lists the first', and the limit parameter affects only the returned items. This gives the agent a clear mental model of pagination and result semantics.

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

Conciseness5/5

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

The description is two sentences, front-loading the action and purpose. The first sentence states what it does and why; the second clarifies pagination and gives examples. No unnecessary words, and every clause earns its place.

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

Completeness5/5

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

For a simple catalog list tool with an output schema present, the description covers all key aspects: what is listed (kinds), how results are ordered, the meaning of 'total' vs 'items', and the primary use case of finding exact names for other tools. Given the low complexity and available schema, nothing essential 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?

Schema description coverage is 100%, so all parameters are already documented. The description adds meaning by explaining how the parameters interact (e.g., 'name' as partial match, 'limit' affecting items but not total) and by framing the purpose of the 'kind' parameter through the listed object types. This goes beyond the schema's simple descriptions.

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

Purpose5/5

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

The description clearly states the verb ('List'), the resource ('templates, commands, contacts, groups or time periods'), and the specific purpose ('to find the exact name another tool needs'). It also provides concrete example queries, making it easy for an agent to understand what this tool does and when it is appropriate.

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 illustrative use cases ('which service templates exist for disks' and 'what is the host group of tenant X called') that imply when to use this tool for discovery of configuration names. However, it does not explicitly mention alternatives or state when not to use it, leaving some room for ambiguity with sibling tools like find_hosts or find_services.

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

list_installed_softwareInstalled SoftwareA
Read-onlyIdempotent

Software installed on a host, from the openITCOCKPIT agent's inventory. OS is auto-detected (Linux, Windows, macOS).

A host carries hundreds to thousands of packages. Pass name_filter to search by package name, or only_updatable=True for just the outdated ones. For updates across the whole estate use find_pending_updates.

A host with no agent inventory at all raises, rather than returning zero rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 50, maximum 500.
hostnameYesExact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one.
name_filterNoSubstring to search for in the name. Empty returns everything, capped by limit.
only_updatableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNoHow to narrow the query when truncated.
countYesNumber of rows in `items`.
itemsYesThe rows, at most `limit` of them.
truncatedYesTrue if openITCOCKPIT held more rows than were returned.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, lowering the bar. The description adds valuable non-obvious behavior: a host with no agent inventory raises instead of returning zero rows, and the OS is auto-detected. This goes beyond what annotations alone convey.

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 paragraphs each serve a distinct purpose: definition, filtering guidance with alternative tool, and edge-case behavior. There is no filler and no redundant restatement of schema details.

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

Completeness5/5

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

With an output schema present and annotations covering safety and idempotence, the description covers the key non-obvious edge case, the alternative tool, and filtering guidance. An agent has enough context to select and invoke the tool correctly.

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

Parameters4/5

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

Schema covers 3 of 4 parameters, and the description adds meaning for name_filter and only_updatable, clarifying that name_filter searches by package name and only_updatable=True returns outdated packages. This compensates for the schema not documenting only_updatable.

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

Purpose5/5

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

The description states a specific resource and scope: software installed on a host from the openITCOCKPIT agent's inventory, with OS auto-detection. It also explicitly differentiates itself from find_pending_updates, which is for estate-wide updates.

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

Usage Guidelines5/5

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

It gives clear guidance on when to use this tool: per-host package inventory with optional name_filter or only_updatable filters. It explicitly names the alternative tool for estate-wide update scenarios, and the schema reinforces that this tool has no estate-wide form.

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. 41 tool updatesv0.5.0
    • Addedexplain_notification
    • Addedfind_downtimes
    • Addedfind_hosts
    • Addedfind_noisy_checks
    • Addedfind_pending_updates
    • Addedfind_services
    • Addedforecast_metric
    • Addedget_allowed_elements_for_container
    • Addedget_availability_report
    • Addedget_configuration_status
    • Addedget_host_health
    • Removedget_host_info
    • Addedget_impact
    • Removedget_monitoring_engine_stats
    • Addedget_problem_overview
    • Addedget_service_config
    • Addedget_service_health
    • Addedget_shift_summary
    • Addedinvestigate_problem
    • Addedlist_catalog
    • Removedlist_commands
    • Removedlist_contactgroups
    • Removedlist_contacts
    • Removedlist_host_acknowledgements
    • Removedlist_host_checks
    • Removedlist_host_downtimes
    • Removedlist_host_state_changes
    • Removedlist_hostgroups
    • Removedlist_hosttemplates
    • Changedlist_installed_software1 field changed
      • changedInput schema / properties / hostname / description
        Previous value: -"Exact host name. Required - there is no estate-wide form of this tool. Get a name from list_services_by_state, list_log_entries or get_container_tree first."New value: +"Exact host name. Required - there is no estate-wide form of this tool. A name that matches no host is answered with the tools that can find the right one."
    • Removedlist_log_entries
    • Removedlist_pending_security_updates
    • Removedlist_pending_updates
    • Removedlist_service_acknowledgements
    • Removedlist_service_checks
    • Removedlist_service_downtimes
    • Removedlist_service_state_changes
    • Removedlist_servicegroups
    • Removedlist_services_by_state
    • Removedlist_servicetemplategroups
    • Removedlist_servicetemplates
  2. 24 tool updatesv0.1.0
    • First observedget_container_tree
    • First observedget_host_info
    • First observedget_monitoring_engine_stats
    • First observedlist_commands
    • First observedlist_contactgroups
    • First observedlist_contacts
    • First observedlist_host_acknowledgements
    • First observedlist_host_checks
    • First observedlist_host_downtimes
    • First observedlist_host_state_changes
    • First observedlist_hostgroups
    • First observedlist_hosttemplates
    • First observedlist_installed_software
    • First observedlist_log_entries
    • First observedlist_pending_security_updates
    • First observedlist_pending_updates
    • First observedlist_service_acknowledgements
    • First observedlist_service_checks
    • First observedlist_service_downtimes
    • First observedlist_service_state_changes
    • First observedlist_servicegroups
    • First observedlist_services_by_state
    • First observedlist_servicetemplategroups
    • First observedlist_servicetemplates

TDQS

A4.2/5.0

Scored across 20 tools

Disambiguation5/5

Each tool targets a distinct aspect of monitoring—from finding hosts/services to explaining notifications, forecasting metrics, and investigating problems. There is minimal overlap; even similar tools like get_host_health and get_problem_overview serve different scopes (single object vs. global overview).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_, find_, list_, explain_, forecast_, investigate_). No mixed conventions or vague verbs; compound names like get_allowed_elements_for_container are still predictable.

Tool Count4/5

With 20 tools, the count is slightly above the typical 3-15 range, but it is justified for a comprehensive monitoring server covering search, health, configuration, reporting, and updates. The tools are well-scoped and not redundant, though a few could be merged (e.g., find_hosts and find_services are similar in style).

Completeness4/5

The tool surface covers the core monitoring lifecycle—discovering, diagnosing, and reporting—but lacks write operations (create/update/delete) for hosts or services, despite get_allowed_elements_for_container referencing create calls. This is a notable gap for full configuration management, but for read-only analysis it is sufficient.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server for Grafana. This provides access to your Grafana instance and the surrounding ecosystem.
    3,468
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for monitoring health of MCP servers, GitHub Actions, GitLab pipelines, and HTTP endpoints with health history, TLS expiry, assertions, diagnostics, and alerts.
    22
    262 npm
    2
    MIT