Skip to main content
Glama

Service Add

service_add
Destructive

Add service monitoring to a LibreNMS device by supplying its hostname and a payload with the check type, such as HTTP, DNS, ping, or TCP, and any parameters.

Instructions

Add a service for a device in LibreNMS.

Input Schema

NameRequiredDescriptionDefault
payloadYesService monitoring payload: - type (required): Service check type (e.g., "http", "https", "dns", "ping", "smtp", "ssh", "tcp", "icmp") - ip (optional): Service IP address or hostname to check (defaults to the device's poller target: its overwrite IP if set, else its hostname) - desc (optional): Service description - param (optional): Check parameters/arguments (service-specific) - ignore (optional): Exclude from alerts (0/1) Example: {"type": "http", "desc": "Web Server", "param": "-p 8080 -u /health"}
hostnameYesDevice hostname or ID

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.12.0
    • changedInput schema / properties / payload / description
      Previous value: -"Service monitoring payload:\n- type (required): Service check type (e.g., \"http\", \"https\", \"dns\", \"ping\", \"smtp\", \"ssh\", \"tcp\", \"icmp\")\n- ip (optional): Service IP address (defaults to device IP)\n- desc (optional): Service description\n- param (optional): Check parameters/arguments (service-specific)\n- ignore (optional): Exclude from alerts (0/1)\n\nExample: {\"type\": \"http\", \"desc\": \"Web Server\", \"param\": \"-p 8080 -u /health\"}"New value: +"Service monitoring payload:\n- type (required): Service check type (e.g., \"http\", \"https\", \"dns\", \"ping\", \"smtp\", \"ssh\", \"tcp\", \"icmp\")\n- ip (optional): Service IP address or hostname to check (defaults to the device's poller target: its overwrite IP if set, else its hostname)\n- desc (optional): Service description\n- param (optional): Check parameters/arguments (service-specific)\n- ignore (optional): Exclude from alerts (0/1)\n\nExample: {\"type\": \"http\", \"desc\": \"Web Server\", \"param\": \"-p 8080 -u /health\"}"
  2. First observedv1.9.0

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=true, so the safety profile is partly covered, but the description adds nothing beyond that. In particular it never warns that the operation is non-idempotent (duplicate calls may create duplicate service checks) or that it mutates device monitoring state, which is the most decision-relevant behavior here.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. It is efficiently written, though its brevity is achieved by omitting information rather than by tight editing of substantive content.

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?

For a mutating, explicitly destructive, non-idempotent tool with a nested payload object, one sentence is not enough. The output schema removes the need to explain return values, but nothing covers duplicate handling, required device preconditions, or what 'destructive' means in this 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%, and the nested payload schema is unusually rich, enumerating type/ip/desc/param/ignore and supplying a concrete JSON example. The description text itself contributes no parameter meaning, so the baseline of 3 applies — the schema is doing all the work.

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 names a specific verb and resource ('Add a service') and scopes it to 'a device in LibreNMS', which is enough to distinguish it from read-oriented siblings like services_list or services_for_device. However, it never contrasts itself with service_edit or service_delete, so the agent must infer the create-vs-modify boundary from the name alone.

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?

There is no when-to-use guidance, no stated prerequisites (e.g. that the device must already exist), and no routing to alternatives such as service_edit for an already-monitored service. The purpose implies it creates a new check, but nothing in the text helps the agent choose between this and its siblings.

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

Deploy Server

Other Tools